日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
「數(shù)據(jù)庫(kù)」加強(qiáng)「回滾段」,系統(tǒng)更穩(wěn)定(加大數(shù)據(jù)庫(kù)回滾段)

隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,數(shù)據(jù)庫(kù)成為了現(xiàn)代信息化管理中最為基礎(chǔ)、最為重要的一環(huán)。在企業(yè)日常業(yè)務(wù)中,數(shù)據(jù)庫(kù)的作用是不可或缺的。然而,數(shù)據(jù)庫(kù)在運(yùn)行時(shí)常常會(huì)遇到各種問題,其中之一便是數(shù)據(jù)的回滾問題。為了更好地保障數(shù)據(jù)庫(kù)安全穩(wěn)定的運(yùn)行,數(shù)據(jù)庫(kù)的「回滾段」功能應(yīng)該得到加強(qiáng)。

什么是「回滾段」?

在數(shù)據(jù)庫(kù)中,為了保證事務(wù)是原子性的,系統(tǒng)采用了事務(wù)的「回滾」機(jī)制,這樣可以在一個(gè)事務(wù)執(zhí)行失敗后能夠保證數(shù)據(jù)不受損失?;貪L段便是事務(wù)回滾中用來存儲(chǔ)舊數(shù)據(jù)的一種數(shù)據(jù)結(jié)構(gòu)。當(dāng)事務(wù)執(zhí)行完畢時(shí),回滾段中的舊數(shù)據(jù)會(huì)被順序覆蓋掉,從而保證系統(tǒng)的安全有效運(yùn)行。

回滾段功能的問題

雖然回滾段的功能對(duì)于數(shù)據(jù)庫(kù)的安全性至關(guān)重要,但是在實(shí)際運(yùn)行中,回滾段的性能問題常常會(huì)被忽視。在很多企業(yè)中,數(shù)據(jù)庫(kù)的回滾段容量不夠,導(dǎo)致回滾出現(xiàn)異常。具體表現(xiàn)為當(dāng)回滾段不足以支持當(dāng)前的事務(wù)時(shí),當(dāng)前事務(wù)的執(zhí)行會(huì)進(jìn)入一個(gè)等待狀態(tài),直到有足夠的空間為止。如果出現(xiàn)這種情況,很容易導(dǎo)致人員和業(yè)務(wù)的管理混亂,甚至失去了數(shù)據(jù)的一致性和完整性。

加強(qiáng)回滾段功能

為了避免回滾段容量不足的情況,數(shù)據(jù)庫(kù)應(yīng)當(dāng)加強(qiáng)回滾段功能,確保其能夠順利地存儲(chǔ)舊數(shù)據(jù)。具體來說,可以考慮以下幾種措施。

1.適當(dāng)提高回滾段的容量

數(shù)據(jù)庫(kù)管理員應(yīng)該做一個(gè)合理的容量規(guī)劃,保證回滾段可以滿足系統(tǒng)實(shí)際運(yùn)行的需求。在這個(gè)過程中,應(yīng)該充分考慮到業(yè)務(wù)的確定性和系統(tǒng)擴(kuò)展需求。

2.避免回滾段的過多分割

若回滾段的容量不足,管理員或許會(huì)考慮對(duì)其進(jìn)行分割,從而實(shí)現(xiàn)更充分的利用。然而,過多的分割不僅會(huì)占用更多的存儲(chǔ)空間,還會(huì)拖慢事務(wù)執(zhí)行的速度。因此,盡量避免過度分割回滾段。

3.定期清理不必要的數(shù)據(jù)

為了避免回滾數(shù)據(jù)室過度充斥,系統(tǒng)管理員還應(yīng)該定期清理一些不必要的數(shù)據(jù),比如已經(jīng)成功提交的事務(wù),在清理之后,數(shù)據(jù)庫(kù)可以將已清理的回滾段分配給未清理過的事務(wù)使用,從而更好地支持系統(tǒng)的運(yùn)行。

結(jié)語

在當(dāng)今社會(huì),信息化的發(fā)展勢(shì)不可擋,數(shù)據(jù)庫(kù)已經(jīng)成為了現(xiàn)代企業(yè)最為基礎(chǔ)、最為重要的一環(huán)。為了保證數(shù)據(jù)庫(kù)的安全穩(wěn)定運(yùn)行,需要加強(qiáng)回滾段的功能。通過適當(dāng)提高回滾段的容量、避免過多分割和定期清理數(shù)據(jù)等措施,可以提高回滾段的性能和穩(wěn)定性,從而更好地保障企業(yè)日常運(yùn)營(yíng)的順利進(jìn)行。

相關(guān)問題拓展閱讀:

  • 創(chuàng)建一個(gè)序列,之一次從5循環(huán)到10,以后再?gòu)?開始循環(huán)。如果數(shù)據(jù)的控制文件損壞了,需要如何解決故障。
  • 影響數(shù)據(jù)庫(kù)性能的主要因素有哪些?

創(chuàng)建一個(gè)序列,之一次從5循環(huán)到10,以后再?gòu)?開始循環(huán)。如果數(shù)據(jù)的控制文件損壞了,需要如何解決故障。

1、 ORACLE 實(shí)例――包括內(nèi)存結(jié)構(gòu)與后臺(tái)進(jìn)程 2、 ORACLE 數(shù)據(jù)庫(kù)――物理操作系統(tǒng)文件的 3、 了解內(nèi)存結(jié)構(gòu)的組成 4、 了解后臺(tái)進(jìn)程的作用

1、 Oracle 實(shí)例――包括內(nèi)存結(jié)構(gòu)與后臺(tái)進(jìn)程

2、 Oracle 數(shù)據(jù)庫(kù)――物理操作系統(tǒng)文件的

3、 了解內(nèi)存結(jié)構(gòu)的組成

4、 了解后臺(tái)進(jìn)程的作用

5、 了解數(shù)據(jù)庫(kù)的物理文件

6、 解釋各種邏輯結(jié)構(gòu)

一、Oracle實(shí)例

1、Oracle 實(shí)例

System Global Area(SGA) 和 Background Process 稱為數(shù)據(jù)庫(kù)的實(shí)例。

2、Oracle 數(shù)據(jù)庫(kù)

一系列物理文件的(數(shù)據(jù)文件,控制文件,聯(lián)機(jī)日志,參數(shù)文件等)

3、系統(tǒng)全局共享區(qū)System Global Area(SGA)

System Global Area 是一塊巨大的共享內(nèi)存區(qū)域,他被看做是Oracle 數(shù)據(jù)庫(kù)的一個(gè)大緩沖池,這里的數(shù)據(jù)可以被Oracle的各個(gè)進(jìn)程共用。其大小可以通過如下語句查看:

SQL> select * from v$sga;

NAME VALUE

—-

Fixed Size 39816

Variable Size

Database Buffers 1.049E+09

Redo Buffers

更詳細(xì)的信息可以參考V$sgastat、V$buffer_pool

主要包括以下幾個(gè)部分:

a、 共享池(Shared pool)

共享池是SGA中最關(guān)鍵的內(nèi)存片段,特別是在性能和可伸縮性上。一個(gè)太小的共享池會(huì)扼殺性能,使系統(tǒng)停止,太大的共享池也會(huì)有同樣的效果,將會(huì)消耗大量的CPU來管理這個(gè)共享池。不正確的使用共享池只會(huì)帶來災(zāi)難。共享池主要又可以分為以下兩個(gè)部分:

SQL語句緩沖(Library Cache)

