如何進(jìn)行AWR中的主要事件分析

本篇文章為大家展示了如何進(jìn)行AWR中的主要事件分析,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)擁有10多年成都網(wǎng)站建設(shè)工作經(jīng)驗(yàn),為各大企業(yè)提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作服務(wù),對(duì)于網(wǎng)頁(yè)設(shè)計(jì)、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、App定制開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、申請(qǐng)域名等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們?cè)诨ヂ?lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)絡(luò)營(yíng)銷經(jīng)驗(yàn),集策劃、開發(fā)、設(shè)計(jì)、營(yíng)銷、管理等網(wǎng)站化運(yùn)作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項(xiàng)目的能力。

  現(xiàn)在很多DBA都閱讀和分析STATSPACK/AWR報(bào)告,不過這份報(bào)告可不容易讀。一般的DBA頂多能夠看看前面的TOP EVENTS,命中率以及后面的一些ADVISORY,而實(shí)際上系統(tǒng)的更多的秘密存在于那些看起來十分生澀的InstanceActivity Stats中。但是對(duì)于這些STATS,大多數(shù)DBA都感到很無(wú)奈,沒有任何官方的資料披露這些STATS的含義,有些DBA經(jīng)過長(zhǎng)年的積累,可以從字面意思上對(duì)某些指標(biāo)進(jìn)行一些解讀。這些年里,老白閱讀了數(shù)千份的STATSPACK/AWR報(bào)告,經(jīng)過長(zhǎng)期的積累,老白總結(jié)了一些閱讀STATS的經(jīng)驗(yàn),在本節(jié),將拿出來和大家分享。

       經(jīng)常有DBA問老白某某指標(biāo)多大是不正常的,實(shí)際上由于每個(gè)系統(tǒng)的硬件配置、應(yīng)用、周期性節(jié)奏等方面都存在不同,因此絕大多數(shù)數(shù)據(jù)庫(kù)的指標(biāo)都沒有一個(gè)“正常值”。當(dāng)然對(duì)于那些接觸過大量系統(tǒng)的老DBA,他們可以根據(jù)經(jīng)驗(yàn),一打眼就看出某些指標(biāo)不太正常,但是對(duì)于絕大多數(shù)DBA來說,看到這些指標(biāo)就像看天書一樣,哪怕知道這些指標(biāo)的含義,也無(wú)法使用這些指標(biāo)來分析數(shù)據(jù)庫(kù)的問題。在這里老白可以向大家透漏一個(gè)十分有用的方法。

       這個(gè)方法實(shí)際上也很簡(jiǎn)單,就是老白常說的基線對(duì)比的方法。對(duì)于一個(gè)系統(tǒng),如果你為何的時(shí)間越長(zhǎng),越了解系統(tǒng)的脾氣,那么這個(gè)系統(tǒng)出現(xiàn)問題的時(shí)候你處理起來越得心應(yīng)手。而一個(gè)新系統(tǒng),很多DBA可能覺得好像無(wú)從入手,很難摸到頭腦。這是什么原因呢?實(shí)際上,一個(gè)你接觸多的系統(tǒng),在你的心理已經(jīng)對(duì)這個(gè)系統(tǒng)建立了很多基線指標(biāo),這樣的話如果系統(tǒng)出了問題,你就很容易通過和平時(shí)的比較找到問題。實(shí)際上你已經(jīng)在實(shí)際工作中使用了老白所說的基線對(duì)比方法?;€對(duì)比方法的基礎(chǔ)是對(duì)某個(gè)系統(tǒng)通過一段時(shí)間的信息采集,將其重要的系統(tǒng)指標(biāo)建立基線,然后將出問題的時(shí)候的系統(tǒng)狀態(tài)數(shù)據(jù)和基線的數(shù)據(jù)進(jìn)行比較,從而發(fā)現(xiàn)問題。DBA分析AWR報(bào)告的時(shí)候,最好的辦法是對(duì)比平時(shí)這個(gè)系統(tǒng)這些指標(biāo)的平均值、合理的高值和低值這些指標(biāo),而不是孤立的從某一份報(bào)告中去查找問題。

       另外一個(gè)要注意的問題是,AWR報(bào)告中的指標(biāo)之間是相互關(guān)聯(lián)的,在分析這些指標(biāo)的時(shí)候,需要綜合分析,將這些指標(biāo)和其他的數(shù)據(jù)對(duì)比分析,才能夠得到較為準(zhǔn)確的分析結(jié)果,比如說你從某些指標(biāo)上看出可能DB CACHE存在問題,那么你就需要比對(duì)報(bào)告頭中的DB CACHE命中率情況,以及事件明細(xì)中的db file sequential read、db file scattered read等指標(biāo)中的平均等待時(shí)間,如果DB CACHE的命中率較高,但是db file sequential read的平均等待時(shí)間較大,那么也不能說DB CACHE就一定沒有問題,我們可以繼續(xù)通過后面的Buffer Pool Statistics等信息來分析BUFFER CACHE是不是配置不合理,以及如何優(yōu)化。

       附表是AWR/STATSPACK報(bào)告中的主要指標(biāo)的描述,該表可以作為DBA的一個(gè)參考資料來使用,沒必要每個(gè)指標(biāo)都去認(rèn)真研讀,也不必要把這張表的內(nèi)容背誦下來。這張表中的內(nèi)容大部分是老白這些年研讀STATSPACK報(bào)告體會(huì)出來的,并不是來自于官方的說法,因此可能部分描述也不很準(zhǔn)確,如果大家對(duì)老白對(duì)這些指標(biāo)的解釋有什么疑問,歡迎到www.oraclefans.cn上去和老白探討。

  

