您的位置:首页 > 数据库 > Oracle

Oracle10g的AWR性能优化工具介绍

2009-08-18 11:16 288 查看
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
数据的数据库,用于集中管理和分析多个数据库实例的性能统计数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: