Oracle生成awr報告
一、手工生成awr報告的方法
1、相應權限用戶登錄(sysdba)后,在$ORACLE_HOME/rdbms/admin
2、在sqlplus里執行@?/rdbms/admin/awrrpt.sql,按照提示操作。
3、生成AWR報告說明
單實例:@$ORACLE_HOME/rdbms/admin/awrrpt.sql
RAC:@$ORACLE_HOME/rdbms/admin/awrgrpt.sql
生成RAC特定實例:@$ORACLE_HOME/rdbms/admin/awrrpti.sql
生成RAC多個實例的報告:@$ORACLE_HOME/rdbms/admin/awrgrpti.sql
生成SQL的AWR報告:@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
生成特定實例的SQL的awr報告:@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql
生成單實例時段對比報告:@$ORACLE_HOME/rdbms/admin/awrddrpt.sql
生成RAC時段對比報告:@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql
生成特定實例的時段對比報告:@$ORACLE_HOME/rdbms/admin/awrddrpi.sql
生成RAC特定多實例時段對比報告:@$ORACLE_HOME/rdbms/admin/awrgdrpi.sql
注意:目錄一定要有Oracle權限。
二、AWR報告管理
1.查看當前的AWR保存策略、設置:快照間隔、保存時間。
SQL> col SNAP_INTERVAL format a20
SQL> col RETENTION format a20
SQL> select * from dba_hist_wr_control;
2、調整AWR配置,修改快照間隔和保存時間等。AWR配置都是通過dbms_workload_repository包進行配置。
調整AWR產生snapshot的頻率和保留策略, 如將收集間隔時間改為30 分鐘一次。并且保留5天時間(單位都是分鐘):
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
3、關閉AWR報告
關閉AWR,把interval設為0則關閉自動捕捉快照
SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>0);
4、手工創建一個快照
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
5、查看快照
SQL> select * from sys.wrh$_active_session_history
6、手工指定刪除快照的范圍
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 973, high_snap_id => 999, dbid => 262089084);
7、創建baseline,保存這些數據用于將來分析和比較
SQL> exec dbms_workload_repository.create_baseline(start_snap_id => 1003, end_snap_id => 1013, 'apply_interest_1');
8、刪除baseline
SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => 'apply_interest_1', cascade => FALSE);
9、將AWR數據導出并遷移到其它數據庫以便于以后分析
SQL> exec DBMS_SWRF_INTERNAL.AWR_EXTRACT(dmpfile => 'awr_data.dmp', mpdir => 'DIR_BDUMP', bid => 1003, eid => 1013);
10、遷移AWR數據文件到其他數據庫
exec DBMS_SWRF_INTERNAL.AWR_LOAD(SCHNAME => 'AWR_TEST', dmpfile => 'awr_data.dmp', dmpdir => 'DIR_BDUMP');
其中把AWR數據轉移到SYS模式中:SQL> exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST');
11、生成第一份awr報告
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (flush_level=>'ALL');