October 21 2014

DBMS_WORKLOAD_REPOSITORY

Oracle® Database PL/SQL Packages and Types Reference

DBMS_WORKLOAD_REPOSITORY

file:///F:/360Downloads/兴趣/Linux软件/Oracle11g文档/E11882_01/appdev.112/e25788/d_workload_repos.htm#autoId23

 

 

AWR包含:
一个包:dbms_workload_repository
一个后台进程:MMON
一堆视图和表:dba_hist_*。

select * from DBA_HIST_WR_CONTROL; –这张表描述了awr收集快照的控制信息;
–用下面这个过程可以修改
dbms_workload_repository.modify_snapshot_settings
retention =>–指定一个新的保留日期(单位是分钟) 必须大于一天小于100年 如果是0表示永远保存 可以为空则不修改
–注意:必须大于或等于保留设置的窗口大小的SYSTEM_MOVING_WINDOW基线。如果保留需要不到窗口大小,
–可以用 MODIFY_BASELINE_WINDOW_SIZE过程来调整窗口大小。,
interval => –10分钟到1年 如果为0表示自动和手动快照都被禁用, 如果为空表示还是当前值
topnsql => ,
dbid =>
);

AWR 使用一些表来存储采集的统计数据,所有的表都存储在SYSAUX表空间中的SYS模式下,
并且以 WRM$_* 和 WRH$_* 的格式命名。前一种类型存储元数据信息(如检查的数据库和采集的快照)
后一种类型保存实际采集的统计历史数据。(H 代表”历史数据 (historical)”而 M 代表”元数据 (metadata)”)
在这些表上构建了几种带前缀 DBA_HIST_* 的视图,这些视图可以用来编写您自己的性能诊断工具。
视图的名称直接与表相关;例如,视图 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上构建的。
AWR 历史表采集的信息比 Statspack(Oracle 在10g以前的使用的是 Statspack做性能故障诊断的)多许多,这些信息包括表空间使用率、文件系统使用率、甚至操作系统统计数据。
这些表的完整的列表可以从数据字典中看到

如何手动创建一个快照呢?
dbms_workload_repository.create_snapshot(flush_level => ‘ALL’);–Flush level for the snapshot is either ‘TYPICAL’ or ‘ALL’

SELECT * FROM dba_hist_snapshot  –查看做过的快照  snap_level 1 TYPICAL或 2 ALL

怎么删除一个snapshot
删除Snapshots是使用DBMS_WORKLOAD_REPOSITORY包的另一个过程:DROP_SNAPSHOT_RANGE,
该过程在执行时可以通过指定snap_id的范围的方式一次删除多个Snapshots

dbms_workload_repository.drop_snapshot_range(low_snap_id => , high_snap_id => , dbid => );
–EXECUTE DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(102, 105); 删除之后会发现在dba_hist_snapshot里也会被删除
当snapshots被删除的话,与其关联的ASH记录也会级联删除。

 

baselines  基线

基线就是用于比较的基本线。Baseline中包含指定时间点时的性能数据,可以用来与其它时间点时的状态数据做对比,以分析性能问题。

创建Baseline时,Snapshots是做为其中的一个组成部分存在,因此一般来说当AWR自动维护快照时,
如果定义过baseline,与baseline相关的快照不会被删除,即使是过期的快照,这样就相当于手动保留了一份统计数据的历史信息,
DBA可以在适当的时间将其与现有的快照进行对比,以生成相关的统计报表。

怎么创建一个Baseline

dbms_workload_repository.create_baseline(start_snap_id => ,–为基线开始的快照序列号 也可以用start_time
end_snap_id => ,–为基线结束的快照序列号   也可以用end_time
baseline_name => ,–基线的名字
dbid => ,–数据库id
expiration => )

EXEC dbms_workload_repository.create_baseline(start_snap_id => 5,end_snap_id => 6, baseline_name => ‘base1’ )

EXEC dbms_workload_repository.create_baseline(start_time => to_date(‘2014-10-13 05:00:00′,’yyyy-mm-dd  hh24:mi:ss’),end_time => to_date(‘2014-10-13 06:00:00′,’yyyy-mm-dd  hh24:mi:ss’), baseline_name => ‘base2’ )

怎么删除呢
dbms_workload_repository.drop_baseline(baseline_name => , cascade => , dbid => ) 可以级联删除snapshot
dbms_workload_repository.create_baseline_template(start_time => ,
end_time => ,
baseline_name => ,
template_name => ,
expiration => ,
dbid => )
1、创建一个执行一次的baseline template,把2013年6月1日上午9点到下午5点的AWR快照数据做成baseline。

begin
dbms_workload_repository.create_baseline_template(
start_time=>to_date(‘2013-06-01 09:00:00′,’yyyy-mm-dd hh24:mi:ss’),
end_time=>to_date(‘2013-06-01 17:00:00′,’yyyy-mm-dd hh24:mi:ss’),
baseline_name=>’baseline_june’,
template_name=>’baseline_tmplt_single’,
expiration=>30
);
end;
/
2、创建一个重复执行的baseline template,把每周一的下午6点到晚上12点的AWR快照数据做成baseline。

begin
DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE_TEMPLATE(
day_of_week=>’MONDAY’,
hour_in_day=>18,
duration=>6,
start_time=>sysdate,
end_time=>sysdate+365,
baseline_name_prefix=>’baseline_repeat’,
template_name=>’baseline_templt_repeat’,
expiration=>60
);
end;
/

awrgrpti.sql =》针对RAC库的AWR report。
awrrpt.sql =》针对单实例的AWR report。
awrddrpi.sql => 比较2个不同时间段的AWR报表。

如果CPU高,则看SQL ordered by CPU Time和SQL ordered by Gets。
如果IO等待高,则看SQL ordered by Reads和SQL ordered by Physical Reads (UnOptimized)

 

查找动态性能视图:
select name from v$fixed_table where name like ‘V%SESS%’;

 



Copyright 2019. All rights reserved.

Posted 2014年10月21日 by ucjmh in category "oracle

Leave a Reply

Your email address will not be published. Required fields are marked *