名稱

  

注釋

CPU used by this session

統(tǒng)計(jì)CALL發(fā)起開始到結(jié)束的CPU時(shí)間片的數(shù)量,每個(gè)計(jì)數(shù)代表一個(gè)CPU周期,也就是10毫秒。不過如果有一個(gè)CALL不足一個(gè)CPU周期就執(zhí)行完了,那么統(tǒng)計(jì)值的時(shí)候START TIME和END TIME是相同的,這樣會(huì)計(jì)算為0.這個(gè)計(jì)數(shù)基本上可以代表了ORACLE數(shù)據(jù)庫(kù)消耗的CPU資源,不過計(jì)算的時(shí)候要注意單位是厘秒(cs),乘以10可以換算成毫秒。比如平均每秒這個(gè)指標(biāo)值是782.1,表示ORACLE消耗了7821毫秒CPU時(shí)間,如果這個(gè)系統(tǒng)是一個(gè)16個(gè)CPU的系統(tǒng),那么這個(gè)指標(biāo)可以說明ORACLE消耗了超過50%的CPU資源。不過由于部分小的CALL可能由于消耗的時(shí)間小于10毫秒而沒有計(jì)算進(jìn)去,實(shí)際的使用率可能略高于通過這個(gè)值計(jì)算出來的。一般來說大多數(shù)CALL消耗的CPU都會(huì)大于10毫秒,所以這個(gè)值還是能夠基本反映出ORACLE對(duì)CPU資源的開銷

CR blocks created   

CURRENT塊被克隆后用于創(chuàng)建CR(consistent read)塊。被克隆的主要原因是BUFFER被非兼容的模式占用,如果單位時(shí)間內(nèi)CR BLOCKS CREATED值比較高,說明數(shù)據(jù)庫(kù)中對(duì)某些數(shù)據(jù)塊的修改和訪問比較頻繁。如果這些訪問集中在某些熱塊上,那么可能會(huì)形成較為嚴(yán)重的BUFFER BUSY  WAITS,在RAC環(huán)境中,可能還會(huì)導(dǎo)致全局熱塊沖突,如果這個(gè)指標(biāo)比較高,那么應(yīng)該關(guān)注BUFFER BUSY  WAITS以及CACHE BUFFER CHAINS閂鎖等

current blocks converted for CR

一個(gè)CURRENT的BUFFER在被使用前生成了CR

DBWR buffers scanned

當(dāng)某些觸發(fā)條件發(fā)生時(shí),DBWR會(huì)在LRU鏈的冷端開始掃描臟塊,組成DBWR BATCH,這個(gè)指標(biāo)統(tǒng)計(jì)的是DBWR在LRU上掃描的BUFFER的總數(shù),包含臟塊和干凈的塊,這個(gè)指標(biāo)除以DBWR LRU SCANS這個(gè)指標(biāo)就是每次掃描查找的數(shù)據(jù)塊的數(shù)量。

DBWR checkpoint buffers written

CHECKPOINTS時(shí)dbwr寫入的的臟塊數(shù)量,如果在單位時(shí)間里這個(gè)指標(biāo)比較高,說明系統(tǒng)中數(shù)據(jù)塊的變更較為頻繁