當(dāng)一個(gè)用戶提轎唯交一個(gè)SQL語句,Oracle會(huì)將這句SQL進(jìn)行分析(parse),這個(gè)過程類似于編譯,會(huì)耗費(fèi)相對(duì)較多的時(shí)間。在分析完這個(gè)SQL,Oracle會(huì)把他的分析結(jié)果給保存在Shared pool的Library Cache中,當(dāng)數(shù)據(jù)庫(kù)第二次執(zhí)行該SQL時(shí),Oracle自動(dòng)跳過這個(gè)分析過程,從而減少了系統(tǒng)運(yùn)行的時(shí)間。這也是為什么之一次運(yùn)行的SQL 比第二次運(yùn)行的SQL要慢一點(diǎn)的原因。

下面舉例說明parse的時(shí)間

SQL> select count(*) fromscpass ;

COUNT(*)

243

Elapsed: 00:00:00.08

這是在Share_pool 和Data buffer 都沒有數(shù)據(jù)緩沖區(qū)的情況下所用的時(shí)間

SQL> alter system flush SHARED_POOL;

System altered.

清空Share_pool,保留Data buffer

SQL> select count(*) from scpass ;

COUNT(*)

243

Elapsed: 00:00:00.02

SQL> select count(*) from scpass ;

COUNT(*)

243

Elapsed: 00:00:00.00

從兩句SQL 的時(shí)間差上可以看出該SQL 的Parse 時(shí)間約為00:00:00.02

對(duì)于保存在共享池中的SQL語句,可以從V$Sqltext、v$Sqlarea中查詢到,對(duì)于編程者來說,要盡量提高語句的重用率,減少語句的分析時(shí)間。一個(gè)設(shè)計(jì)的差的應(yīng)用程序可以毀掉整個(gè)頌此數(shù)據(jù)庫(kù)的Share pool,提高SQL語句的重用率必須先養(yǎng)成良好的變成習(xí)慣,盡量使用Bind變量。

數(shù)據(jù)字典緩沖區(qū)(Data Dictionary Cache)

顯而易見,數(shù)據(jù)字典緩沖區(qū)是Oracle特地為數(shù)據(jù)字典準(zhǔn)備的一塊緩沖池,供Oracle內(nèi)部使用,沒有什么可以閉櫻培說的。

b、塊緩沖區(qū)高速緩存(Database Buffer Cache)

這些緩沖是對(duì)應(yīng)所有數(shù)據(jù)文件中的一些被使用到的數(shù)據(jù)塊。讓他們能夠在內(nèi)存中進(jìn)行操作。在這個(gè)級(jí)別里沒有系統(tǒng)文件,,戶數(shù)據(jù)文件,臨時(shí)數(shù)據(jù)文件,回滾段文件之分。也就是任何文件的數(shù)據(jù)塊都有可能被緩沖。數(shù)據(jù)庫(kù)的任何修改都在該緩沖里完成,并由DBWR進(jìn)程將修改后的數(shù)據(jù)寫入磁盤。

這個(gè)緩沖區(qū)的塊基本上在兩個(gè)不同的列表中管理。一個(gè)是塊的“臟”表(Dirty List),需要用數(shù)據(jù)庫(kù)塊的

書寫器(DBWR)來寫入,另外一個(gè)是不臟的塊的列表(Free List),一般的情況下,是使用最近最少使用 (Least Recently Used,LRU)算法來管理。塊緩沖區(qū)高速緩存又可以細(xì)分為以下三個(gè)部分(Default pool,Keep pool,Recycle pool)。如果不是人為設(shè)置初始化參數(shù)(Init.ora),Oracle將默認(rèn)為Default pool。由于操作系統(tǒng)尋址能力的限制,不通過特殊設(shè)置,在32位的系統(tǒng)上,塊緩沖區(qū)高速緩存更大可以達(dá)到1.7G,在64位系統(tǒng)上,塊緩沖區(qū)高速緩存更大可以達(dá)到10G。

c、重做日志緩沖區(qū)(Redo log buffer)

重做日志文件的緩沖區(qū),對(duì)數(shù)據(jù)庫(kù)的任何修改都按順序被記錄在該緩沖,然后由LGWR進(jìn)程將它寫入磁盤。這些修改信息可能是DML語句,如(Insert,Update,Delete),或DDL語句,如(Create,Alter,Drop等)。 重做日志緩沖區(qū)的存在是因?yàn)閮?nèi)存到內(nèi)存的操作比較內(nèi)存到硬盤的速度快很多,所以重作日志緩沖區(qū)可以加快數(shù)據(jù)庫(kù)的操作速度,但是考慮的數(shù)據(jù)庫(kù)的一致性與可恢復(fù)性,數(shù)據(jù)在重做日志緩沖區(qū)中的滯留時(shí)間不會(huì)很長(zhǎng)。所以重作日志緩沖區(qū)一般都很小,大于3M之后的重作日志緩沖區(qū)已經(jīng)沒有太大的實(shí)際意義。

d、Java程序緩沖區(qū)(Java Pool)

Java 的程序區(qū),Oracle 8I 以后,Oracle 在內(nèi)核中加入了對(duì)Java的支持。該程序緩沖區(qū)就是為Java 程序保留的。如果不用Java程序沒有必要改變?cè)摼彌_區(qū)的默認(rèn)大小。

e、大池(Large Pool)

大池的得名不是因?yàn)榇?,而是因?yàn)樗脕矸峙浯髩K的內(nèi)存,處理比共享池更大的內(nèi)存,在8.0開始引入。

下面對(duì)象使用大池:

MTS――在SGA的Large Pool中分配UGA

語句的并行查詢(Parallel Executeion of Statements)――允許進(jìn)程間消息緩沖區(qū)的分配,用來協(xié)調(diào) 并行查詢服務(wù)器

備份(Backup)――用于RMAN磁盤I/O緩存

4、后臺(tái)進(jìn)程(Background process)

后臺(tái)進(jìn)程是Oracle的程序,用來管理數(shù)據(jù)庫(kù)的讀寫,恢復(fù)和監(jiān)視等工作。Server Process主要是通過他和user process進(jìn)行聯(lián)系和溝通,并由他和user process進(jìn)行數(shù)據(jù)的交換。在Unix機(jī)器上,Oracle后臺(tái)進(jìn)程相對(duì)于操作系統(tǒng)進(jìn)程,也就是說,一個(gè)Oracle后臺(tái)進(jìn)程將啟動(dòng)一個(gè)操作系統(tǒng)進(jìn)程;在Windows機(jī)器上, Oracle后臺(tái)進(jìn)程相對(duì)于操作系統(tǒng)線程,打開任務(wù)管理器,我們只能看到一個(gè)Oracle.EXE的進(jìn)程,但是通過另外的工具,就可以看到包含在這里進(jìn)程中的線程。

在Unix上可以通過如下方法查看后臺(tái)進(jìn)程:

ps ?ef | grep ora_

# ps -ef | grep ora_ | grep XCLUAT

OracleSep 02 2:02 ora_dbwr_SID

OracleSep 02 0:03 ora_ckpt_SID

OracleSep 02 2:42 ora_on_SID

OracleSep 02 3:25 ora_lgwr_SID

OracleSep 02 0:01 ora_pmon_SID

a、Oracle系統(tǒng)有5 個(gè)基本進(jìn)程他們是

DBWR(數(shù)據(jù)文件寫入進(jìn)程)

LGWR(日志文件寫入進(jìn)程)

ON(系統(tǒng)監(jiān)護(hù)進(jìn)程)

