Oracle10g的AWR性能优化工具介绍

AWR( Automatic Workload Repository ) Oracle 10g 新提供的收集数据库 统计信息的工具。它主要包括 AWR 内存区 , 历史数据存储文件和 ASH 等部件。

AWR 报告的主要内容包括以下几部分 ,

前言部分 : 这是 AWR 报告的第一段 , 用于描述环境包括数据库名 , 数据库版本 , 是否为 RAC 节点 , 快照报告的采集时间等。

综述部分 : 包含等待事件段 ,Load Profile , 实例效率统计段 ,Shared Pool 统计段 ,Cache Size , 其中最重要的是等待事件段 , 它告诉我们在快照时间内数据库遇到哪些性能瓶颈 , 它们将是性能调整或问题诊断的主要候选对象。以下 Top Time Event 数据摘自我的数据库产生的 AWR 报告。

 

Event

Waits

Time(s)

Avg Wait(ms)

% Total Call Time

Wait Class

CPU time

 

17,306

 

99.6

 

db file scattered read

19,469,037

4,448

0

25.6

User I/O

log file parallel write

492,258

221

0

1.3

System I/O

log file sync

253,519

143

1

.8

Commit

read by other session

421,942

73

0

.4

User I/O

 

报告显示 ”db file scattered read” 是这个快照时间内最重要的等待事件 , 这种等待是由于会话在等待一个 ” multiblock IO” 的完成 , 通常这是由于在大表上执行全表扫描或索引快速扫描引起。接下来可以查看哪些 SQL 执行这些查询 , 查询操作集中在哪些表上 , 检查 SQL PLAN 看是否使用了索引。

SQL 部分: 无效的 SQL 语句是性能不好的主要原因 , 这部分对这段时间区间内的 SQL 按照执行时间 , 逻辑读 , 磁盘读等指标进行了分类和排序 , STATSPACK 不同的是 , AWR 报告中可以直接查到该 SQL 的文本和发送请求的客户端进程信息 , 极大的提高了 SQL 分析的效率。

实例活动统计部分: 这部分是快照期间 , 对实例的各个内部模块的活动和各种资源使用情况的统计 , 主要包括 CPU 使用情况 ,SQL*Net 消息 , 链接的行存取和 PGA 使用情况。

段统计部分: 告诉哪些段 ( 包括表和索引 ) 在快照期间经历最高的磁盘读操作 , 这些信息可以帮助我们决定是否需要重建索引 , 或对段进行分区来减少发生在这些数据文件上的 I/O

 

AWR 地一些常用操作主要包括:

修改快照的收集和保存时间,创建 Baseline, 导出并迁移 AWR 数据。下面介绍一下这些功能使用方法。

默认情况下 AWR 每隔 1 小时自动收集一个系统负载快照 , 并且此快照默认保存一周。但 Oracle10g 提供以下命令可以修改快照收集时间间隔和保存时间。

execute dbms_workload_repository.modify_snapshot_settings(interval => 120,retention => 20160);

上述命令修改快照的收集间隔为 2 小时 , 保存时间为两周。

可以为 AWR 数据创建 baseline, 保存这些数据用于将来分析和比较。具体命令如下,

execute dbms_workload_repository.create_baseline (start_snap_id =>1, end_snap_id =>100, baseline_name => 'baseline name', dbid => yourdbid);

可以将 AWR 数据导出并迁移到其它数据库以便于以后分析。 Oracle10gRelease2 提供两个新工具来完成导出和迁移。 AWR 数据的工作。

DBMS_SWRF_INTERNAL.AWR_EXTRACT 用来导出数据 , 其使用方法如下 ,

Begin

     DBMS_SWRF_INTERNAL.AWR_EXTRACT (

       dmpfile   => 'awr_data.dmp',

       dmpdir    => 'TMP_DIR',

       bid       => 302,

       eid       => 305);

end;

其中, dmpfile 参数用于指定将要导出的 AWR 数据文件的名字, dmpdir 是指定存放导出文件的目录路径, bid 是起始快照编号, eid 是结束快照编号。

DBMS_SWRF_INTERNAL 用来迁移 AWR 数据文件到其他 数据库。导入 AWR 数据的过程分为两个步骤,首先使用 DBMS_SWRF_INTERNAL.AWR_LOAD 方法把数据导入到一个临时模式中,本例是 AWR_TEST( 也可以自己定义名称 ) ,具体方法如下,

begin

    DBMS_SWRF_INTERNAL.AWR_LOAD (

       SCHNAME => 'AWR_TEST',

       dmpfile => 'awr_data',

       dmpdir =>  'TMP_DIR');

end;

接下来把需要把 AWR 数据转移到 SYS 模式中,操作方法如下,

exec DBMS_SWRF_INTERNAL.MOVE_TO_AWR (SCHNAME => 'TEST'); 这样 AWR 数据的导入工作已经完成,现在可以使用这种方法建立一个专门存放 AWR 数据的数据库,用于集中管理和分析多个数据库实例的性能统计数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值