关于Oracle性能分析中 自动工作量资料档案库(AWR)的管理(Oracle10个/11g的新特点) 文平
《Oracle大型数据库系统在AIX/UNIX上的实战详解》集中讨论23: 自动工作量档案(AWR)的手工管理
1 用API管理快照和度量基线数据的
自动工作量资料档案库(AWR) 的管理还可以通过DBMS_WORKLOAD_REPOSITORY 包实现,用来人工创建、删除、修改快照和和度量基线。
1.1手工创建快照
我们可以使用DBMS_WORKLOAD_REPOSITORY的CREATE_SNAPSHOT过程手工抓取AWR快照。
上图中,我们手工创建了快照。这个快照我们可以通过DBA_HIST_SNAPSHOT 视图查询,执行下面的SQL语句,最后一行记录(SNAP_ID为13的快照)就是我们前面产生的快照:
1.2手工删除快照
同样地,我们可以使用DROP_SNAPSHOT_RANGE 过程来删除某个范围的快照。该过程需要被删除快照的起始快照编号和终止快照编号。起始编号和终止编号可以通过DBA_HIST_SNAPSHOT视图查询。 例如,你能删除快照的下列的范围:
在例子中,快照被删除的范围删除是从3到4。与此同时,快照范围3到4这个时间段内的激活会话历史记录(ASH)也将被合并。
1.3快照放置修改
AWR快照的抓取间隔、保留时间等也可手工调整。显然,这个调整将影响Oracle数据库运行效率和诊断精度。
显而易见,AWR快照抓取频率越高,则其反应真实情况的能力也就越强。但从另一个角度来说,其快照占用空间比例会越大,同时抓取的频繁会导致系统性能影响。保留时间的调整同样地,会带来精度上、空间占用上的平衡问题。
DBMS_WORKLOAD_REPOSITORY包中的MODIFY_SNAPSHOT_SETTINGS过程可以用来更改AWR的设置,该过程有如下的关键参数:
Retention:AWR快照存储多长时间
Interval:AWR快照的产生频率
topnsql :包含多少对系统性能高影响的SQL
例如,下面的例子中,我们设置AWR性能快照保留时间为14天(60分钟*24小时*14天)、抓取间隔为一小时(60分钟)、顶级SQL(消耗时间、CPU时间、语法解析时间次数、共享内存使用量、版本计数等方面综合的影响力)最大为150个:
系统当前设置AWR快照抓取设置情况可以通过DBA_HIST_WR_CONTROL 视图查询,例如下面的查询,获得了当前系统的AWR设置情况:
1.4 创建度量基线
度量基线是一组很普通的被抓取的AWR性能快照,只是这组快照将被人为的维护起来,不被自动删除。这组快照将用来在出现性能故障时的对比操作,并籍此找出问题根源。
因此,度量基线一般都是在某种典型时段获得,这个时段中,系统性能处于“典型”状态。创建度量基线使用DBMS_WORKLOAD_REPOSITORY的CREATE_BASELINE过程。该过程主要有如下的三个参数:
start_snap_id:起始快照编号,该编号可以通过DBA_HIST_SNAPSHOT视图获得;
end_snap_id:终止快照编号,该编号可以通过DBA_HIST_SNAPSHOT视图获得;
baseline_name:要创建的度量基线名。
创建前,首先查看当前快照获取情况:
从上面的查询,我们可以看到快照的获取时间段和快照编号。下面创建度量基线“typical-time”:
在这个度量基线中,起始快照16,终止快照26,度量基线名“typical-time”。对于创建好的度量基线,可以通过DBA_HIST_BASELINE视图查询之。下面查询了系统中当前的度量基线:
1.5 删除度量基线
一旦度量基线被创建,则该度量基线所涉及的所有快照将被永久性保持,直到这个度量基线被删除。删除度量基线采用DBMS_WORKLOAD_REPOSITORY包中的DROP_BASELINE 过程。 例如:
在上面的示例中,typical-time是度量基线名,“cascade => FALSE”表明仅度量基线被删除,快照不删。如果将其值设置为true,则快照数据被级连删除。参见下面的示例,该示例采用了级连删除,可以看到,快照也被同步删除了:
《Oracle大型数据库系统在AIX/UNIX上的实战详解》集中讨论23: 自动工作量档案(AWR)的手工管理 文平
未完,待续,
参见:Oracle联机文档中“性能”部分