深入淺出等待事件和效能診斷01
最近都在培訓舞蹈,oracle和os上很久沒有去看了,年底也快忙完了電還是要衝的,還是迴歸oracle世界吧!終於算是初步把eygle的深入淺出全部讀完了,就深入淺出的最後兩章等待事件和sql效能診斷方面記載一二。
資料庫效能瓶頸方面,可能第一反應便是oracle的等待事件,而v$event_name檢視記錄了當前資料庫支援的等待事件及其基本資訊,parameter1,parameter2,parameter3對於不同的等待事件的意思各不相同。
Oracle等待事件分為:既空閒idle等待事件和非空閒non-idle等待事件。空閒等待事件指oracle正等待某種工作,在診斷和最佳化資料庫的時候,不用過多注意,stat$idle_event檢視記錄的則是空閒等待事件。非空閒等待事件專門針對oracle活動,指資料庫任務或應用執行過程中發生的等待,當然這些等待需要關注於 研究調整。
可以透過v$event_name檢視檢視各類等待事件
SQL> col wait_class for a20;
SQL> select wait_class,wait_class#,wait_class_id,count(*) from v$event_name group by wait_class,wait_class#,wait_class_id;
WAIT_CLASS WAIT_CLASS# WAIT_CLASS_ID COUNT(*)
-------------------- ----------- ------------- ----------
Idle 6 2723168908 62
Cluster 11 3871361733 47
Administrative 3 4166625743 46
Scheduler 10 2396326234 2
System I/O 9 4108307767 24
Concurrency 4 3875070507 24
Configuration 2 3290255840 23
Other 0 1893977003 588
Application 1 4217450380 12
Network 7 2000153315 26
User I/O 8 1740759767 17
Commit 5 3386400367 1
12 rows selected
同樣也可以檢視v$system_wait_class檢視獲得各類主要等待事件的等待事件和等待次數資訊
SQL> select * from v$system_wait_class;
WAIT_CLASS_ID WAIT_CLASS# WAIT_CLASS TOTAL_WAITS TIME_WAITED
------------- ----------- -------------------- ----------- -----------
1893977003 0 Other 1468 3654
4217450380 1 Application 2819 86
3290255840 2 Configuration 2 82
3875070507 4 Concurrency 490 2639
3386400367 5 Commit 3306 2420
2723168908 6 Idle 203983 72024430
2000153315 7 Network 46096 37
1740759767 8 User I/O 9609 40303
4108307767 9 System I/O 45639 14443
9 rows selected
V$session和v$session_wait
在關注oracle的效能,這兩個檢視經常被應用,從oracle 10gR1中,v$session中增加了關於等待事件的欄位,實際上也就是把v$session_wait檢視中的所有欄位全部整合到v$session檢視中。V$session中的event,P1TEXT描述具體引數,P1代表十進位制定義的引數,p1raw十六進位制表示的引數值等,又增加了service_name,sql_trace,sql_trace_waits和sql_trace_binds,顯示了當前session連線方式及是否啟用sql_trace跟蹤。由於v$session記錄的是動態資訊,隨著session的生命週期相關,oracle又提供了另一個檢視v$system_event記錄資料庫自啟動以來的所有等待事件資訊。
這裡說一下關於db file scattered read等待事件而查詢相應的session的sql語句,找到問題根本。
select a.sql_text
from v$sqltext a where (a.hash_value,a.address) in (select b.sql_hash_value,sql_address
from v$session b
where b.sid=&sid);
這裡先從v$session_wait找到相關等待事件的sid,然後透過聯合v$session檢視進而獲得v$session檢視的sql_hash_value,sql_address最後聯合v$sqltext找到等待事件的session的sql語句,進而運用10046,sql_trace或autotrace檢視相應的sql語句進而調整。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057059/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入淺出等待事件和效能診斷02事件
- 深入淺出等待事件和效能診斷04事件
- 深入淺出等待事件和效能診斷05事件
- 深入淺出等待事件和效能診斷記載03事件
- 等待事件效能診斷方法事件
- 基於等待事件的效能診斷事件
- 基於等待事件的效能診斷(轉)事件
- 等待事件快速定位診斷事件
- MySQL使用event等待事件進行資料庫效能診斷MySql事件資料庫
- 如何診斷等待事件 enq: HW - contention事件ENQ
- 轉_診斷latch:shared pool等待事件事件
- latch free 等待事件的診斷語句事件
- oracle診斷事件及深入解析10053事件Oracle事件
- db file async I/O submit等待事件的故障診斷MIT事件
- 索引分裂造成的index contention等待事件的診斷索引Index事件
- 我眼中的《深入淺出Oracle-入門、進階、診斷案例》Oracle
- ORACLE診斷事件Oracle事件
- 診斷事件(1)事件
- latch 相關效能問題診斷: latch: row cache objects等待事件導致CPU負載高Object事件負載
- 遭遇cursor:pin x等待事件定位阻塞會話診斷過程事件會話
- Oracle診斷事件列表Oracle事件
- ORACLE診斷事件(zt)Oracle事件
- 深入淺出-redo和undo記載01
- oracle 效能診斷工具Oracle
- Oracle診斷事件列表(轉)Oracle事件
- oracle 事件診斷詳細Oracle事件
- 【效能調整】等待事件(三) 常見等待事件(一)事件
- 【效能調整】等待事件(四) 常見等待事件(二)事件
- ORACLE 10G 等待介面診斷(轉)Oracle 10g
- 案例 - EBS SQL效能診斷SQL
- Oracle效能診斷藝術Oracle
- Oracle所有診斷事件列表eventsOracle事件
- Oracle診斷事件例項(一)Oracle事件
- oracle 10053診斷事件Oracle事件
- ORACLE診斷事件的總結Oracle事件
- 深入淺出React和ReduxReactRedux
- 深入淺出sga和pga章節記載-01
- 【效能調整】等待事件(一)事件