DBWR free buffers found

DBWR從LRU鏈中掃描BUFFER的時(shí)候發(fā)現(xiàn)的FREE的BUFFER的數(shù)量,除以DBWR  MAKE  FREE REQUESTS就是平均每次DBWR在收到DBWR MAKE FREE消息的時(shí)候掃描LRU鏈找到的FREE BUFFER的平均數(shù),這個(gè)平均數(shù)一般會(huì)比較少

DBWR make free requests

DBWR收到的MAKE FREE 消息的數(shù)量,如果某個(gè)前臺(tái)進(jìn)程在查找一個(gè)空閑的BUFFER的時(shí)候無(wú)法找到的時(shí)候或者其他一些觸發(fā)條件,會(huì)向DBWR發(fā)出MAKE FREE消息。如果在單位時(shí)間內(nèi)這個(gè)值較高,說明DB CACHE可能存在不足的現(xiàn)象

DBWR summed scan depth

DBWR掃描LRU鏈查找臟塊的時(shí)候,查找的BUFFER的數(shù)量,這個(gè)數(shù)越大說明LRU鏈尾部的贓塊數(shù)量越少。從Oracle 8i開始,由于LRU鏈的算法發(fā)生了變化,因此如果LRU鏈尾部的熱塊比較多,也可能造成這個(gè)指標(biāo)較大

DBWR timeout

DBWR IDLE超過一個(gè)特定值,該指標(biāo)就會(huì)加1。如果該值較高,說明BUFFER CACHE中的數(shù)據(jù)變化較小,需要寫入磁盤的臟塊數(shù)量極少

DBWR transaction table writes

DBWR寫入的回滾段頭的數(shù)量,這個(gè)指標(biāo)比較高說明有較多熱塊正在被寫入,而大量用戶進(jìn)程在等待這些塊寫入完成

DBWR undo block writes

DBWR寫入回滾段的數(shù)據(jù)塊數(shù)量

DDL statements parallelized

DDL操作并發(fā)執(zhí)行的計(jì)數(shù)

DML statements parallelized

DML操作并發(fā)執(zhí)行的計(jì)數(shù)

background checkpoints completed

后臺(tái)進(jìn)程完成的CHECKPOINTS的數(shù)量。

background checkpoints started

后臺(tái)進(jìn)程啟動(dòng)的CHECKPOINTS數(shù)量,可能比上一個(gè)狀態(tài)的值大一些。如果一個(gè)新的CHECKPOINT覆蓋了一個(gè)未完成的CHECKPOINT或者CHECKPOINT還正在執(zhí)行。這個(gè)狀態(tài)只包含REDO的CHECKPOINT,不包括其他類型的CHECKPOINT,比如OFFLINE文件或者BEGIN BACKUP或者ALTER SYSTEM CHECKPOINT LOCAL命令等

branch node splits

由于插入數(shù)據(jù)導(dǎo)致的索引枝節(jié)點(diǎn)分裂的數(shù)量,這個(gè)指標(biāo)較高說明目前存在索引產(chǎn)生了較多的枝節(jié)點(diǎn)分裂,可能某張表上的某個(gè)索引字段變化十分頻繁,這種頻繁的變化可能對(duì)某個(gè)應(yīng)用的性能有較大的影響

BUFFER DEADLOCK

DB CACHE死鎖的數(shù)量計(jì)數(shù),如果單位時(shí)間內(nèi)該指標(biāo)較高,可能DB CACHE存在性能問題,或者存在某些BUG

buffer is not pinned count

當(dāng)訪問一個(gè)BUFFER的時(shí)候,這個(gè)BUFFER已經(jīng)釋放的數(shù)量,只用于Oracle內(nèi)部調(diào)試,并不說明性能問題

buffer is pinned count

當(dāng)訪問一個(gè)BUFFER的時(shí)候,該BUFFER已經(jīng)被PIN住了,如果單位時(shí)間內(nèi)這個(gè)指標(biāo)比較高,說明可能存在熱塊

change write time

當(dāng)前塊的變化被寫入REDO的時(shí)間,單位厘秒(cs,10毫秒),該指標(biāo)一般不會(huì)太大,如果太大需要分析

commit cleanout failures: block lost

在commit的時(shí)候準(zhǔn)備做塊清理操作的時(shí)候,發(fā)現(xiàn)不能找到正確的塊的次數(shù)計(jì)數(shù)。

