AWR 报告
AWR 报告
一、AWR 报告
AWR (Automatic Workload Repository) 是自动负载信息库的英文缩写,AWR 报告是 Oracle 10g 以后版本提供的一种性能收集和分析工具,能提供一个时间段内整个系统资源使用情况的报告,通过报告可以了解一个系统的整个运行情况,生成的报告包括多个部分。
二、生成步骤
2.1 自动创建快照
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
可以通过 dba_hist_wr_control 查看当前的配置情况,当前 awr 为每 30 分钟做一次数据快照,保留时间为 8 天。
select * from dba_hist_wr_control;
可以通过以下命令修改配置:
-- 每隔30分钟收集一次,保存1天
execute dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>14000);
关闭 AWR 自动收集
-- nterval设0后,AWR报告无法生成
exec dbms_workload_repository.modify_snapshot_settings (interval=>0,retention=>24*60);
2.2 手动创建快照
select dbms_workload_repository.create_snapshot() from dual;
2.3 生成 AWR 报告
在 sqlplus 或者 plsql 使用命令,${ORACLE_HOME}是 Oracle 的安装路径
@/${ORACLE_HOME}/.../RDBMS/ADMIN/awrrpt.sql
执行命令之后,会提示你输入一些参数
- Enter value of report_type 意思是生成报告的格式有两种,html 和 txt
- Enter value of num_days 收集几天的报告信息,数字,可以输入 1
- Enter value of begin_snap 输入开始快照 id,要根据日志打印的快照 id 范围来填
- Enter value of end_snap 输入结束快照 id,要根据日志打印的快照 id 范围来填
三、AWR 报告分析
3.1 AWR 之 DB Time
DB Time 主要用来判断当前系统有没有相关瓶颈,是否较为频繁访问系统导致等待时间很长?然后要怎么看?一般来说,Elapsed 时间乘以 CPU 个数如果大于 DB Time,就是正常的,系统压力不大,反之就说明压力较大
3.2 AWR 之 load_profile
load_profile 指标主要用来显示当前系统的一些指示性能的总体参数,这里介绍一些 Redo_size,用来显示平均每秒的日志尺寸和平均每个事务的日志尺寸,有时候可以结合 Transactions 这个每秒事务数,分析当前事务的繁忙程度
平均每秒的事务数 Transactions 非常小,说明系统压力非常小,一般来说 Transactions 不超过 200 都是正常的,或者 200 左右都是正常的,超过 1000 就是非常繁忙了, 再看看平均每秒的日志尺寸是 4 位数的,平均每个事务的日志尺寸是 5 位数的,说明了系统访问不是很频繁,而单个业务是比较复杂的,如果反过来,平均每秒日志尺寸比平均每秒事务日志尺寸大很多,说明系统访问很频繁,而业务比较简单,不需要响应很久
3.3 AWR 之 efficiency percentages
efficiency percentages 是一些命中率指标。Buffer Hint、Library Hint 等表示 SGA(System global area)的命中率;Soft Parse 指标表示共享池的软解析率,如果小于 90%,就说明存在未绑定变量的情况
3.4 AWR 之 top 10 events
Top 10 Foreground Events by Total Wait Time,等待事件是衡量数据库优化情况的重要指标,通过观察 Event 和 %DB time 两列就可以直观看出当前数据库的主要等待事件
3.5 AWR 之 SQL Statistics
SQL Statistics 从几个维度列举了系统执行比较慢的 SQL,可以点击,然后拿 SQL 去调优,调优 SQL 可以用执行计划看看