1.查看当前的AWR保存策略
select * from dba_hist_wr_control;
860524039,+00 01:00:00.000000,+07 00:00:00.000000,DEFAULT
AWR配置都是通过dbms_workload_repository包进行配置
exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
select * from sys.wrh$_active_session_history
exec WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id => 32, dbid => 3310949047);
exec dbms_workload_repository.create_baseline (56,59,'apply_interest_1')
exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1', cascade => FALSE);
3.生产AWR报告
$ORACLE_HOME/rdbms/admin/awrrpt.sql
4.1 Snapshots( 快照)
前面操作报表生成时,snap这个关键字已经出现过多次了,想必你对它充满了疑惑,这个东西是哪来的咋来的谁让它来的呢?事实上,Snap是Snapshot的简写,这正是AWR在自动性方面的体现,虽然你没有创建,但是AWR自动帮你创建了(当然也可以手动创建snapshot),并且是定时(每小时)创建,定期清除(保留最近7天)。
Snapshots 是一组某个时间点时历史数据的集合,这些数据就可被ADDM(Automatic Database Diagnostic Monitor)用来做性能对比。默认情况下,AWR能够自动以每小时一次的频率生成Snapshots性能数据,并保留7天,,如果需要的话,DBA可以通过DBMS_WORKLOAD_REPOSITORY过程手动创建、删除或修改snapshots。
- 提示:调用DBMS_WORKLOAD_REPOSITORY包需要拥有DBA权限。
4.1.1 手动创建Snapshots
手动创建Snapshots,通过DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT过程,例如:
SQL> exec dbms_workload_repository.create_snapshot();
- PL/SQL procedure successfully completed.
然后可以通过DBA_HIST_SNAPSHOT 视图查看刚刚创建的Snapshots信息。
4.1.2 手动删除Snapshots
删除Snapshots是使用DBMS_WORKLOAD_REPOSITORY包的另一个过程:DROP_SNAPSHOT_RANGE,该过程在执行时可以通过指定snap_id的范围的方式一次删除多个Snapshots,例如:
SQL> select count(0) from dba_hist_snapshot where snap_id between 7509 and 7518;
COUNT(0)
----------
10
SQL>