PMON(用戶進(jìn)程監(jiān)護(hù)進(jìn)程)

CKPT(檢查點(diǎn)進(jìn)程,同步數(shù)據(jù)文件, 日志文件,控制文件)

b、DBWR

將修改過的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)寫入對(duì)應(yīng)數(shù)據(jù)文件

維護(hù)系統(tǒng)內(nèi)的空緩沖區(qū)

這里指出幾個(gè)容易錯(cuò)誤的概念:

當(dāng)一個(gè)更新提交后,DBWR把數(shù)據(jù)寫到磁盤并返回給用戶提交完成.

DBWR會(huì)觸發(fā)CKPT 后臺(tái)進(jìn)程

DBWR不會(huì)觸發(fā)LGWR 進(jìn)程

上面的概念都是錯(cuò)誤的.

DBWR是一個(gè)很底層的工作進(jìn)程,他批量的把緩沖區(qū)的數(shù)據(jù)寫入磁盤。和任何前臺(tái)用戶的進(jìn)程幾乎沒有什么關(guān)系,也不受他們的控制。至于DBWR會(huì)不會(huì)觸發(fā)LGWR和CKPT進(jìn)程,我們將在下面幾節(jié)里討論。

DBWR工作的主要條件如下

DBWR 超時(shí)

系統(tǒng)中沒有多的空緩沖區(qū)用來存放數(shù)據(jù)

CKPT 進(jìn)程觸發(fā)DBWR 等

c、LGWR

將重做日志緩沖區(qū)的數(shù)據(jù)寫入重做日志文件,LGWR是一個(gè)必須和前臺(tái)用戶進(jìn)程通信的進(jìn)程。當(dāng)數(shù)據(jù)被修改的時(shí)候,系統(tǒng)會(huì)產(chǎn)生一個(gè)重做日志并記錄在重做日志緩沖區(qū)內(nèi)。這個(gè)重做日志可以類似的認(rèn)為是以下的一個(gè)結(jié)構(gòu):

SCN=

數(shù)據(jù)塊ID

對(duì)象ID=0801

數(shù)據(jù)行=02

修改后的數(shù)據(jù)=0011

提交的時(shí)候,LGWR必須將被修改的數(shù)據(jù)的重做日志緩沖區(qū)內(nèi)數(shù)據(jù)寫入日志數(shù)據(jù)文件,然后再通知前臺(tái)進(jìn)程提交成功,并由前臺(tái)進(jìn)程通知用戶。從這點(diǎn)可以看出LGWR承擔(dān)了維護(hù)系統(tǒng)數(shù)據(jù)完整性的任務(wù)。

LGWR 工作的主要條件如下

用戶提交

有1/3 重做日志緩沖區(qū)未被寫入磁盤

有大于1M 重做日志緩沖區(qū)未被寫入磁盤

超時(shí)

DBWR需要寫入的數(shù)據(jù)的SCN號(hào)大于LGWR 記錄的SCN號(hào),DBWR 觸發(fā)LGWR寫入

d、ON

工作主要包含

清除臨時(shí)空間

在系統(tǒng)啟動(dòng)時(shí),完成系統(tǒng)實(shí)例恢復(fù)

聚結(jié)空閑空間

從不可用的文件中恢復(fù)事務(wù)的活動(dòng)

OPS中失敗節(jié)點(diǎn)的實(shí)例恢復(fù)

清除OBJ$表

縮減回滾段

使回滾段脫機(jī)

e、PMON

主要用于清除失效的用戶進(jìn)程,釋放用戶進(jìn)程所用的資源。如PMON將回滾未提交的工作,釋放鎖,釋放分配給失敗進(jìn)程的SGA資源。

f、CKPT

同步數(shù)據(jù)文件,日志文件和控制文件,由于DBWR/LGWR的工作原理,造成了數(shù)據(jù)文件,日志文件,控制文件的不一至,這就需要CKPT進(jìn)程來同步。CKPT會(huì)更新數(shù)據(jù)文件/控制文件的頭信息。

CKPT工作的主要條件如下

在日志切換的時(shí)候

數(shù)據(jù)庫(kù)用immediate ,transaction , normal 選項(xiàng)shutdown 數(shù)據(jù)庫(kù)的時(shí)候

根據(jù)初始話文件LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT、FAST_START_IO_TARGET 的設(shè)置的數(shù)值來確定

用戶觸發(fā)

以下進(jìn)程的啟動(dòng)需要手工配置

g、ARCH

當(dāng)數(shù)據(jù)庫(kù)以歸檔方式運(yùn)行的時(shí)候,Oracle會(huì)啟動(dòng)ARCH進(jìn)程,當(dāng)重做日志文件被寫滿時(shí),日志文件進(jìn)行切換,舊的重做日志文件就被ARCH進(jìn)程復(fù)制到一個(gè)/多個(gè)特定的目錄/遠(yuǎn)程機(jī)器。這些被復(fù)制的重做日志文件被叫做歸檔日志文件。

h、RECO

負(fù)責(zé)解決分布事物中的故障。Oracle可以連接遠(yuǎn)程的多個(gè)數(shù)據(jù)庫(kù),當(dāng)由于網(wǎng)絡(luò)問題,有些事物處于懸而未決的狀態(tài)。RECO進(jìn)程試圖建立與遠(yuǎn)程服務(wù)器的通信,當(dāng)故障消除后,RECO進(jìn)程自動(dòng)解決所有懸而未決的會(huì)話。

i、服務(wù)進(jìn)程Server Process

服務(wù)進(jìn)程的分類

專用服務(wù)進(jìn)程(Dedicated Server Process)

一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)一個(gè)用戶進(jìn)程

共享服務(wù)進(jìn)程(MultiTreaded Server Process)

一個(gè)服務(wù)進(jìn)程對(duì)應(yīng)多個(gè)用戶進(jìn)程,輪流為用戶進(jìn)程服務(wù)。

PGA & UGA

PGA = Process Global Area

UGA = User Global Area

他保存了用戶的變量、權(quán)限、堆棧、排序空間等用戶信息,對(duì)于專用服務(wù)器進(jìn)程,UGA在PGA中分配。對(duì)于多線程進(jìn)程,UGA在Large pool中分配。

j、用戶進(jìn)程User Process

在客戶端,將用戶的SQL 語句傳遞給服務(wù)進(jìn)程

5、一個(gè)貫穿數(shù)據(jù)庫(kù)全局的概念—-系統(tǒng)改變號(hào)SCN(System Change Number)

系統(tǒng)改變號(hào),一個(gè)由系統(tǒng)內(nèi)部維護(hù)的序列號(hào)。當(dāng)系統(tǒng)需要更新的時(shí)候自動(dòng)增加,他是系統(tǒng)中維持?jǐn)?shù)據(jù)的一致性和順序恢復(fù)的重要標(biāo)志。

a. 查詢語句不會(huì)使SCN增加,就算是同時(shí)發(fā)生的更新,數(shù)據(jù)庫(kù)內(nèi)部對(duì)應(yīng)的SCN也是不同的。這樣一來就保證了數(shù)據(jù)恢復(fù)時(shí)候的順序。

b. 維持?jǐn)?shù)據(jù)的一致性,當(dāng)一

二、Oracle 數(shù)據(jù)庫(kù)

Oracle數(shù)據(jù)庫(kù)的組成――物理操作系統(tǒng)文件的。主要包括以下幾種。

1、控制文件(參數(shù)文件init.ora記錄了控制文件的位置)

控制文件包括如下主要信息

