awr报告生成
在Oracle数据库中执行 @?/rdbms/admin/awrrpt.sql
生成AWR报告的详细步骤
1. AWR报告简介
AWR(Automatic Workload Repository) 是Oracle数据库内置的性能诊断工具,用于收集、处理和维护数据库性能相关的历史数据。通过分析AWR报告,可以快速定位数据库的性能瓶颈(如高负载SQL、资源争用、I/O问题等)。
2. 执行前提条件
- 权限要求:必须以具有
DBA
角色的用户(如SYS
、SYSTEM
)登录数据库。 - AWR功能启用:默认情况下AWR已启用,快照每小时自动生成一次(保留8天)。
- 检查AWR状态:
SELECT * FROM DBA_HIST_WR_CONTROL;
- 检查AWR状态:
3. 执行步骤详解
步骤1:登录数据库
使用 sqlplus
或客户端工具(如SQL Developer)以DBA用户登录目标数据库实例:
sqlplus / as sysdba
步骤2:执行 awrrpt.sql
脚本
在SQL*Plus中执行以下命令:
@?/rdbms/admin/awrrpt.sql
?
的含义:表示Oracle的环境变量ORACLE_HOME
,自动解析为Oracle安装目录(如/u01/app/oracle/product/11.2.0/dbhome_1
)。
步骤3:选择报告类型
脚本会提示选择报告格式:
Enter value for report_type: html -- 可选 html 或 text,默认html
步骤4:输入快照范围
- 查看可用快照:
脚本会列出最近的快照时间范围,例如:Snap Id Snap Started Snap Level ---------- ---------------------- ---------- 1000 2023-10-01 00:00:00 1 1001 2023-10-01 01:00:00 1 ...
- 输入起始和结束快照ID:
Enter value for num_days: 1 -- 查询最近1天的快照 Enter value for begin_snap: 1000 -- 起始快照ID Enter value for end_snap: 1001 -- 结束快照ID
步骤5:指定输出文件路径
输入报告文件名(默认保存在 ORACLE_HOME/rdbms/admin
目录):
Enter value for report_name: /tmp/awr_report_1000_1001.html
4. 生成的AWR报告关键内容解读
生成的HTML或文本报告包含以下核心部分:
部分名称 | 作用 |
---|---|
Load Profile | 展示数据库负载(逻辑读、物理读、事务数等)。 |
Top 5 Timed Events | 显示耗时的等待事件(如 db file sequential read 、latch: cache buffers chains )。 |
SQL Statistics | 列出高负载SQL(按执行时间、逻辑读、物理读排序)。 |
Instance Activity Stats | 统计数据库内部活动(如缓冲区命中率、锁存器争用)。 |
I/O and Memory | 分析I/O性能和内存使用(如SGA/PGA分配)。 |
5. 常见问题与解决方法
问题1:无法找到 awrrpt.sql
脚本
- 原因:
ORACLE_HOME
路径错误或脚本缺失。 - 解决:
- 确认
ORACLE_HOME
环境变量正确:echo $ORACLE_HOME
- 手动定位脚本路径:
@/u01/app/oracle/product/11.2.0/dbhome_1/rdbms/admin/awrrpt.sql
- 确认
问题2:权限不足
- 现象:执行时报错
ORA-00942: table or view does not exist
。 - 解决:以
SYS AS SYSDBA
登录:sqlplus sys as sysdba
问题3:无可用快照
- 原因:AWR未启用或保留策略导致历史快照被清除。
- 解决:
- 检查AWR配置:
SELECT * FROM DBA_HIST_WR_CONTROL;
- 手动创建快照:
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();
- 检查AWR配置:
6. 自动化生成AWR报告(可选)
通过PL/SQL定期生成AWR报告:
BEGINDBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();-- 生成报告并保存到文件DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(l_dbid => <DBID>,l_inst_num => <INSTANCE_NUMBER>,l_bid => <BEGIN_SNAP>,l_eid => <END_SNAP>,l_dir => 'DIR_FOR_AWR', -- 需预先创建目录对象l_file_name => 'awr_report.html');
END;
7. 参考文档
- Oracle官方文档:AWR报告
- AWR报告深度分析指南
通过以上步骤,您可以轻松生成并解读AWR报告,快速定位数据库性能问题。