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');