设置AWR采样保留策略和采集频率
的采样历史数据默认保留7天,并且默认每1小时收集一次.
当前采样快照保留策略和采集频率可以通过下面的语句进行查询.下面显示的是 7 days and 1 hour
SQL> select to_char(snap_interval,’DD’),to_char(retention,’DD’) FROM dba_hist_wr_control;
TO_CHAR(SNAP_INTER TO_CHAR(RETENTION,
—————— ——————
+00000 01:00:00.0 +00007 00:00:00.0;
我们通过下面的方式来改变设置, 设置快照采集时间间隔为每 20 分钟一次 保留2天的历史数据. 参数指定的都是分钟.
begin
?dbms_workload_repository.modify_snapshot_settings (
?interval => 20,
?retention => 2*24*60
?);
?end;
AWR相关的表
元数据 (WRM$)
历史数据 (WRH$)
?AWR 报告相关的建议方法 (WRI$)
?Oracle 11g 新特性的AWR相关信息(WRR$)
Workload Repository Reports
Oracle提供两个主要的脚本生产AWR报告 (awrrpt.sql and awrrpti.sql). 他们的格式和 statspack 报告非常相似, 提供 HTML 和 text 两种格式. 两个报告输出相同的格式但是 awrrpti.sql允许选择单个实例:
?@$ORACLE_HOME/rdbms/admin/awrrpt.sql
?@$ORACLE_HOME/rdbms/admin/awrrpti.sql
下面是经常使用到的脚本:
REPORT NAME? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? SQL Script
Automatic Workload Repository Report? ? ? ? ? awrrpt.sql
Automatic Database Diagnostics Monitor Report addmrpt.sql
ASH Report? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ashrpt.sql
AWR Diff Periods Report? ? ? ? ? ? ? ? ? ? ? awrddrpt.sql
AWR Single SQL Statement Report? ? ? ? ? ? ? awrsqrpt.sql
AWR Global Report? ? ? ? ? ? ? ? ? ? ? ? ? ? awrgrpt.sql
AWR Global Diff Report? ? ? ? ? ? ? ? ? ? ? ? awrgdrpt.sql?
导出和导入 AWR 快照数据
AWR 数据存储在SYSAUX表空间的 WRH$ 和 DBA_HIST 表中 . 如果表增长的非常大,数据保存的时间长会影响数据库性能,因此默认只保留7天的历史数据.
一个比较好的解决方案是把AWR的数据转移到另一资料存储数据库中心, Oracle 提供了两个脚本 awrextr.sql and awrload.sql scripts可以把AWR数据迁移到
?另一个数据库中。在 $ORACLE_HOME/rdbms/admin 目录下可以找到这两个脚本.
– in source db
?SQL> @?/rdbms/admin/awrextr.sql
– in target db
?SQL>@?/rdbms/admin/awrload.sql
或者
?使用 oracle 内部包
dbms_swrf_internal.AWR_EXTRACT
?DBMS_SWRF_INTERNAL.AWR_LOAD
?DBMS_SWRF_INTERNAL.MOVE_TO_AWR
?DBMS_SWRF_INTERNAL.CLEAR_AWR_DBID
清除 AWR
exec dbms_swrf_internal.unregister_database();
dbms_workload_repository.DROP_SNAPSHOT_RANGE;
禁用 Oracle AWR
如果想禁用AWR ,可以使用下面的方式禁用AWR,下面列出了详细的操作步骤.
1,设置 STATISTICS_LEVEL 参数为 BASIC.
?2,执行 CATNOAWR.sql脚本删除相关的awr表. 这个脚本执行存储过程 procedure dbms_swrf_internal.remove_wr_control, 删除wrm$_wr_control 相关的数据和所有AWR 相关的表.
3,执行 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval=>0):
?4,从Metalink上下载 dbms_awr.plb 脚本, 执行 DBMS_AWR.DISABLE_AWR() [脚本参见 Metalink note 436386.1].
?5,如果数据库是通过手工创建的,不是使用DBCA创建的不需要执行 CATAWRTB.sql .
?6,设置_awr_restrict_mode = TRUE?
重建 AWR
Oracle 建议我们重建 AWR,数据保存在 SYSAUX 表空间下:
alter system set sga_target=0 scope=spfile;
?alter system set statistics_level = basic scope=both;
?alter system set cluster_database=false;
shutdown immediate
startup restrict
– in 10g begin —
@?/rdbms/admin/catnoawr.sql
?alter system flush shared_pool;
?@?/rdbms/admin/catsvrm.sql –in the script had calls catawrtb.sql
– in 10g end —
– in 11g begin—
SQL> @?/rdbms/admin/catnoawr.sql
?SQL> alter system flush shared_pool;
?SQL> @?/rdbms/admin/catawr.sql
?SQL> @?/rdbms/admin/utlrp.sql
?sql> @?/rdbms/admin/execsvrm.sql
– in 11g end—
Then re-enable the AWR statistics gathering as required, by setting STATISTICS_LEVEL back to its original value, and restart the instance normally
Tip:
?When SYSAUX tablespace is keep growing,you can check the V$SYSAUX_OCCUPANTS View to find out who/what is occupying space in SYSAUX.