深入淺出等待事件和效能診斷02
在oracle 10g中,新增v$session_wait_history檢視記錄的是資料庫的歷史狀態及session的歷史等待資訊等資料,也就是活動session的最近十次的等待事件,同期oracle又推出了ASH新特性,活動session歷史資訊記錄active session history ASH。
ASH以v$session為基礎,每秒鐘取樣一次,取樣工作由oracle 10g新引入的後臺程式mmnl完成,可以檢視v$process檢視或者透過警告日誌來檢視具體的mmnl程式資訊。
Ash功能預設是開啟的,由隱含引數_ash_enable控制
SQL> col ksppinm for a20
SQL> col ksppdesc for a20
SQL> col ksppstvl for a20
SQL> select ksppinm,ksppdesc,ksppstvl from x$ksppi a,x$ksppcv b
2 where a.indx=b.indx and a.ksppinm='_ash_enable';
KSPPINM KSPPDESC KSPPSTVL
-------------------- -------------------- --------------------
_ash_enable To enable or disable TRUE
Active Session samp
ling and flushing
而ash的取樣間隔時間由另一個內部隱含引數決定_ash_sampling_interval
SQL> select ksppinm,ksppdesc,ksppstvl from x$ksppi a,x$ksppcv b
2 where a.indx=b.indx and a.ksppinm='_ash_sampling_interval';
KSPPINM KSPPDESC KSPPSTVL
-------------------- -------------------- --------------------
_ash_sampling_interv Time interval betwee 1000
al n two successive Act
ive Session samples
in millisecs
根據oracle效能和功能的特點,ash頻繁的取樣是否會影響效能,取樣物件能肯定會有影響,但是因為oracle取樣工具是直接訪問的oracle10g內部結構,及其高效的,對於效能的影響也是非常低的。
Ash資訊是在記憶體中滾動的,需要的時候跟回滾段等一樣會被覆蓋,可以透過v$active_session_history檢視來訪問ash記錄的資訊,對於活動的session,每次取樣都會在檢視中記錄一行資訊,這部分記憶體也在sga中分配
SQL> select * from v$sgastat where name like 'ASH%';
POOL NAME BYTES
------------ -------------------------- ----------
shared pool ASH buffers 2097152
生成ash報告可以透過指令碼方式或者oem圖形介面生成,ash報告包括top等待事件,top sql,top session等內容
指令碼方式:執行相應指令碼oracle_homerdbmsadminashrpt.sql然後填寫相應資訊即可在相應目錄下生成一個報告資訊。
AWR自動負載資訊庫
記憶體中記錄的ASH資訊始終是有限的,為了儲存歷史資料,這些資訊最終需要寫入磁碟,這些歷史資訊的儲存,引出了oracle 10g的AWR特性。AWR收集關於該特定資料庫的操作統計資訊和其他統計資訊,oracle以固定時間間隔(預設一個小時)為其所有重要統計資訊和負載資訊執行快照,並將快照儲存在AWR中。這些資訊在AWR中預設保留一週然後被清除。
AWR取樣工作由後臺程式mmon每60分鐘執行一次,ASH資訊也被包含在AWR負載庫中。雖然ASH buffer設計保留1小時資訊,但是經常這個記憶體是不足夠的,當ASH buffer滿了後,後臺程式mmnl將會主動將ash資訊寫出。由於資料量較大,寫出的資料佔取樣資料的10%,透過direct-path insert完成,減少redo生成,從而減少資料庫效能影響。
AWR收集統計資訊的特性statistics_level影響,該引數有3個可選值。
BASIC:AWR統計資訊收集和所有自我調整特性都被關閉
TYPICAL:資料庫收集部分統計資訊,這些資訊為典型的資料庫監控需要,預設設定
ALL:所有可能統計資訊被收集
寫出的比例受隱含引數控制_ash_disk_filter_ratio,預設是10,寫出到AWR負載庫的ASH資訊記錄在AWR的基礎表WRH$_ACTIVE_SESSION_HISTORY(這個表是分割槽表),oracle自動進行清除。AWR記錄的資訊還包括別的方面統計資訊等重要資料,oracle 10g中新增的sysaux表空間儲存awr資訊。用過statspack也可以收集統計資訊,但是無法收集session歷史資訊。
有了AWR資料倉儲後,oracle10g引入了另一個自動資料庫診斷監控程式ADDM,ADDM定期檢查資料庫的狀態,根據內建的專家系統,自動確定潛在的資料庫效能瓶頸,其執行效率很高,幾乎不影響資料庫總體效能。
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057067/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 深入淺出等待事件和效能診斷01事件
- 深入淺出等待事件和效能診斷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記載02
- 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
- 【效能調整】等待事件(一)事件
- 【效能調整】等待事件(二)事件