數(shù)據(jù)庫(kù)的名字,檢查點(diǎn)信息,數(shù)據(jù)庫(kù)創(chuàng)建的時(shí)間戳

所有的數(shù)據(jù)文件,聯(lián)機(jī)日志文件,歸檔日志文件信息

備份信息等

有了這些信息,Oracle就知道那些文件是數(shù)據(jù)文件,現(xiàn)在的重做日志文件是哪些,這些都是系統(tǒng)啟動(dòng)和運(yùn)行的基本條件,所以他是Oracle運(yùn)行的根本。如果沒有控制文件系統(tǒng)是不可能啟動(dòng)的??刂莆募欠浅V匾?,一般采用多個(gè)鏡相復(fù)制來保護(hù)控制文件,或采用RAID來保護(hù)控制文件??刂莆募膩G失,將使數(shù)據(jù)庫(kù)的恢復(fù)變的很復(fù)雜。

控制文件信息可以從V$Controlfile中查詢獲得

2、數(shù)據(jù)文件(數(shù)據(jù)文件的詳細(xì)信息記載在控制文件中)

可以通過如下方式查看數(shù)據(jù)文件

SQL> select name from v$datafile;

NAME

—–

/u05/dbf/PROD/system_01.dbf

/u06/dbf/PROD/temp_01.dbf

/u04/dbf/PROD/users_01.dbf

/u09/dbf/PROD/rbs_01.dbf

/u06/dbf/PROD/applsys_indx_01.dbf

/u05/dbf/PROD/applsys_data_01.dbf

從以上可以看出,數(shù)據(jù)文件大致可以分為以下幾類:

i. 系統(tǒng)數(shù)據(jù)文件(system_01.dbf)

存放系統(tǒng)表和數(shù)據(jù)字典,一般不放用戶的數(shù)據(jù),但是用戶腳本,如過程,函數(shù),包等卻是保存在數(shù)據(jù)字典中的。

名詞解釋:數(shù)據(jù)字典 數(shù)據(jù)字典是一些系統(tǒng)表或視圖,他存放系統(tǒng)的信息,他包括數(shù)據(jù)庫(kù)版本,數(shù)據(jù)文件信息,表與索引等段信息,系統(tǒng)的運(yùn)行狀態(tài)等各種和系統(tǒng)有關(guān)的信息和用戶腳本信息。數(shù)據(jù)庫(kù)管理員可以通過對(duì)數(shù)據(jù)字典的查詢,就可以了解到Oracle的運(yùn)行狀態(tài)。

ii. 回滾段文件(rbs_01.dbf)

如果數(shù)據(jù)庫(kù)進(jìn)行對(duì)數(shù)據(jù)的修改,那么就必須使用回滾段,回滾段是用來臨時(shí)存放修改前的數(shù)據(jù)(Before Image)?;貪L段通常都放在一個(gè)單獨(dú)的表空間上(回滾表空間),避免表空間碎片化,這個(gè)表空間包含的數(shù)據(jù)文件就是回滾數(shù)據(jù)文件。

iii. 臨時(shí)數(shù)據(jù)文件(temp_01.dbf)

主要存放用戶的排序等臨時(shí)數(shù)據(jù),與回滾段相似,臨時(shí)段也容易引起表空間碎片化,而且沒有辦法在一個(gè)永久表空間上開辟臨時(shí)段,所以就必須有一個(gè)臨時(shí)表空間,它所包含的數(shù)據(jù)文件就是臨時(shí)數(shù)據(jù)文件,主要用于不能在內(nèi)存上進(jìn)行的排序操作。我們必須為用戶指定一個(gè)臨時(shí)表空間。

iv. 用戶數(shù)據(jù)文件(/applsys_data_01.dbf ,applsys_indx_01.dbf)

存放用戶數(shù)據(jù),這里列舉了兩類常見的用戶型數(shù)據(jù),一般數(shù)據(jù)和索引數(shù)據(jù),一般來說,如果條件許可的話,可以考慮放在不同的磁盤上。

3、重做日志文件(聯(lián)機(jī)重做日志)

用戶對(duì)數(shù)據(jù)庫(kù)進(jìn)行的任何操作都會(huì)記錄在重做日志文件。在了解重做日志之前必須了解重做日志的兩個(gè)概念,重做日志組和重做日志組成員(Member),一個(gè)數(shù)據(jù)庫(kù)中至少要有兩個(gè)日志組文件,一組寫完后再寫另一組,即輪流寫。每個(gè)日志組中至少有一個(gè)日志成員,一個(gè)日志組中的多個(gè)日志成員是鏡相關(guān)系,有利于日志文件的保護(hù),因?yàn)槿罩疚募膿p壞,特別是當(dāng)前聯(lián)機(jī)日志的損壞,對(duì)數(shù)據(jù)庫(kù)的影響是巨大的。

聯(lián)機(jī)日志組的交換過程叫做切換,需要特別注意的是,日志切換在一個(gè)優(yōu)化效果不好的數(shù)據(jù)庫(kù)中會(huì)引起臨時(shí)的“掛起”。掛起大致有兩種情況:

在歸檔情況下,需要?dú)w檔的日志來不及歸檔,而聯(lián)機(jī)日志又需要被重新利用

檢查點(diǎn)事件還沒有完成(日志切換引起檢查點(diǎn)),而聯(lián)機(jī)日志需要被重新利用

解決這種問題的常用手段是:

i.增加日志組

ii.增大日志文件成員大小

通過v$log可以查看日志組,v$logfile可以查看具體的成員文件。

4、歸檔日志文件

Oracle可以運(yùn)行在兩種模式之中,歸檔模式和不歸檔模式。如果不用歸檔模式,當(dāng)然,你就不會(huì)有歸檔日志,但是,你的系統(tǒng)將不會(huì)是一個(gè)實(shí)用系統(tǒng),特別是不能用于生產(chǎn)系統(tǒng),因?yàn)槟憧赡軙?huì)丟失數(shù)據(jù)。但是在歸檔模式中,為了保存用戶的所有修改,在重做日志文件切換后和被覆蓋之間系統(tǒng)將他們另外保存成一組連續(xù)的文件系列,該文件系列就是歸檔日志文件。

有人或許會(huì)說,歸檔日志文件占領(lǐng)我大量的硬盤空間,其實(shí),具體想一想,你是愿意浪費(fèi)一點(diǎn)磁盤空間來保護(hù)你的數(shù)據(jù),還是愿意丟失你的數(shù)據(jù)呢?顯而義見,我們需要保證我們的數(shù)據(jù)的安全性。其實(shí),歸檔并不是一直占領(lǐng)你的磁盤空間,你可以把她備份到磁帶上,或則刪除上一次完整備份前的所有日志文件。

5、初始化參數(shù)文件

initSID.ora或init.ora文件,因?yàn)榘姹镜牟灰粯?,其位置也可能?huì)不一樣。在8i中,通常位于$Oracle_HOME/admin//Pfile下,初始化文件記載了許多數(shù)據(jù)庫(kù)的啟動(dòng)參數(shù),如內(nèi)存,控制文件,進(jìn)程數(shù)等,在數(shù)據(jù)庫(kù)啟動(dòng)的時(shí)候加載(Nomount時(shí)加載),初始化文件記錄了很多重要參數(shù),對(duì)數(shù)據(jù)庫(kù)的性能影響很大,如果不是很了解,不要輕易亂改寫,否則會(huì)引起數(shù)據(jù)庫(kù)性能下降。

6、其他文件

i . 密碼文件

用于Oracle 的具有sysdba權(quán)限用戶的認(rèn)證.

ii. 日志文件

