Oracle中AWR的使用
在Oracle中,动态性能视图保存了许多重要的累计统计数据,这些视图对于鉴别数据库性能非常有用。但是当关闭数据库时,动态性能视图中的数据会全部丢失。为了能够随时跟踪数据库性能,或是希望比较数据库变化的性能影响,则需要一个信息库来存储性能数据,由此,AWR(Automatic Workload Repository,自动工作量资料库)应运而生。
AWR自动收集并保存与问题的检测和调优有关的数据库性能统计数据,它是新的数据库自调优机制的核心。AWR生成关键的性能数据的快照,并存储在SYSAUX表空间中,各种不同的数据库特性(ADDM,SQL Tuning Advisor等)都是用这些AWR快照中的数据来监控和诊断性能问题。
默认时,AWR每小时捕捉一次性能数据并生成一次快照,这些数据保留8天。如果按照10个并发会话来估计,默认设置大约需要200~300MB的存储空间来保存AWR数据。
(一) 启用AWR
与AWR相关联的参数为statistics_level,只有当该参数的值设定为TYPICAL 或 ALL时,才能启用AWR功能。默认情况下该参数值为TYPICAL,如果通过show parameter statistics_level命令查看该参数值为BASIC,需要通过以下命令修改:
SQL> alter system set statistics level=TYPICAL scope=both;
(二) 快照的管理:
1. 查看AWR快照设置:
SQL> select dbid,snap_interval,retention from dba_hist_wr_control;
其中dbid为数据库的标识,snap_interval为数据库自动生成快照的间隔,retention为快照所保留的时间。
2. 修改AWR快照设置
SQL> begin
dbms_workload_repository.modify_snapshot_settings(
retention => 7200,
interval => 30,
dbid => 1293890055);
end;
其中retention和interval的单位都为分钟。
3. 手动创建快照:
SQL>begin
Dbms_workload_repository.create_snapshot();
End;‘
4. 删除一个范围内的快照:
SQL>begin
Dbms_workload_repository.drop_snapshot_range(
Low_snap_id => 40,
High_snap_id => 60,
dbid => 1293890055);
end;
5. 查看当前在系统内已经建立的snapshot:
SQL> select snap_id,dbid,begin_interval_time,end_interval_time from dba_hist_snapshot;
(三) 基线的管理
1. 查看已经建立的基线:
SQL>select baseline_id,baseline_name,baseline_type,start_snap_id,end_snap_id from dba_hist_baseline;
或者
SQL>select baseline_id,baseline_name,baseline_type,start_snap_time,end_snap_time from dba_hist_baseline;
2. 创建基线:
SQL> begin
dbms_workload_repository.create_baseline(
start_snap_id => 7,
end_snap_id => 9,
baseline_name => 'normal baseline');
end;
其中start_snap_id为基线的起始快照序列号,end_snap_id为基线的结束快照序列号,baseline_name为基线的名称。
3. 删除基线:
SQL> begin
dbms_workload_repository.drop_baseline(
baseline_name => 'normal baseline',
cascade => FALSE,
dbid => 1293890055);
end;
如果cascade设置为TRUE,则与该基线相关的起止快照也会被一同删除,如果设置为FALSE,则仅仅删除基线。
4. 重命名基线:
SQL> begin
dbms_workload_repository.rename_baseline(
old_baseline_name => 'normal baseline',
new_baseline_name => 'special baseline');
end;
(四) 基线模板的管理
1. 创建单基线模板:
单基线模板创建将来某个固定时间间隔的单个基线。
SQL> begin
dbms_workload_repository.create_baseline_template(
start_time => to_date('2011-DEC-05 22:00', 'YYYY-MON-DD HH24:MI'),
end_time => to_date('2011-DEC-06 02:00', 'YYYY-MON-DD HH24:MI'),
baseline_name => 'test_baseline1',
template_name => 'test_template1',
expiration => 30);
end;
其中expiration参数为基线的有效期。
2. 创建重复基线模板:
重复基线模板创建重复的基线,其时间间隔在一个时间段上重复。
SQL> begin
dbms_workload_repository.create_baseline_template(
day_of_week => 'FRIDAY',
hour_in_day => 0,
duration => 5,
start_time => SYSDATE,
end_time => ADD_MONTHS(SYSDATE, 6),
baseline_name_prefix => 'friday_morning_bl_',
template_name => 'friday_morning_tp',
expiration => NULL);
end;
(五) AWR报告
1. 创建AWR报告
Oracle提供了一个脚本awrrpt.sql(位于$ORACLE_HOME/rdbms/admin目录中)来生成关于AWR工具收集的统计数据的概要报告。
SQL>@$ORACLE_HOME/rdbms/admin/awrrpt.sql
Ø 指定报告类型:html或者text。
Enter value for report_type: text
Ø 指定要显示的快照的天数
Enter value for num_days: 7
Ø 指定AWR报告的报告范围,即开始的快照ID和结束的快照ID。
Enter value for begin_snap: 258
Enter value for end_snap: 268
Ø 指定AWR报告的报告名。
Enter value for report_name: /tmp/awrrpt_1_258_268.txt
2. 为单条SQL语句创建AWR报告
Oracle提供了一个脚本awrsqrpt.sql(位于$ORACLE_HOME/rdbms/admin目录中)来生成单条SQL语句的统计数据。
SQL>@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
Ø 指定报告类型:html或者text。
Enter value for report_type: text
Ø 指定要显示的快照的天数
Enter value for num_days: 7
Ø 指定AWR报告的报告范围,即开始的快照ID和结束的快照ID。
Enter value for begin_snap: 258
Enter value for end_snap: 268
Ø 指定SQL_ID
Enter value for sql_id: 6za2qbmbydaqh
Ø 指定AWR报告的报告名。
Enter value for report_name: /tmp/awrsqrpt_1_258_268.txt
转载于:http://blog.itpub.net/26194851/viewspace-711469/