上次我们介绍了:Oracle数据库中AWR的组成及工作原理的详细介绍,本文我们详细介绍一下AWR的使用,接下来就让我们来一起了解一下这部分内容。
AWR由ORACLE自动产生,但是也可以通过DBMS_WORKLOAD_REPOSITORY包来手工创建、删除和修改。可以使用desc命令查看该包中的过程。下面只介绍几个常用的:
1.手工创建一个快照
- SQL> select count(*) from wrh$_active_session_history;
- COUNT(*)
- ----------
- 317
- SQL> begin
- 2 dbms_workload_repository.create_snapshot();
- 3 end;
- 4 /
- PL/SQL 过程已成功完成。
- SQL> select count(*) from wrh$_active_session_history;
- COUNT(*)
- ----------
- 320
2.手工删除指定范围的快照
- SQL> select * from wrh$_active_session_history where snap_id = 96;
- SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME
- ---------- ---------- --------------- ---------- ----------------------------
- 96 1160732652 1 236930 06-10月-07 11.26.04.562 上午
- 96 1160732652 1 236930 06-10月-07 11.26.04.562 上午
- 96 1160732652 1 236930 06-10月-07 11.26.04.562 上午
- SQL> begin
- 2 dbms_workload_repository.drop_snapshot_range(low_snap_id => 96, high_snap_id => 96, dbid => 1160732652);
- 3 end;
- 4 /
- PL/SQL 过程已成功完成。
- SQL> select * from wrh$_active_session_history where snap_id = 96;
- 未选定行
3.修改采集时间和统计信息保留时间
- PROCEDURE MODIFY_SNAPSHOT_SETTINGS
- 参数名称类型输入/输出默认值?
- ------------------------------ ---
- RETENTION NUMBER IN DEFAULT
- INTERVAL NUMBER IN DEFAULT
- TOPNSQL NUMBER IN DEFAULT
- DBID NUMBER IN DEFAULT
通过修改retention参数可以修改awr信息的保留期限。默认的是七天,最小的值是一天。如果把retention设置为零,自动清除就关闭了.如果awr发现sysaux空间不够,它通过删除那些最老部分的快照来重新使用这些空间.同时,也会给dba发一条警告,告诉sysaux空间不够了(在警告日志中)。
通过修改interval参数可以修改awr信息的采样频率。最小的值是10分钟,默认的是60分钟.典型的值是10,20,30,60,120等等。把interval设为0则关闭自动捕捉快照.如将收集间隔时间改为30 分钟一次。并且保留5天时间(注:单位都是为分钟):
- SQL> select *from dba_hist_wr_control;
- DBID SNAP_INTERVAL RETENTION TOPNSQL
- ---------- ------------------ -------------------------- -----------
- 1160732652 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
- SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
- PL/SQL 过程已成功完成。
- SQL> SELECT *from dba_hist_wr_control;
- DBID SNAP_INTERVAL RETENTION TOPNSQL
- ---------- ------------------- ------------------------- -----------
- 1160732652 +00000 00:30:00.0 +00005 00:00:00.0 DEFAULT
- SQL>
4.设置基线
基线(baseline)是一种机制,这样你可以在重要时间的快照信息集做标记。一个基线定义在一对快照之间,快照通过他们的快照序列号识别.每个基线有且只有一对快照。
一次典型的性能调整实践从采集量度的基准线集合、作出改动、然后采集另一个基准线集合开始。可以比较这两个集合来检查所作的改动的效果。在 AWR 中,对现有的已采集的快照可以执行相同类型的比较。
假定一个名称为 apply_interest 的高度资源密集的进程在下午 1:00 到 3:00 之间运行,对应快照 ID 95 到 98。我们可以为这些快照定义一个名称为 apply_interest_1 的基准线:
- SQL> select *From dba_hist_baseline;
- 未选定行
- SQL> select * from wrm$_baseline;
- 未选定行
- SQL> exec dbms_workload_repository.create_baseline(95, 98, 'apply_interest_1');
- PL/SQL 过程已成功完成。
这一操作将快照从 95 到 98 编号,作为上面指定的基准线的一部分。查看现有的基准线:
- SQL> select *from dba_hist_baseline;
- DBID BASELINE_ID BASELINE_NAME START_SNAP_ID START_SNAP_TIME END_SNAP_ID END_SNAP_TIME
- ---------- ----------- ------------------------- ------------- ------------------------------------- ----------- ------------
- 1160732652 1 apply_interest_1 95 06-10月-07 11.00.05.375 上午 98 06-10月-07 01.44.58.062 下午
- SQL> select *from wrm$_baseline;
- DBID BASELINE_ID BASELINE_NAME START_SNAP_ID END_SNAP_ID
- ---------- ----------- ---------------------------- ------------- -----------
- 1160732652 1 apply_interest_1 95 98
- SQL>
在一些调整步骤之后,我们可以创建另一个基准线 — 假设名称为 apply_interest_2,然后只为那些与这两条基准线相关的快照比较量度。
- SQL> exec dbms_workload_repository.create_baseline(92, 94, 'apply_interest_2');
- PL/SQL 过程已成功完成。
像这样把快照分隔在仅仅几个集合中有助于研究调整对于性能量度的影响。您可以在分析之后使用 drop_baseline() 来删除基准线;快照将保留(也可级联删除)。此外,当清除例程开始删除旧的快照时,与基准线相关的快照不会被清除,从而允许进行进一步的分析。
5.删除基线
如果要删除一个基准线:
- SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'apply_interest_1', cascade=>false);
- PL/SQL 过程已成功完成。
- SQL> select *from wrh$_active_session_history where snap_id in (95,96,97,98);
- SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME
- ---------- ---------- --------------- ---------- -------------------------------
- 95 1160732652 1 235360 06-10月-07 10.56.29.872 上午
- 95 1160732652 1 235230 06-10月-07 10.54.19.857 上午
- 95 1160732652 1 233130 06-10月-07 10.19.19.478 上午
- 95 1160732652 1 232830 06-10月-07 10.14.18.859 上午
- 95 1160732652 1 232250 06-10月-07 10.04.38.481 上午
- 97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
- 97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
- 97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
- 97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
- 97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
- 97 1160732652 1 238600 06-10月-07 12.33.08.420 下午
- SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME
- ---------- ---------- --------------- ---------- -------------------------------
- 97 1160732652 1 238420 06-10月-07 11.50.55.686 上午
- 97 1160732652 1 238230 06-10月-07 11.47.45.687 上午
- 98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
- 98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
- 98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
- 98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
- 98 1160732652 1 239140 06-10月-07 01.42.00.976 下午
- 98 1160732652 1 239130 06-10月-07 01.27.04.161 下午
- 98 1160732652 1 239130 06-10月-07 01.27.04.161 下午
- 98 1160732652 1 239130 06-10月-07 01.27.04.161 下午
- 已选择21行。
- SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'apply_interest_2', cascade=>true);
- PL/SQL 过程已成功完成。
- SQL> select *from wrh$_active_session_history where snap_id in (92,93,94);
- 未选定行
- SQL>
以上就是一些Oracle数据库AWR的使用的详细操作,本文就介绍到这里了,希望本次的介绍能够对您有所收获!
【编辑推荐】