報(bào)警日志文件(alert.log或alrt.ora)

記錄數(shù)據(jù)庫(kù)啟動(dòng),關(guān)閉和一些重要的出錯(cuò)信息。數(shù)據(jù)庫(kù)管理員應(yīng)該經(jīng)常檢查這個(gè)文件,并對(duì)出現(xiàn)的問題作出即使的反應(yīng)。你可以通過以下SQL 找到他的路徑select value from v$PARAMETER where name =”background_dump_dest”;

后臺(tái)或用戶跟蹤文件

系統(tǒng)進(jìn)程或用戶進(jìn)程出錯(cuò)前寫入的信息,一般不可能讀懂,可以通過Oracle的TKPROF工具轉(zhuǎn)化為可以讀懂的格式。對(duì)于系統(tǒng)進(jìn)程產(chǎn)生的跟蹤文件與報(bào)警日志文件的路徑一樣,用戶跟蹤文件的路徑,你可以通過以下SQL找到他的路徑select value from v$PARAMETER where name =”user_dump_dest”;

三、Oracle邏輯結(jié)構(gòu)

1、 表空間(tablespace)

表空間是數(shù)據(jù)庫(kù)中的基本邏輯結(jié)構(gòu),一系列數(shù)據(jù)文件的。一個(gè)表空間可以包含多個(gè)數(shù)據(jù)文件,但是一個(gè)數(shù)據(jù)文件只能屬于一個(gè)表空間。

2、 段(Segment)

段是對(duì)象在數(shù)據(jù)庫(kù)中占用的空間,雖然段和數(shù)據(jù)庫(kù)對(duì)象是一一對(duì)應(yīng)的,但段是從數(shù)據(jù)庫(kù)存儲(chǔ)的角度來看的。一個(gè)段只能屬于一個(gè)表空間,當(dāng)然一個(gè)表空間可以有多個(gè)段。

表空間和數(shù)據(jù)文件是物理存儲(chǔ)上的一對(duì)多的關(guān)系,表空間和段是邏輯存儲(chǔ)上的一對(duì)多的關(guān)系,段不直接和數(shù)據(jù)文件。一個(gè)段可以屬于多個(gè)數(shù)據(jù)文件,關(guān)于段可以指定擴(kuò)展到哪個(gè)數(shù)據(jù)文件上面。

段基本可以分為以下四種

數(shù)據(jù)段(Data Segment)

索引段(Index Segment)

回滾段(Rollback Segment)

臨時(shí)段(Temporary Segment)

3、區(qū)間(Extent)

關(guān)于Extent的翻譯有多種解釋,有的譯作擴(kuò)展,有的譯作盤區(qū),我這里通常譯為區(qū)間。在一個(gè)段中可以存在多個(gè)區(qū)間,區(qū)間是為數(shù)據(jù)一次性預(yù)留的一個(gè)較大的存儲(chǔ)空間,直到那個(gè)區(qū)間被用滿,數(shù)據(jù)庫(kù)會(huì)繼續(xù)申請(qǐng)一個(gè)新的預(yù)留存儲(chǔ)空間,即新的區(qū)間,一直到段的更大區(qū)間數(shù)(Max Extent)或沒有可用的磁盤空間可以申請(qǐng)。 在Oracle8i以上版本,理論上一個(gè)段可以無窮個(gè)區(qū)間,但是多個(gè)區(qū)間對(duì)Oracle卻是有性能影響的,Oracle建議把數(shù)據(jù)分布在盡量少的區(qū)間上,以減少Oracle的管理與磁頭的移動(dòng)。

4、Oracle數(shù)據(jù)塊(Block)

Oracle最基本的存儲(chǔ)單位,他是OS數(shù)據(jù)塊的整數(shù)倍。Oracle的操作都是以塊為基本單位,一個(gè)區(qū)間可以包含多個(gè)塊(如果區(qū)間大小不是塊大小的整數(shù)倍,Oracle實(shí)際也擴(kuò)展到塊的整數(shù)倍)。

5、基本表空間介紹

a. 系統(tǒng)表空間

主要存放數(shù)據(jù)字典和內(nèi)部系統(tǒng)表基表

查看數(shù)據(jù)數(shù)據(jù)字典的SQL

select * from dict

查看內(nèi)部系統(tǒng)表的SQL

select * from v$fixed_view_definition

DBA對(duì)系統(tǒng)的系統(tǒng)表中的數(shù)據(jù)字典必須有一個(gè)很深刻的了解,他們必須準(zhǔn)備一些基礎(chǔ)的SQL語句,通過這些SQL可以立即了解系統(tǒng)的狀況和數(shù)據(jù)庫(kù)的狀態(tài),這些基本的SQL包括

系統(tǒng)的剩余空間

系統(tǒng)的SGA

狀態(tài)系統(tǒng)的等待

用戶的權(quán)限

當(dāng)前的用戶鎖

緩沖區(qū)的使用狀況等

在成為DBA 的道路上我們不建議你過分的依賴于OEM/Quest 等優(yōu)秀的數(shù)據(jù)庫(kù)管理工具,因?yàn)樗麄儾焕谀銓?duì)數(shù)據(jù)數(shù)據(jù)字典的理解,SQL語句可以完成幾乎全部的數(shù)據(jù)庫(kù)管理工作。

大量的讀少量的寫是該表空間的一個(gè)顯著的特點(diǎn)。

b. 臨時(shí)表空間.

臨時(shí)表空間顧名思義是用來存放臨時(shí)數(shù)據(jù)的,例如排序操作的臨時(shí)空間,他的空間會(huì)在下次系統(tǒng)啟動(dòng)的時(shí)候全部被釋放。

c. 回滾段表空間

i. 回滾段在系統(tǒng)中的作用

當(dāng)數(shù)據(jù)庫(kù)進(jìn)行更新插入刪除等操作的時(shí)候,新的數(shù)據(jù)被更新到原來的數(shù)據(jù)文件,而舊的數(shù)據(jù)(Before Image)就被放到回滾段中,如果數(shù)據(jù)需要回滾,那么可以從回滾段將數(shù)據(jù)再?gòu)?fù)制到數(shù)據(jù)文件中。來完成數(shù)據(jù)的回滾。在系統(tǒng)恢復(fù)的時(shí)候, 回滾段可以用來回滾沒有被commit 的數(shù)據(jù),解決系統(tǒng)的一至性。

回滾段在什么情況下都是大量的寫,一般是少量讀,因此建議把回滾段單獨(dú)出來放在一個(gè)單獨(dú)的設(shè)備(如單獨(dú)的磁盤或RAID),以減少磁盤的IO爭(zhēng)用。

ii. 回滾段的工作方式

一個(gè)回滾表空間可以被劃分成多個(gè)回滾段.

一個(gè)回滾段可以保存多個(gè)會(huì)話的數(shù)據(jù).

回滾段是一個(gè)圓形的數(shù)據(jù)模型

假設(shè)回滾段由4 個(gè)區(qū)間組成,他們的使用順序就是區(qū)間1à區(qū)間2à區(qū)間3à區(qū)間4à區(qū)間1。也就是說,區(qū)間是可以循環(huán)使用的,當(dāng)區(qū)間4到區(qū)間1的時(shí)候,區(qū)間1里面的會(huì)話還沒有結(jié)束, 區(qū)間4用完后就不能再用區(qū)間1,這時(shí)系統(tǒng)必須分配區(qū)間5,來繼續(xù)為其他會(huì)話服務(wù)服務(wù)。

我們分析一個(gè)Update 語句的完成

①. 用戶提交一個(gè)Update 語句

②. Server Process 檢查內(nèi)存緩沖.

如果沒有該數(shù)據(jù)塊的緩沖,則從磁盤讀入

i. 如果沒有內(nèi)存的有效空間,DBWR被啟動(dòng)將未寫入磁盤的臟緩沖寫入磁盤

ii. 如果有有效空間,則讀入

③. 在緩沖內(nèi)更新數(shù)據(jù)

i. 申請(qǐng)一個(gè)回滾段入口,將舊數(shù)據(jù)寫如回滾段

ii. 加鎖并更新數(shù)據(jù)

iii. 并在同時(shí)將修改記錄在Redo log buffer中

另外,站長(zhǎng)團(tuán)上有產(chǎn)品團(tuán)購(gòu),便宜有保證

影響數(shù)據(jù)庫(kù)性能的主要因素有哪些?

1、1、調(diào)整數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。這一部分在開發(fā)信息系統(tǒng)之前完成,程序員需要考慮是否使用ORACLE數(shù)據(jù)庫(kù)的分區(qū)功能,對(duì)于經(jīng)常訪問的數(shù)據(jù)庫(kù)表是否需要建立索引等。 \x0d\x0a\x0d\x0a2、2、調(diào)整應(yīng)用程序結(jié)構(gòu)設(shè)計(jì)。這一部分也是在開發(fā)信息系統(tǒng)之前完成,程序員在這一步需要考慮應(yīng)用程序使用什么樣的體系結(jié)構(gòu),是使用傳統(tǒng)的Client/Server兩層體系結(jié)構(gòu),還是使用Browser/Web/Database的三層體系結(jié)構(gòu)。不同的應(yīng)用程序體系結(jié)構(gòu)要求的數(shù)據(jù)庫(kù)資源是不同的。 \x0d\x0a\x0d\x0a3、3、調(diào)整數(shù)據(jù)庫(kù)SQL語句。應(yīng)用程序的執(zhí)行最終將歸結(jié)為數(shù)據(jù)庫(kù)中的SQL語句執(zhí)行,因此SQL語句的執(zhí)行效率最終決定了ORACLE數(shù)據(jù)庫(kù)的性能。ORACLE公司推薦使用ORACLE語句優(yōu)化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調(diào)整優(yōu)化SQL語句。 \x0d\x0a\x0d\x0a4、4、調(diào)整服務(wù)器內(nèi)存分銷和段配。內(nèi)存分配是在信息系統(tǒng)運(yùn)行過程中優(yōu)化配置的,數(shù)據(jù)庫(kù)管理員可以根據(jù)數(shù)據(jù)庫(kù)運(yùn)行狀況調(diào)整數(shù)據(jù)庫(kù)系統(tǒng)全局區(qū)(SGA區(qū))的數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)和共享池的大小;還可以調(diào)整程序全局區(qū)(PGA區(qū))的大小。需要注意的是,SGA區(qū)不是越大越好,SGA區(qū)過大會(huì)占用操作系統(tǒng)使用的內(nèi)存而引起虛擬內(nèi)存的頁面交換,這樣反而會(huì)降低系統(tǒng)。 \x0d\x0a\x0d\x0a5、5、調(diào)整硬盤I/O,這一步是在信息系統(tǒng)開發(fā)之前完成的。數(shù)據(jù)庫(kù)管理員可以將組成同一個(gè)表空間的數(shù)據(jù)文件放在不同的硬盤上,做到硬盤之間I/O負(fù)載均衡。 \x0d\x0a\x0d\x0a6、6、調(diào)整操作系統(tǒng)參數(shù),例如:運(yùn)行在UNIX操作系統(tǒng)上的ORACLE數(shù)據(jù)庫(kù),可以調(diào)整UNIX數(shù)據(jù)緩沖池的大小,每個(gè)進(jìn)程所能使用的內(nèi)存大小等參數(shù)。 \x0d\x0a\x0d\x0a實(shí)際上,上述數(shù)據(jù)庫(kù)優(yōu)化措施之間是相互聯(lián)系的。ORACLE數(shù)據(jù)庫(kù)性能惡化表現(xiàn)基本上都是用戶響應(yīng)時(shí)間比較長(zhǎng),需要用戶長(zhǎng)時(shí)間的等待。但性能惡化的原因卻是多種多樣的,有時(shí)是多個(gè)因素共同造成了性能惡化的結(jié)果,這就需要數(shù)據(jù)庫(kù)管理員有比較全面的計(jì)算機(jī)知識(shí),能夠敏感地察覺到影響數(shù)據(jù)庫(kù)性能的主要原因所在。另外,良好的數(shù)據(jù)庫(kù)管理工具對(duì)于優(yōu)化數(shù)據(jù)庫(kù)性能也是很重要的。 \x0d\x0a\x0d\x0aORACLE數(shù)據(jù)庫(kù)性能優(yōu)化工具 \x0d\x0a\x0d\x0a常用的數(shù)據(jù)庫(kù)性能優(yōu)化工具有: \x0d\x0a\x0d\x0a1、1、ORACLE數(shù)據(jù)庫(kù)在線數(shù)據(jù)字典,ORACLE在線數(shù)據(jù)字典能夠反映出ORACLE動(dòng)態(tài)運(yùn)行情況,對(duì)于調(diào)整數(shù)據(jù)庫(kù)性能是很有幫助的。 \x0d\x0a\x0d\x0a2、2、操作系統(tǒng)工具,例如UNIX操作系統(tǒng)的vmstat,iostat等命令可以查看到系統(tǒng)系統(tǒng)級(jí)內(nèi)存和硬盤I/O的使用情況,這些工具對(duì)于管理員弄清出系統(tǒng)瓶頸出現(xiàn)棚行在什么地方有時(shí)候很有用。 \x0d\x0a\x0d\x0a3、3、SQL語言跟蹤工具(SQL TRACE FACILITY),SQL語言跟蹤工具可以記錄SQL語句的執(zhí)行情況,管理員可以使用虛擬表來調(diào)整實(shí)例,使用SQL語句跟蹤文件調(diào)整應(yīng)用程序性能。SQL語言跟蹤工具將結(jié)果輸出成一個(gè)操作系統(tǒng)的文虧譽(yù)件,管理員可以使用TKPROF工具查看這些文件。 \x0d\x0a\x0d\x0a4、4、ORACLE Enterprise Manager(OEM),這是一個(gè)圖形的用戶管理界面,用戶可以使用它方便地進(jìn)行數(shù)據(jù)庫(kù)管理而不必記住復(fù)雜的ORACLE數(shù)據(jù)庫(kù)管理的命令。 \x0d\x0a\x0d\x0a5、5、EXPLAIN PLAN——SQL語言優(yōu)化命令,使用這個(gè)命令可以幫助程序員寫出高效的SQL語言。 \x0d\x0a\x0d\x0aORACLE數(shù)據(jù)庫(kù)的系統(tǒng)性能評(píng)估 \x0d\x0a\x0d\x0a信息系統(tǒng)的類型不同,需要關(guān)注的數(shù)據(jù)庫(kù)參數(shù)也是不同的。數(shù)據(jù)庫(kù)管理員需要根據(jù)自己的信息系統(tǒng)的類型著重考慮不同的數(shù)據(jù)庫(kù)參數(shù)。 \x0d\x0a\x0d\x0a1、1、在線事務(wù)處理信息系統(tǒng)(OLTP),這種類型的信息系統(tǒng)一般需要有大量的Insert、Update操作,典型的系統(tǒng)包括民航機(jī)票發(fā)售系統(tǒng)、銀行儲(chǔ)蓄系統(tǒng)等。OLTP系統(tǒng)需要保證數(shù)據(jù)庫(kù)的并發(fā)性、可靠性和最終用戶的速度,這類系統(tǒng)使用的ORACLE數(shù)據(jù)庫(kù)需要主要考慮下述參數(shù): \x0d\x0a\x0d\x0al l 數(shù)據(jù)庫(kù)回滾段是否足夠? \x0d\x0a\x0d\x0al l 是否需要建立ORACLE數(shù)據(jù)庫(kù)索引、聚集、散列? \x0d\x0a\x0d\x0al l 系統(tǒng)全局區(qū)(SGA)大小是否足夠? \x0d\x0a\x0d\x0al l SQL語句是否高效? \x0d\x0a\x0d\x0a2、2、數(shù)據(jù)倉(cāng)庫(kù)系統(tǒng)(Data Warehousing),這種信息系統(tǒng)的主要任務(wù)是從ORACLE的海量數(shù)據(jù)中進(jìn)行查詢,得到數(shù)據(jù)之間的某些規(guī)律。數(shù)據(jù)庫(kù)管理員需要為這種類型的ORACLE數(shù)據(jù)庫(kù)著重考慮下述參數(shù): \x0d\x0a\x0d\x0al l 是否采用B*-索引或者bitmap索引? \x0d\x0a\x0d\x0al l 是否采用并行SQL查詢以提高查詢效率? \x0d\x0a\x0d\x0al l 是否采用PL/SQL函數(shù)編寫存儲(chǔ)過程? \x0d\x0a\x0d\x0al l 有必要的話,需要建立并行數(shù)據(jù)庫(kù)提高數(shù)據(jù)庫(kù)的查詢效率 \x0d\x0a\x0d\x0aSQL語句的調(diào)整原則 \x0d\x0a\x0d\x0aSQL語言是一種靈活的語言,相同的功能可以使用不同的語句來實(shí)現(xiàn),但是語句的執(zhí)行效率是很不相同的。程序員可以使用EXPLAIN PLAN語句來比較各種實(shí)現(xiàn)方案,并選出更優(yōu)的實(shí)現(xiàn)方案??偟脕碇v,程序員寫SQL語句需要滿足考慮如下規(guī)則: \x0d\x0a\x0d\x0a1、1、盡量使用索引。試比較下面兩條SQL語句: \x0d\x0a\x0d\x0a語句A:SELECT dname, deptno FROM dept WHERE deptno NOT IN \x0d\x0a\x0d\x0a(SELECT deptno FROM emp); \x0d\x0a\x0d\x0a語句B:SELECT dname, deptno FROM dept WHERE NOT EXISTS \x0d\x0a\x0d\x0a(SELECT deptno FROM emp WHERE dept.deptno = emp.deptno); \x0d\x0a\x0d\x0a這兩條查詢語句實(shí)現(xiàn)的結(jié)果是相同的,但是執(zhí)行語句A的時(shí)候,ORACLE會(huì)對(duì)整個(gè)emp表進(jìn)行掃描,沒有使用建立在emp表上的deptno索引,執(zhí)行語句B的時(shí)候,由于在子查詢中使用了聯(lián)合查詢,ORACLE只是對(duì)emp表進(jìn)行的部分?jǐn)?shù)據(jù)掃描,并利用了deptno列的索引,所以語句B的效率要比語句A的效率高一些。 \x0d\x0a\x0d\x0a2、2、選擇聯(lián)合查詢的聯(lián)合次序??紤]下面的例子: \x0d\x0a\x0d\x0aSELECT stuff FROM taba a, tabb b, tabc c \x0d\x0a\x0d\x0aWHERE a.acol between :alow and :ahigh \x0d\x0a\x0d\x0aAND b.bcol between :blow and :bhigh \x0d\x0a\x0d\x0aAND c.ccol between :clow and :chigh \x0d\x0a\x0d\x0aAND a.key1 = b.key1 \x0d\x0a\x0d\x0aAMD a.key2 = c.key2; \x0d\x0a\x0d\x0a這個(gè)SQL例子中,程序員首先需要選擇要查詢的主表,因?yàn)橹鞅硪M(jìn)行整個(gè)表數(shù)據(jù)的掃描,所以主表應(yīng)該數(shù)據(jù)量最小,所以例子中表A的acol列的范圍應(yīng)該比表B和表C相應(yīng)列的范圍小。 \x0d\x0a\x0d\x0a3、3、在子查詢中慎重使用IN或者NOT IN語句,使用where (NOT) exists的效果要好的多。 \x0d\x0a\x0d\x0a4、4、慎重使用視圖的聯(lián)合查詢,尤其是比較復(fù)雜的視圖之間的聯(lián)合查詢。一般對(duì)視圖的查詢更好都分解為對(duì)數(shù)據(jù)表的直接查詢效果要好一些。 \x0d\x0a\x0d\x0a5、5、可以在參數(shù)文件中設(shè)置SHARED_POOL_RESERVED_SIZE參數(shù),這個(gè)參數(shù)在SGA共享池中保留一個(gè)連續(xù)的內(nèi)存空間,連續(xù)的內(nèi)存空間有益于存放大的SQL程序包。 \x0d\x0a\x0d\x0a6、6、ORACLE公司提供的DBMS_SHARED_POOL程序可以幫助程序員將某些經(jīng)常使用的存儲(chǔ)過程“釘”在SQL區(qū)中而不被換出內(nèi)存,程序員對(duì)于經(jīng)常使用并且占用內(nèi)存很多的存儲(chǔ)過程“釘”到內(nèi)存中有利于提高最終用戶的響應(yīng)時(shí)間。 \x0d\x0a\x0d\x0aCPU參數(shù)的調(diào)整 \x0d\x0a\x0d\x0aCPU是服務(wù)器的一項(xiàng)重要資源,服務(wù)器良好的工作狀態(tài)是在工作高峰時(shí)CPU的使用率在90%以上。如果空閑時(shí)間CPU使用率就在90%以上,說明服務(wù)器缺乏CPU資源,如果工作高峰時(shí)CPU使用率仍然很低,說明服務(wù)器CPU資源還比較富余。 \x0d\x0a\x0d\x0a使用操作相同命令可以看到CPU的使用情況,一般UNIX操作系統(tǒng)的服務(wù)器,可以使用sar _u命令查看CPU的使用率,NT操作系統(tǒng)的服務(wù)器,可以使用NT的性能管理器來查看CPU的使用率。 \x0d\x0a\x0d\x0a數(shù)據(jù)庫(kù)管理員可以通過查看v$sysstat數(shù)據(jù)字典中“CPU used by this session”統(tǒng)計(jì)項(xiàng)得知ORACLE數(shù)據(jù)庫(kù)使用的CPU時(shí)間,查看“OS User level CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)用戶態(tài)下的CPU時(shí)間,查看“OS System call CPU time”統(tǒng)計(jì)項(xiàng)得知操作系統(tǒng)系統(tǒng)態(tài)下的CPU時(shí)間,操作系統(tǒng)總的CPU時(shí)間就是用戶態(tài)和系統(tǒng)態(tài)時(shí)間之和,如果ORACLE數(shù)據(jù)庫(kù)使用的CPU時(shí)間占操作系統(tǒng)總的CPU時(shí)間90%以上,說明服務(wù)器CPU基本上被ORACLE數(shù)據(jù)庫(kù)使用著,這是合理,反之,說明服務(wù)器CPU被其它程序占用過多,ORACLE數(shù)據(jù)庫(kù)無法得到更多的CPU時(shí)間。 \x0d\x0a\x0d\x0a數(shù)據(jù)庫(kù)管理員還可以通過查看v$sesstat數(shù)據(jù)字典來獲得當(dāng)前連接ORACLE數(shù)據(jù)庫(kù)各個(gè)會(huì)話占用的CPU時(shí)間,從而得知什么會(huì)話耗用服務(wù)器CPU比較多。 \x0d\x0a\x0d\x0a出現(xiàn)CPU資源不足的情況是很多的:SQL語句的重解析、低效率的SQL語句、鎖沖突都會(huì)引起CPU資源不足。 \x0d\x0a\x0d\x0a1、數(shù)據(jù)庫(kù)管理員可以執(zhí)行下述語句來查看SQL語句的解析情況: \x0d\x0a\x0d\x0aSELECT * FROM V$SYSSTAT \x0d\x0a\x0d\x0aWHERE NAME IN \x0d\x0a\x0d\x0a(‘parse time cpu’, ‘parse time elapsed’, ‘parse count (hard)’); \x0d\x0a\x0d\x0a這里parse time cpu是系統(tǒng)服務(wù)時(shí)間,parse time elapsed是響應(yīng)時(shí)間,用戶等待時(shí)間 \x0d\x0a\x0d\x0awaite time = parse time elapsed _ parse time cpu \x0d\x0a\x0d\x0a由此可以得到用戶SQL語句平均解析等待時(shí)間=waite time / parse count。這個(gè)平均等待時(shí)間應(yīng)該接近于0,如果平均解析等待時(shí)間過長(zhǎng),數(shù)據(jù)庫(kù)管理員可以通過下述語句 \x0d\x0a\x0d\x0aSELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA \x0d\x0a\x0d\x0aORDER BY PARSE_CALLS; \x0d\x0a\x0d\x0a來發(fā)現(xiàn)是什么SQL語句解析效率比較低。程序員可以優(yōu)化這些語句,或者增加ORACLE參數(shù)SESSION_CACHED_CURSORS的值。 \x0d\x0a\x0d\x0a2、數(shù)據(jù)庫(kù)管理員還可以通過下述語句: \x0d\x0a\x0d\x0aSELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA; \x0d\x0a\x0d\x0a查看低效率的SQL語句,優(yōu)化這些語句也有助于提高CPU的利用率。 \x0d\x0a\x0d\x0a3、3、數(shù)據(jù)庫(kù)管理員可以通過v$system_event數(shù)據(jù)字典中的“l(fā)atch free”統(tǒng)計(jì)項(xiàng)查看ORACLE數(shù)據(jù)庫(kù)的沖突情況,如果沒有沖突的話,latch free查詢出來沒有結(jié)果。如果沖突太大的話,數(shù)據(jù)庫(kù)管理員可以降低spin_count參數(shù)值,來消除高的CPU使用率。 \x0d\x0a\x0d\x0a內(nèi)存參數(shù)的調(diào)整 \x0d\x0a\x0d\x0a內(nèi)存參數(shù)的調(diào)整主要是指ORACLE數(shù)據(jù)庫(kù)的系統(tǒng)全局區(qū)(SGA)的調(diào)整。SGA主要由三部分構(gòu)成:共享池、數(shù)據(jù)緩沖區(qū)、日志緩沖區(qū)。 \x0d\x0a\x0d\x0a1、 1、 共享池由兩部分構(gòu)成:共享SQL區(qū)和數(shù)據(jù)字典緩沖區(qū),共享SQL區(qū)是存放用戶SQL命令的區(qū)域,數(shù)據(jù)字典緩沖區(qū)存放數(shù)據(jù)庫(kù)運(yùn)行的動(dòng)態(tài)信息。數(shù)據(jù)庫(kù)管理員通過執(zhí)行下述語句: \x0d\x0a\x0d\x0aselect (sum(pins – reloads)) / sum(pins) “Lib Cache” from v$librarycache; \x0d\x0a\x0d\x0a來查看共享SQL區(qū)的使用率。這個(gè)使用率應(yīng)該在90%以上,否則需要增加共享池的大小。數(shù)據(jù)庫(kù)管理員還可以執(zhí)行下述語句: \x0d\x0a\x0d\x0aselect (sum(gets – getmisses – usage – fixed)) / sum(gets) “Row Cache” from v$rowcache; \x0d\x0a\x0d\x0a查看數(shù)據(jù)字典緩沖區(qū)的使用率,這個(gè)使用率也應(yīng)該在90%以上,否則需要增加共享池的大小。 \x0d\x0a\x0d\x0a2、 2、 數(shù)據(jù)緩沖區(qū)。數(shù)據(jù)庫(kù)管理員可以通過下述語句: \x0d\x0a\x0d\x0aSELECT name, value FROM v$sysstat WHERE name IN (‘db block gets’, ‘consistent gets’,’physical reads’); \x0d\x0a\x0d\x0a來查看數(shù)據(jù)庫(kù)數(shù)據(jù)緩沖區(qū)的使用情況。查詢出來的結(jié)果可以計(jì)算出來數(shù)據(jù)緩沖區(qū)的使用命中率=1 – ( physical reads / (db block gets + consistent gets) )。 \x0d\x0a\x0d\x0a這個(gè)命中率應(yīng)該在90%以上,否則需要增加數(shù)據(jù)緩沖區(qū)的大小。 \x0d\x0a\x0d\x0a3、 3、 日志緩沖區(qū)。數(shù)據(jù)庫(kù)管理員可以通過執(zhí)行下述語句: \x0d\x0a\x0d\x0aselect name,value from v$sysstat where name in (‘redo entries’,’redo log space requests’);查看日志緩沖區(qū)的使用情況。查詢出的結(jié)果可以計(jì)算出日志緩沖區(qū)的申請(qǐng)失敗率: \x0d\x0a\x0d\x0a申請(qǐng)失敗率=requests/entries,申請(qǐng)失敗率應(yīng)該接近于0,否則說明日志緩沖區(qū)開設(shè)太小,需要增加ORACLE數(shù)據(jù)庫(kù)的日志緩沖區(qū)。

