深入淺出等待事件和效能診斷02

dotaddjj發表於2012-01-09

oracle 10g中,新增v$session_wait_history檢視記錄的是資料庫的歷史狀態及session的歷史等待資訊等資料,也就是活動session的最近十次的等待事件,同期oracle又推出了ASH新特性,活動session歷史資訊記錄active session history ASH

ASHv$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 sqltop session等內容

指令碼方式:執行相應指令碼oracle_homerdbmsadminashrpt.sql然後填寫相應資訊即可在相應目錄下生成一個報告資訊。

AWR自動負載資訊庫

記憶體中記錄的ASH資訊始終是有限的,為了儲存歷史資料,這些資訊最終需要寫入磁碟,這些歷史資訊的儲存,引出了oracle 10gAWR特性。AWR收集關於該特定資料庫的操作統計資訊和其他統計資訊,oracle以固定時間間隔(預設一個小時)為其所有重要統計資訊和負載資訊執行快照,並將快照儲存在AWR中。這些資訊在AWR中預設保留一週然後被清除。

AWR取樣工作由後臺程式mmon60分鐘執行一次,ASH資訊也被包含在AWR負載庫中。雖然ASH buffer設計保留1小時資訊,但是經常這個記憶體是不足夠的,當ASH buffer滿了後,後臺程式mmnl將會主動將ash資訊寫出。由於資料量較大,寫出的資料佔取樣資料的10%,透過direct-path insert完成,減少redo生成,從而減少資料庫效能影響。

AWR收集統計資訊的特性statistics_level影響,該引數有3個可選值。

BASICAWR統計資訊收集和所有自我調整特性都被關閉

TYPICAL:資料庫收集部分統計資訊,這些資訊為典型的資料庫監控需要,預設設定

ALL:所有可能統計資訊被收集

寫出的比例受隱含引數控制_ash_disk_filter_ratio,預設是10,寫出到AWR負載庫的ASH資訊記錄在AWR的基礎表WRH$_ACTIVE_SESSION_HISTORY(這個表是分割槽表)oracle自動進行清除。AWR記錄的資訊還包括別的方面統計資訊等重要資料,oracle 10g中新增的sysaux表空間儲存awr資訊。用過statspack也可以收集統計資訊,但是無法收集session歷史資訊。

有了AWR資料倉儲後,oracle10g引入了另一個自動資料庫診斷監控程式ADDMADDM定期檢查資料庫的狀態,根據內建的專家系統,自動確定潛在的資料庫效能瓶頸,其執行效率很高,幾乎不影響資料庫總體效能。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057067/,如需轉載,請註明出處,否則將追究法律責任。

相關文章