commit cleanout failures: buffer being written

Oracle在COMMIT的時(shí)候,去清除BUFFER的時(shí)候,發(fā)現(xiàn)這個(gè)BUFFER 正在被其他會(huì)話寫入的計(jì)數(shù),如果改指標(biāo)比較高,可能說明存在熱塊  

commit cleanout failures: callback failure

Oracle在COMMIT的時(shí)候,做清除操作時(shí)調(diào)用CALLBACK函數(shù)返回FALSE的計(jì)數(shù)

commit cleanout failures: cannot pin

Oracle在COMMIT的時(shí)候,做清除操作時(shí)無(wú)法PIN到這個(gè)BUFFER的計(jì)數(shù),有可能在準(zhǔn)備清理的時(shí)候該BUFFER又被其他會(huì)話PIN住了,如果該指標(biāo)較高,可以查看DB CACHE相關(guān)的情況,包括DB CACHE的大小,命中率,相關(guān)閂鎖的命中率,以及熱塊爭(zhēng)用的情況

commit cleanout failures: hot backup in progress       

  

Oracle在COMMIT的時(shí)候,做清除操作時(shí)發(fā)現(xiàn)正在做熱備份的技術(shù)。此時(shí)在修改這個(gè)BUFFER前,這個(gè)BUFFER在被修改前,必須先被寫入LOG BUFFER,以確保數(shù)據(jù)庫(kù)恢復(fù)的時(shí)候不會(huì)產(chǎn)生塊斷裂

commit cleanout failures: write disabled

Oracle在COMMIT的時(shí)候,做清除操作時(shí)發(fā)現(xiàn)數(shù)據(jù)庫(kù)的寫操作暫時(shí)被關(guān)閉了。這種情況出現(xiàn)的很少

  

commit cleanouts

在做COMMIT的時(shí)候做塊清除工作的計(jì)數(shù),無(wú)論成功與否計(jì)數(shù)器都會(huì)加1

commit cleanouts successfully completed

COMMIT時(shí)成功完成CLEANOUTS的計(jì)數(shù)。這個(gè)指標(biāo)和上一個(gè)指標(biāo)參考來看,兩個(gè)指標(biāo)應(yīng)該較為接近(這個(gè)指標(biāo)略低一些),如果這兩個(gè)指標(biāo)相差太大,需要分析DB CACHE是否存在過小的問題,或者應(yīng)用中是否經(jīng)常對(duì)大表進(jìn)行大數(shù)據(jù)量的修改操作

consistent changes

數(shù)據(jù)塊提交了UNDO信息成為CR塊的計(jì)數(shù),這個(gè)指標(biāo)說明了系統(tǒng)中CR塊產(chǎn)生的數(shù)量,這個(gè)指標(biāo)越大,越要注意CACHE BUFFER  CHAINS等閂鎖的情況,以及熱塊對(duì)系統(tǒng)性能的影響

consistent gets

一致性讀的計(jì)數(shù),會(huì)話發(fā)出的對(duì)某個(gè)數(shù)據(jù)塊進(jìn)行一致性讀的請(qǐng)求。這個(gè)指標(biāo)不能和consistent  changes混淆,一個(gè)CR塊產(chǎn)生后,可能被多次consistent gets使用,因此這個(gè)指標(biāo)要比前一個(gè)指標(biāo)大的多。

data blocks consistent reads - undo records applied

從UNDO中讀取數(shù)據(jù),形成CR READ。本計(jì)數(shù)器是記錄從UNDO中獲取UNDO記錄的計(jì)數(shù),如果這個(gè)指標(biāo)的值較大,說明對(duì)于某些修改較為頻繁的表的查詢和其他操作也很頻繁,有可能存在熱點(diǎn)表和索引

deferred (CURRENT) block cleanout applications

做延遲塊清除操作的計(jì)數(shù)。在提交的時(shí)候該數(shù)據(jù)塊由于某些原因,某些數(shù)據(jù)塊無(wú)法馬上做塊清除工作,這種情況下,這個(gè)數(shù)據(jù)塊就會(huì)做延遲塊清除,延遲塊清除操作可能在下次該數(shù)據(jù)塊被查詢的時(shí)候進(jìn)行,這種情況也導(dǎo)致了有時(shí)候我們會(huì)看到我們做SELECT操作的時(shí)候也會(huì)產(chǎn)生大量的REDO