關(guān)于加大數(shù)據(jù)庫(kù)回滾段的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都創(chuàng)新互聯(lián)科技有限公司,是一家專注于互聯(lián)網(wǎng)、IDC服務(wù)、應(yīng)用軟件開發(fā)、網(wǎng)站建設(shè)推廣的公司,為客戶提供互聯(lián)網(wǎng)基礎(chǔ)服務(wù)!
創(chuàng)新互聯(lián)(www.cdcxhl.com)提供簡(jiǎn)單好用,價(jià)格厚道的香港/美國(guó)云服務(wù)器和獨(dú)立服務(wù)器。創(chuàng)新互聯(lián)——四川成都IDC機(jī)房服務(wù)器托管/機(jī)柜租用。為您精選優(yōu)質(zhì)idc數(shù)據(jù)中心機(jī)房租用、服務(wù)器托管、機(jī)柜租賃、大帶寬租用,高電服務(wù)器托管,算力服務(wù)器租用,可選線路電信、移動(dòng)、聯(lián)通機(jī)房等。


分享文章:「數(shù)據(jù)庫(kù)」加強(qiáng)「回滾段」,系統(tǒng)更穩(wěn)定(加大數(shù)據(jù)庫(kù)回滾段)
當(dāng)前網(wǎng)址:http://www.5511xx.com/article/coigooc.html