默認情況下,Oracle每隔一小時會自動產生一個快照,保存最近8天的快照。
我們可以通過如下語句獲得產生快照的時間間隔和保存的天數:
SYS@orcl(lx15)> select SNAP_INTERVAL,RETENTION from dba_hist_wr_control; SNAP_INTERVAL RETENTION --------------------------------------------------------------------------- --------------------------------------------------------------------------- +00000 01:00:00.0 +00008 00:00:00.0可以通過如下語句修改這兩個值(以分鐘為單位):
exec dbms_workload_repository.modify_snapshot_settings(interval => 30, retention = > 10*24*60);當然,你也可以隨時手動產生一個快照:
exec dbms_workload_repository.create_snapshot;
@?/rdbms/admin/awrrpt.sql還有一種方法是直接調用ORALCE的包,這個方法適合用在寫自動獲取腳本工具的場景,如下所示:
set pagesize 0 set linesize 121 spool d:\awr_commit_frequently.html select output from table(dbms_workload_repository.awr_report_html(977587123,1,1920,1921)); spool off 注: DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML( l_dbid IN NUMBER, l_inst_num IN NUMBER, l_bid IN NUMBER, l_eid IN NUMBER, l_options IN NUMBER DEFAULT 0) RETURN awrrpt_text_type_table PIPELINED;