dirty buffers inspected

當(dāng)某個(gè)會(huì)話在LRU鏈的冷端開始查找空閑的數(shù)據(jù)塊,查到一個(gè)臟塊,這個(gè)指標(biāo)就會(huì)被增加,如果在單位時(shí)間內(nèi)該指標(biāo)較大,說明LRU鏈的冷端存在較多的臟塊。這種情況的出現(xiàn)有幾種可能:

  

l          系統(tǒng)中的贓塊數(shù)量十分巨大,而且DBWR的寫入速度不足,從而導(dǎo)致DBWR無(wú)法盡快將這些臟塊寫入硬盤

  

l          部分BUFFER 特別熱,并且被更改的頻率特別高,從而造成LRU鏈的尾端存在大量這樣的塊

  

l          本系統(tǒng)是一個(gè)以DML為主的系統(tǒng),數(shù)據(jù)塊的變更十分頻繁

  

碰到這種情況,可以關(guān)注一下dbwr的性能,并且關(guān)注一下DB  CACHE的命中率及cache buffer chains等閂鎖的情況

enqueue waits

等待各種鎖的計(jì)數(shù)

exchange deadlocks

當(dāng)進(jìn)行兩個(gè)BUFFER交換的時(shí)候,發(fā)生內(nèi)部死鎖的計(jì)數(shù)。索引掃描是導(dǎo)致這種交換的唯一因素,如果改指標(biāo)較高,可以檢查是否存在十分熱的索引(可以通過BUFFER BUSY  WAITS分析來定位)

free buffer inspected

從LRU隊(duì)列的尾部掃描可重用的BUFFER的時(shí)候跳過的BUFFER的數(shù)量。

  

global cache freelist waits

當(dāng)ping一個(gè)buffer的時(shí)候由于所有的lock element都被使用而引起的等待。

global lock convert time

同步全局鎖的轉(zhuǎn)換時(shí)間(單位是10ms),這個(gè)指標(biāo)較高說明全局鎖沖突較為嚴(yán)重,需要檢查cluster  interconnect的性能

hot buffers moved to head of LRU

當(dāng)一個(gè)熱塊到達(dá)LRU隊(duì)列的尾部的時(shí)候,ORACLE自動(dòng)會(huì)把這個(gè)塊移動(dòng)到LRU隊(duì)列的頭上,以便于使之能夠繼續(xù)被使用。每發(fā)生一次這樣的操作,這個(gè)計(jì)數(shù)就加一,值得注意的是,從8i開始,LRU的算法發(fā)生了變化,通過引入TCH計(jì)數(shù)來確定熱塊,而不是通過將熱塊在LRU鏈上移動(dòng)來保證熱塊不被過早的換出。如果熱塊存在于LRU鏈的尾部,掃描的時(shí)候發(fā)現(xiàn)了熱塊,會(huì)主動(dòng)跳過,從而保證熱塊不被過早的重用

  

immediate (CURRENT) block cleanout applications

獲取BUFFER(GET BUFFER)后,立即進(jìn)行記錄清除操作的計(jì)數(shù)。

leaf node splits

當(dāng)INSERT發(fā)生后,導(dǎo)致索引葉節(jié)點(diǎn)分裂的次數(shù),一般來說對(duì)于插入較為頻繁的系統(tǒng),這個(gè)指標(biāo)一般會(huì)比較高,除非出現(xiàn)葉節(jié)點(diǎn)熱塊較為嚴(yán)重的現(xiàn)象,一般來所不需要特別關(guān)注該指標(biāo)

logons current

當(dāng)前登錄數(shù)據(jù)庫(kù)的計(jì)數(shù)

opened cursors current

當(dāng)前的Open CURSORS的數(shù)量

opens of replaced files

文件由于不在打開文件緩沖中而重新打開的計(jì)數(shù)。每個(gè)Oracle會(huì)話都有一個(gè)文件打開緩沖區(qū),保持部分打開的數(shù)據(jù)文件的句柄,以避免重復(fù)打開文件

parse count (hard)

硬分析的統(tǒng)計(jì)值,該值需要和parse count  (total)對(duì)比來看硬分析的比例。

parse count (soft)

軟分析的統(tǒng)計(jì)值

parse count (total)

發(fā)生的parse call的總數(shù)

parse time cpu

PARSE消耗的CPU的統(tǒng)計(jì),單位是10毫秒

