AWR 實質上是 Oracle 的一個內置工具,它自動採集與性能相關的統計數據,並從那些統計數據中導出性能量度值,以跟蹤潛在的問題。與 Statspack 不同,快照由一個稱爲 MMON 的新的後臺進程及其從ht進程自動地每小時採集一次。爲了節省空間,採集的數據在 7 天后自動清除。快照頻率和保留時間都可以由用戶修改。它產生兩種類型的輸出:文本格式(即TXT格式,類似於 Statspack 報表的文本格式但來自於 AWR 信息庫)和默認的 HTML 格式(擁有到部分和子部分的所有超鏈接).
一.AWR的配置與應用
查詢當前的AWR保存策略,默認是每1小時產生一個SNAPSHOT,保留7天,用戶要根據自己的需要設定保存策略。
SYS>select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSYS
860524039 +0001:00:00.000000 +07 00:00:00.000000 DEFAULT
AWR配置都是通過dbms_workload_repository包進行配置
1.調整AWR產生snapshot的頻率和保留策略.如將收集間隔時間改爲30 分鐘一次。並且保留5天時間(注:單位都是爲分鐘):
SYS>execdbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>5*24*60);
2.關閉AWR,把interval設爲0則關閉自動捕捉快照
SYS>execdbms_workload_repository.modify_snapshot_settings(interval=>0);
3.手工創建一個快照
SYS>exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
4. 查看快照
SYS>select * from sys.wrh$_active_session_history;
SYS> select min(snap_id),max(snap_id),dbid from sys.wrh$_active_session_history group by dbid;
5.手工刪除指定範圍的快照
SYS>execDBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id=> 32, dbid => 3110377062);
6.創建baseline
SYS>exec dbms_workload_repository.create_baseline (54,58,'apply_interest_1');
7.刪除baseline
SYS>execDBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1',cascade => FALSE);
二.AWR數據的導出和遷移
1.導出AWR數據並遷移到其它數據庫
SYS>exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir =>'DIR_BDUMP', bid => 1003, eid => 1013);
2.遷移AWR數據到其他數據庫
SYS>exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME => 'AWR_TEST', dmpfile =>'awr_data.dmp', dmpdir => 'DIR_BDUMP');
3.把AWR數據轉移到SYS模式中:
SYS>exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');
三. 生成指定報表
1.生成AWR報告
SYS>@$ORACLE_HOME/rdbms/admin/awrrpt.sql;
2.生成指定時間的ASH報表
SYS>@$ORACLE_HOME/rdbms/admin/ashrpt.sql;
3.生成指定時間指定實例的ASH報表
SYS>@$ORACLE_HOME/rdbms/admin/ashrpti.sql;
腳本中"i"表示實例.