時間:2015-06-28 00:00:00 來源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評論(1)
監(jiān)控oracle的等待事件
select event,
sum(decode(wait_Time, 0, 0, 1)) "Prev",
sum(decode(wait_Time, 0, 1, 0)) "Curr",
count(*) "Tot"
from v$session_Wait
group by event
order by 4;
1 等待事件概述
Oracle的等待事件是衡量oracle運行狀況的重要依據(jù)及指標(biāo).
等待事件的概念是在Oracle7.0.1.2中引入的,大致有100個等待事件。在Oracle 8.0中這個數(shù)目增加到了大約150個,在Oracle8i中大約有200個事件,在Oracle9i中大約有360個等待事件。
主要有兩種類別的等待事件,即空閑(idle)等待事件和非空閑(non-idle)等待事件。
空閑等待事件是指Oracle正等待某種工作,比如用sqlplus登錄之后,但沒有進一步發(fā)出任何命令,此時該session就處于SQL*Net message from/to client等待事件狀態(tài),等待用戶發(fā)出命令,任何的在診斷和優(yōu)化數(shù)據(jù)庫的時候,我們不用過多注意這部分事件。非空閑等待事件專門針對Oracle的活動,指數(shù)據(jù)庫任務(wù)或應(yīng)用運行過程中發(fā)生的等待,這些等待事件是我們在調(diào)整數(shù)據(jù)庫的時候應(yīng)該關(guān)注與研究的。
2? oracle等待事件類型
每一個等待事件都屬于某一類, 下面給出了每一類等待事件的描述.
管理類: administrative
類等待事件是由于DBA的管理命令引起的,這些命令要求用戶處于等待狀態(tài),比如,重建索引。
應(yīng)用程序類:
此類等待事件是由于用戶應(yīng)用程序的代碼引起的(比如:鎖等待).
群集類:Cluster
此類等待事件和真正應(yīng)用群集RAC的資源有關(guān)。(比如:gc cr block busy等待事件).
提交確認(rèn)類:Commit
此類等待事件只包含一種等待事件--在執(zhí)行了一個commit命令后,等待一個重做日志寫確認(rèn)(也就是log file sync).
并發(fā)類:Concurrency
此類等待事件是由內(nèi)部數(shù)據(jù)庫資源引起的,比如閂鎖。
配置類:Configuration
此類等待事件是由數(shù)據(jù)庫或?qū)嵗牟划?dāng)配置造成的,比如,重做日志文件尺寸太小,共享池的大小等。
空閑類:Idle
此類等待事件意味著會話不活躍,等待工作。比如,sql * net messages from client。
網(wǎng)絡(luò)類:Network
和網(wǎng)絡(luò)環(huán)境相關(guān)的一些等待事件,比如sql* net more data to dblink。
Other
此類等待事件通常比較少見。
調(diào)度類:Scheduler
Resource Manager related waits (for example, 'resmgr: become active')
系統(tǒng)I/O類:System I/O
此類等待事件通過是由后臺進程的I/O操作引起的,比如DBWR等待,db file paralle write。
用戶I/O類:User I/O
此類等待事件通常是由用戶I/O操作引起的,比如db file sequential read。
3 等待事件詳細(xì)描述
1, db file scattered read (DB文件分散讀取)
這種情況通常與全表掃描相關(guān). 當(dāng)數(shù)據(jù)庫進行全表掃描時, 基于性能的考慮, 數(shù)據(jù)會分散(scattered)讀入buffer cache. 如果這個等待事件比較顯著, 可能考慮查看對應(yīng)的表有沒有創(chuàng)建合適的索引.
然而這個等待事件并不一定就意味著性能低下, 在某些條件下oracle會主動使用全表掃描來替換索引掃描以提高性能, 這和訪問的數(shù)據(jù)量有關(guān), 在CBO下oracle會進行更為智能的選擇, RBO下oracle更傾向于使用索引.
因為全表掃描到內(nèi)存的數(shù)據(jù)塊被置于LRU鏈表的冷端, 所以這些數(shù)據(jù)塊將可能在較短時間內(nèi)被置換出物理內(nèi)存, 為了避免反復(fù)物理IO, 對頻繁訪問的較小的數(shù)據(jù)表,可以選擇把他們cache到內(nèi)存中.
當(dāng)這個等待時間比較顯著時, 可以結(jié)合v$session_longops動態(tài)性能視圖來進行診斷, 該視圖中記錄了長時間(運行時間超過6秒)運行的事務(wù), 可能很多是全表掃描操作.
Column
Datatype
Description
SID
NUMBER
Session identifier
SERIAL#
NUMBER
Session serial number
OPNAME
VARCHAR2(64)
Brief description of the operation
TARGET
VARCHAR2(64)
The object on which the operation is carried out
TARGET_DESC
VARCHAR2(32)
Description of the target
SOFAR
NUMBER
The units of work done so far
TOTALWORK
NUMBER
The total units of work
UNITS
VARCHAR2(32)
The units of measurement
START_TIME
DATE
The starting time of operation
LAST_UPDATE_TIME
DATE
Time when statistics last updated
TIME_REMAINING
NUMBER
Estimate (in seconds) of time remaining for the operation to complete
ELAPSED_SECONDS
NUMBER
The number of elapsed seconds from the start of operations
CONTEXT
NUMBER
Context
MESSAGE
VARCHAR2(512)
Statistics summary message
USERNAME
VARCHAR2(30)
User ID of the user performing the operation
SQL_ADDRESS
RAW(4)
Used with the value of the SQL_HASH_VALUE column to identify the SQL statement associated with the operation
SQL_HASH_VALUE
NUMER
Used with the value of the SQL_ADDRESS column to identify the SQL statement associated with the operation
QCSID
NUMBER
Session identifier of the parallel coordinator
#p#副標(biāo)題#e#
2, db file sequential read(DB 文件順序讀取)
這一事件通常顯示與單個數(shù)據(jù)塊相關(guān)的讀取操作, 比如對索引塊的讀取. 如果這個等待事件比較顯著, 可能表示在多表連接中, 表的鏈接順序存在問題, 可能沒有正確的使用驅(qū)動表; 或者可能說明不加選擇地進行索引.
3, free buffer (釋放緩沖區(qū))
這個等待事件表明系統(tǒng)正在等待內(nèi)存中的可用空間,這說明當(dāng)前Buffer 中已經(jīng)沒有Free 的內(nèi)存空間。Free Buffer 等待可能說明DBWR 的寫出速度不夠,或者磁盤存在嚴(yán)重的競爭,可以需要考慮增加檢查點、使用更多的DBWR 進程,或者增加物理磁盤的數(shù)量,分散負(fù)載,平衡IO。
4, buffer busy(緩沖區(qū)忙)
該等待事件表示正在等待一個以unshareable方式使用的緩沖區(qū),或者表示當(dāng)前正在被讀入buffer cache。一般來說Buffer Busy Wait不應(yīng)大于1%。檢查緩沖等待統(tǒng)計部分(或V$WAITSTAT),看一下等待是否位于段頭(Segment Header)。如果是,可以考慮增加自由列表(freelist,對于Oracle8i DMT)或者增加freelist groups(在很多時候這個調(diào)整是立竿見影的,在8.1.6之前,這個freelists參數(shù)不能動態(tài)修改;在8.1.6及以后版本,動態(tài)修改 feelists需要設(shè)置COMPATIBLE至少為8.1.6).
This view lists block contention statistics. This table is only updated when timed statistics are enabled.
Column
Datatype
Description
CLASS
VARCHAR2(18)
Class of the block
COUNT
NUMBER
Number of waits by this OPERATION for this CLASS of block
TIME
NUMBER
Sum of all wait times for all the waits by this OPERATION for this CLASS of block
select * from V$WAITSTAT
CLASS
COUNT
TIME
data block
318671
91287
undo header
50352
1172
undo block
28
1
segment header
10
5
file header block
8
1
1st level bmb
3
0
bitmap index block
0
0
system undo block
0
0
system undo header
0
0
unused
0
0
bitmap block
0
0
save undo header
0
0
save undo block
0
0
sort block
0
0
free list
0
0
3rd level bmb
0
0
2nd level bmb
0
0
extent map
0
0
如果這一等待位于undo header,可以通過增加回滾段(rollback segment)來解決緩沖區(qū)的問題。如果等待位于undo block上,
關(guān)鍵詞標(biāo)簽:ORACLE等待事件監(jiān)控
相關(guān)閱讀
熱門文章 Oracle中使用alter table來增加,刪除,修改列的語法 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 誤刪Oracle數(shù)據(jù)庫實例的控制文件 為UNIX服務(wù)器設(shè)置Oracle全文檢索
人氣排行 oracle中使用SQL語句修改字段類型-oracle修改SQL語句案例 Oracle中使用alter table來增加,刪除,修改列的語法 ORACLE SQL 判斷字符串是否為數(shù)字的語句 ORACLE和SQL語法區(qū)別歸納(1) oracle grant 授權(quán)語句 ORACLE修改IP地址后如何能夠使用 如何加速Oracle大批量數(shù)據(jù)處理 Oracle刪除表的幾種方法