parse time elapsed

PASE的持續(xù)時(shí)間,單位是10毫秒。這個(gè)指標(biāo)減去parse time cpu就是parse中等待的時(shí)間。如果parse time cpu占整個(gè)parse time elapsed的比例較低,說明parse中的等待時(shí)間過長(zhǎng),可能共享池存在性能問題,需要進(jìn)行分析

physical reads direct

直接物理讀的數(shù)量。讀的時(shí)候不經(jīng)過BUFFER。一般發(fā)生這種操作的情況有:排序操作、并行查詢操作的SLAVE或者預(yù)讀

physical writes direct

直接寫的數(shù)量,不經(jīng)過BUFFER,直接寫入。一般發(fā)生這種操作的情況有:

  

l          直接裝載操作,比如CREATE TABLE AS SELECT

  

l          并行DML操作

  

l          排序操作中的臨時(shí)表空間寫入

  

l          寫入沒有緩沖的LOB字段

physical writes non checkpoint

非CHECKPOINT引起的物理寫。物理寫的發(fā)生情況包括CHECKPOINT或者無(wú)足夠的空閑BUFFER可用,或者DBWR超時(shí)等,一般情況下這個(gè)指標(biāo)會(huì)超過physical  writes的一半以上,除非是CHECKPOINT十分頻繁的系統(tǒng)。如果該指標(biāo)占physical writes的比重比較少,應(yīng)該進(jìn)行分析

pinned buffers inspected

當(dāng)一個(gè)用戶進(jìn)程掃描REPLACEMENT列表,尋找一個(gè)可重用的BUFFER的時(shí)候,發(fā)現(xiàn)一個(gè)冷塊被PIN了或者有一個(gè)PIN請(qǐng)求的等待事件。這種情況很少發(fā)生,因?yàn)槔鋲K很少會(huì)被PIN。如果平均每秒該指標(biāo)值較大,需要進(jìn)行分析

queries parallelized

并行查詢執(zhí)行的次數(shù)統(tǒng)計(jì)

recursive cpu usage

非用戶調(diào)用的CUP時(shí)間

recovery array read time

做recovery的時(shí)候產(chǎn)生的IO消耗的時(shí)間

recovery array reads

做RECOVERY的時(shí)候產(chǎn)生的IO的次數(shù)

recovery blocks read

做recovery的時(shí)候讀取的數(shù)據(jù)塊的數(shù)量

redo entries

當(dāng)一個(gè)redo信息被拷貝到log buffer的時(shí)候這個(gè)計(jì)數(shù)增加

redo entries linearized

小于等于REDO_ENTRY_PREBUILD_THRESHOLD的redo entries的數(shù)量,這些redo entries可以并發(fā)生成,不需要受閂鎖的限制,但是會(huì)增加CPU的消耗,在多CPU的系統(tǒng)中,這個(gè)值會(huì)比較高

redo buffer allocation retries

當(dāng)申請(qǐng)REDO BUFFER的時(shí)候,重試的次數(shù)。一般來說重試發(fā)生的原因是REDO WRITER還沒完成或者日志切換正在進(jìn)行。如果該指標(biāo)較高,說明REDO  LOG產(chǎn)生的頻率很高,LGWR無(wú)法及時(shí)刷新LOG  BUFFER,可以考慮加大LOG BUFFER的大小。LOG  BUFFER一般可以為幾兆到幾十兆,不過由于很多數(shù)據(jù)庫(kù)版本中存在BUG,因此不建議將LOG BUFFER設(shè)置的過大,一般來說30-40M對(duì)于絕大多數(shù)系統(tǒng)來說都是足夠的了

  

如果是由于等待日志切換,那么可能是存在的問題包括:

  

l           REDO  LOG文件過小

  

l           REDO  LOG IO性能不佳

  

l          數(shù)據(jù)文件的IO性能不佳導(dǎo)致DBWR寫入較慢

  

l          DBWR的數(shù)量太少,導(dǎo)致DBWR的寫入性能不足

redo log space requests

當(dāng)前ACTIVE的日志文件滿了,Oracle必須等待日志切換完成后才能分配REDO LOG磁盤空間,就會(huì)產(chǎn)生這個(gè)等待。如果SGA的大小和日志文件的大小不匹配,并且系統(tǒng)中的COMMIT十分頻繁。當(dāng)日志切換的時(shí),DBWR需要把已經(jīng)提交的臟塊也寫入磁盤,在這些臟塊寫入磁盤完成前,日志切換不能完成。在這種情況下,這個(gè)統(tǒng)計(jì)值會(huì)比較高。

  

