Oracle awr 快照管理

376 阅读2分钟

这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战

关于 awr 快照策略调整的一些命令

  • 查询快照
select snap_id,
       to_char(begin_interval_time, 'yyyy-mm-dd hh:mi:ss') start_time,
       to_char(end_interval_time, 'yyyy-mm-dd hh:mi:ss') end_time
  from dba_hist_snapshot
 order by snap_id;
  • 手动生成当前快照
exec dbms_workload_repository.create_snapshot();
  • 删除快照
exec dbms_workload_repository.drop_snapshot_range(low_snap_id=>213,high_snap_id=>215);
  • 查看快照生成频率和保留策略
select snap_interval pinlv,retention save from dba_hist_wr_control;
  • 调整awr生成和保留策略(保留10天,每10分钟生产一个)
exec dbms_workload_repository.modify_snapshot_settings(retention=>10*24*60,interval=>10);

interval:将间隔设置为0时,oracle将禁止采用自动和手工快照的机制。
retention:当保存时间设置为0时,oracle将永久地保存这个快照。

关于 awr 基线的一些命令

Oracle 数据库 awr 基线,主要目的为数据库建立已报错的工作负载视图,以便以后用来与其他 awr 快照进行对比。
awr 基线的性能统计信息存放在数据库中,且不会自动删除。
Oracle 数据库有两种类型的基线 固定基线和移动基线。

  • 查看基线
select dbid,
       baseline_id,
       baseline_name,
       to_char(start_snap_time, 'yyyy-mm-dd hh24:mi:ss'),
       to_char(end_snap_time, 'yyyy-mm-dd hh24:mi:ss'),
       expiration,
       creation_time
  from dba_hist_baseline;
  • 手动创建固定基线
exec dbms_workload_repository.create_baseline(start_snap_id => 220,end_snap_id => 221, baseline_name => 'AWR JIXIAN'); 
  • 删除手动创建的固定基线
exec dbms_workload_repository.drop_baseline (baseline_name => 'AWR JIXIAN');
  • 基于时间周期,创建移动基线
BEGIN
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE (
day_of_week => 'MONDAY',
hour_in_day => 0,
duration => 3,
start_time => to_date('&start_date_time','&start_date_time_format'),
end_time => to_date('&end_date_time','&end_date_time_format'),
baseline_name_prefix => 'MONDAY_MORNING',
template_name => 'MONDAY_MORNING',
expiration => 30 );
END;
/

这样会在指定的时间’&start_date_time’ 到 '&end_date_time’期间的每个周一产生一个 AWR 基线
day_of_week:天或者星期,基线在这个时间上重复。Specify one of the following values:(‘SUNDAY’, ‘MONDAY’, ‘TUESDAY’, ‘WEDNESDAY’,‘THURSDAY’, ‘FRIDAY’, ‘SATURDAY’, ‘ALL’)
hour_in_day:0-23,执行基线在这个小时开始。
duration:持续时间(小时数)。
start_time:创建基线的开始时间。
end_time:创建基线的结束时间。
expiration :基线过期的天数。

  • 查询上述创建的活动基线
select template_name,
       template_type,
       start_time,
       end_time,
       day_of_week,
       hour_in_day,
       duration
  from dba_hist_baseline_template;
  • 删除上述移动基线
exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE_TEMPLATE('MONDAY_MORNING');
  • 生成awr基线对比报告
@?/rdbms/admin/awrddrpt.sql