如果這個(gè)統(tǒng)計(jì)值較高,建議檢查以下幾個(gè)方面:

  

l           REDO  LOG文件的IO性能是否存在問題,如果log file parallel write的平均耗時(shí)較大,說明REDO LOG的寫性能出現(xiàn)了問題,建議將REDO LOG放到性能更好的磁盤上,或者將REDO LOG文件獨(dú)立存放,避免IO沖突

  

l           LOG  BUFFER的大小是否過小

  

l          應(yīng)用軟件中的提交可能過于頻繁,建議采用批量提交的方式,而不要每條記錄都提交

redo log space wait time

Redo log space requests的等待時(shí)間(單位厘秒),這個(gè)指標(biāo)需要和上一個(gè)指標(biāo)一起看

  

redo size

生成的所有redo的大小,單位是字節(jié)

redo synch time

Redo synch調(diào)用消耗的時(shí)間,單位是10毫秒(厘秒)

redo sync writes

一般來說redo信息生成后,會(huì)被拷貝到log buffer中,并不需要馬上被寫入redo log文件,lgwr會(huì)周期性將這些數(shù)據(jù)寫入redo log文件。不過如果事務(wù)提交了,那么這些redo 信息必須馬上被寫入REDO LOG文件,這個(gè)時(shí)侯redo sync  writes計(jì)數(shù)器會(huì)增加

redo wastage

在把LOG BUFFER數(shù)據(jù)寫入REDO LOG文件的時(shí)候計(jì)算的LOG BUFFER空閑的空間

redo writer latching time

LGWR獲得每個(gè)COPY LATCH的時(shí)間(單位厘秒),如果該指標(biāo)存在問題,需要檢查REDO LOG文件的IO性能以及LOG BUFFER的大小是否足夠,這個(gè)指標(biāo)只有在LOG_SIMULTANEOUS_COPIES  > 0的時(shí)候才有意義

redo writes

LGWR將LOG BUFFER寫入REDO LOG文件的計(jì)數(shù)

remote instance undo block writes

如果遠(yuǎn)程的實(shí)例需要讀取某個(gè)UNDO BLOCK,需要這個(gè)實(shí)例先將這個(gè)“臟的”UNDO BLOCK回寫,這個(gè)計(jì)數(shù)器就會(huì)增加

remote instance undo header writes

和上一個(gè)指標(biāo)類似,只是寫入的是UNDO HEADER

remote instance undo requests

由于要做CR從遠(yuǎn)程的實(shí)例中請(qǐng)求UNDO的數(shù)量,如果這個(gè)指標(biāo)較大,說明RAC中的某些數(shù)據(jù)塊經(jīng)常在實(shí)例間進(jìn)行共享,某個(gè)實(shí)例修改過的數(shù)據(jù)也正在被其他實(shí)例使用,這種情況下需要留意CLUSTER  INTERCONNECT的性能

rollback changes - undo records applied

當(dāng)用戶需要ROLLBACK的時(shí)候,提交的UNDO記錄的數(shù)量,當(dāng)事務(wù)需要回滾時(shí),需要從UNDO中取出數(shù)據(jù),并且提交到已被修改過的數(shù)據(jù)上,這個(gè)計(jì)數(shù)和系統(tǒng)中ROLLBACK的數(shù)量以及每次ROLLBACK的記錄的數(shù)量有關(guān)

rollbacks only - consistent read gets

當(dāng)用戶需要進(jìn)行CR READ的時(shí)候,提交的UNDO記錄的數(shù)量,此時(shí)并沒有BUFFER CLEAR操作發(fā)生。當(dāng)進(jìn)行一致性讀的時(shí)候,也需要從UNDO中取出相關(guān)的數(shù)據(jù),然后生成一個(gè)CR BLOCK,把這些數(shù)據(jù)提交到CR BLOCK上,這個(gè)時(shí)候這個(gè)指標(biāo)就會(huì)增加。

  

rows fetched via callback

CALLBACK函數(shù)返回的記錄數(shù)。該統(tǒng)計(jì)量?jī)H僅用于內(nèi)部DEBUG

session cursor cache count

會(huì)話CURSOR緩沖區(qū)的計(jì)數(shù),只有當(dāng)session_cached_cursors大于0的時(shí)候才有意義,如果這個(gè)值已經(jīng)很接近甚至到達(dá)了參數(shù)中session_cached_cursors的值,那么說明這個(gè)參數(shù)可能需要加大

session cursor cache hits

這個(gè)指標(biāo)也只有當(dāng)session_cached_cursors大于0才有意義,會(huì)話直接從SESSION CURSOR  CACHE中找到某個(gè)SQL的計(jì)數(shù),這個(gè)值可以看出CURSOR CACHE產(chǎn)生的作用,可以將這個(gè)值和parse  count(total)進(jìn)行比較

sorts (disk)

磁盤排序的數(shù)量,如果平均每秒該指標(biāo)的值較高,需要檢查一下PGA_AGGREGATE_TARGET參數(shù)是否設(shè)置過低,或者*_AREA_SIZE是否設(shè)置過?。≒GA手工管理模式)。檢查該指標(biāo)的時(shí)候,同時(shí)應(yīng)該查看一下TEMP表空間的相關(guān)文件的IO性能,如果TEMP表空間文件的IO性能不足,需要加大PGA的配置來減少硬盤排序

sorts (memory)

內(nèi)存排序的統(tǒng)計(jì)

summed dirty queue length

每次寫請(qǐng)求發(fā)生的時(shí)候,臟數(shù)據(jù)塊鏈表的長(zhǎng)度總和除以寫請(qǐng)求的次數(shù),這個(gè)統(tǒng)計(jì)值越大,說明系統(tǒng)中需要回寫的臟塊較多

switch current to new buffer

將當(dāng)前BUFFER移動(dòng)到另外一個(gè)新的BUFFER,原有的BUFFER成為一個(gè)CR BLOCK,這種操作的次數(shù)

table fetch by rowid

通過ROWID訪問表,這種操作一般是通過索引訪問,還有一種情況是SQL直接通過rowid去訪問某個(gè)表。

table fetch continued row

如果訪問某一行數(shù)據(jù),需要訪問多個(gè)BLOCK,這個(gè)計(jì)數(shù)器就會(huì)增加。產(chǎn)生這種情況的一個(gè)很主要的原因是行鏈和行遷移,如果某個(gè)表的PCT_FREE設(shè)置不合理,可能導(dǎo)致UPDATE的時(shí)候產(chǎn)生行遷移,這樣就會(huì)增加這個(gè)計(jì)數(shù)

  

第二種可能性是某一行計(jì)數(shù)的長(zhǎng)度相對(duì)BLOCK SIZE來說過大,這樣一行數(shù)據(jù)被存儲(chǔ)在多個(gè)BLOCK中的機(jī)會(huì)就較大,這種情況下應(yīng)該將這種表存放于更大的BLOCK SIZE的表空間中

  

還有一種可能性就是系統(tǒng)中訪問帶LOB字段的訪問較多,因?yàn)榇蟮腖OB字段一般來說采用獨(dú)立的SEGMENT存放,因此訪問這種數(shù)據(jù)也會(huì)增加這個(gè)統(tǒng)計(jì)值

total file opens

被INSTANCE打開的文件的數(shù)量(包含數(shù)據(jù)文件、控制文件、REDO  LOG等)

transaction rollbacks

被成功回退的事務(wù)的總數(shù)

  

write clones created in background

如果當(dāng)前的BUFFER正在被寫入,那么后臺(tái)進(jìn)程或者前臺(tái)進(jìn)程克隆一個(gè)新的BUFFER,使原來BUFFER的寫入可以繼續(xù)進(jìn)行

  

enqueue conversions

表或者行鎖的轉(zhuǎn)換統(tǒng)計(jì)

enqueue deadlocks

死鎖統(tǒng)計(jì)

enqueue releases

鎖釋放統(tǒng)計(jì)

enqueue requests   

鎖申請(qǐng)統(tǒng)計(jì)

enqueue timeouts

鎖申請(qǐng)超時(shí)統(tǒng)計(jì)

enqueue waits

鎖等待統(tǒng)計(jì)

上述內(nèi)容就是如何進(jìn)行AWR中的主要事件分析,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前題目:如何進(jìn)行AWR中的主要事件分析
當(dāng)前網(wǎng)址:http://bm7419.com/article32/jdcgsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、、動(dòng)態(tài)網(wǎng)站虛擬主機(jī)、企業(yè)建站關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)