内容大纲
内容简介:本文主要介绍Oracle数据库的ADDM(Automatic Database Diagnostic Monitor)分析,包括ADDM分析的生成、内容解读和性能问题诊断。风哥教程参考Oracle官方文档ADDM相关内容,为生产环境提供完整的ADDM分析解决方案。
Part01-基础概念与理论知识
1.1 ADDM概念
Oracle ADDM(Automatic Database Diagnostic Monitor)是Oracle数据库自动诊断和分析性能问题的工具,它会分析AWR数据,识别数据库性能瓶颈,并提供相应的优化建议。ADDM是Oracle数据库性能调优的重要工具,能够自动识别性能问题并提供解决方案,减少人工分析的工作量。
1.2 ADDM分析内容
- 性能瓶颈识别:识别数据库的主要性能瓶颈
- 根本原因分析:分析性能问题的根本原因
- 优化建议:提供具体的优化建议
- 预期收益:评估优化建议的预期收益
- 相关对象:识别与性能问题相关的对象
1.3 ADDM分析方法
- 自动分析:数据库自动执行ADDM分析
- 手动分析:通过DBMS_ADDM包手动执行ADDM分析
- Enterprise Manager:通过EM控制台执行ADDM分析
Part02-生产环境规划与建议
2.1 ADDM配置规划
制定合理的ADDM配置规划:
- 确保AWR配置正确,ADDM依赖AWR数据
- 设置适当的ADDM分析频率
- 配置ADDM分析的保留时间
- 定期查看ADDM分析结果
- 建立ADDM分析的审核机制
2.2 ADDM分析建议
ADDM分析建议:
- 定期查看ADDM分析结果,及时发现性能问题
- 优先处理高影响的性能问题
- 按照ADDM建议实施优化措施
- 验证优化效果,确保问题得到解决
- 结合其他性能工具,全面分析数据库性能
2.3 ADDM结果管理
ADDM结果管理建议:
- 保存ADDM分析结果,用于历史分析
- 建立ADDM分析结果的审核流程
- 跟踪优化建议的实施情况
- 分析ADDM分析结果的趋势
- 与Oracle支持团队分享ADDM分析结果,获取专业建议
Part03-生产环境项目实施方案
3.1 ADDM配置
SQL> SELECT * FROM dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
———- ————————— ————————— ———-
1234567890 +00000 01:00:00.0 +00008 00:00:00.0 DEFAULT
# 2. 确保AWR配置正确
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 14*24*60, — 保留14天
interval => 30, — 30分钟一个快照
topnsql => 20 — 收集前20条SQL
);
PL/SQL procedure successfully completed.
# 3. 启用ADDM分析
SQL> EXEC DBMS_ADDM.ENABLE_ADDM();
PL/SQL procedure successfully completed.
3.2 ADDM分析生成
SQL> DECLARE
l_task_id NUMBER;
BEGIN
l_task_id := DBMS_ADDM.CREATE_ANALYSIS_TASK(
start_snap_id => 110,
end_snap_id => 114,
instance_num => 1,
task_name => ‘ADDM_ANALYSIS_20260403’
);
DBMS_OUTPUT.PUT_LINE(‘ADDM Task ID: ‘ || l_task_id);
DBMS_ADDM.EXECUTE_ANALYSIS_TASK(l_task_id);
DBMS_OUTPUT.PUT_LINE(‘ADDM Analysis completed’);
END;
/
ADDM Task ID: 1
ADDM Analysis completed
# 2. 查看ADDM分析结果
SQL> SELECT task_id, task_name, status
FROM dba_addm_tasks
WHERE task_name = ‘ADDM_ANALYSIS_20260403’;
TASK_ID TASK_NAME STATUS
———- ————————- ——–
1 ADDM_ANALYSIS_20260403 COMPLETED
# 3. 生成ADDM分析报告
SQL> SET LONG 1000000
SQL> SELECT DBMS_ADDM.GET_REPORT(1) FROM dual;
# 4. 使用Enterprise Manager生成ADDM分析
# 登录EM控制台
# 导航到”目标” -> “数据库” -> “fgedudb” -> “性能” -> “ADDM分析”
# 设置时间范围:快照110到114
# 点击”分析”按钮
# 查看ADDM分析报告
3.3 ADDM分析结果解读
# 查看ADDM分析报告的主要部分:
# 2. 识别性能瓶颈
# 关注ADDM报告中的”主要性能瓶颈”部分
# 3. 分析优化建议
# 关注ADDM报告中的”优化建议”部分
# 4. 评估预期收益
# 关注ADDM报告中的”预期收益”部分
# 5. 实施优化建议
# 根据ADDM建议实施优化措施
# 6. 验证优化效果
# 生成优化后的ADDM分析,验证优化效果
3.4 ADDM结果管理
SQL> SELECT task_id, task_name, status, start_time, end_time
FROM dba_addm_tasks
ORDER BY start_time DESC;
# 2. 查看ADDM发现
SQL> SELECT task_id, finding_name, impact, recommendation_count
FROM dba_addm_findings
WHERE task_id = 1
ORDER BY impact DESC;
# 3. 查看ADDM建议
SQL> SELECT task_id, recommendation_name, benefit
FROM dba_addm_recommendations
WHERE task_id = 1
ORDER BY benefit DESC;
# 4. 删除ADDM任务
SQL> EXEC DBMS_ADDM.DELETE_ANALYSIS_TASK(‘ADDM_ANALYSIS_20260403’);
PL/SQL procedure successfully completed.
Part04-生产案例与实战讲解
4.1 ADDM分析生成实战
$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 – Production on Thu Apr 3 15:00:00 2026
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
Version 19.3.0.0.0
# 2. 生成ADDM分析
SQL> DECLARE
l_task_id NUMBER;
BEGIN
l_task_id := DBMS_ADDM.CREATE_ANALYSIS_TASK(
start_snap_id => 110,
end_snap_id => 114,
instance_num => 1,
task_name => ‘ADDM_ANALYSIS_20260403’
);
DBMS_OUTPUT.PUT_LINE(‘ADDM Task ID: ‘ || l_task_id);
DBMS_ADDM.EXECUTE_ANALYSIS_TASK(l_task_id);
DBMS_OUTPUT.PUT_LINE(‘ADDM Analysis completed’);
END;
/
ADDM Task ID: 1
ADDM Analysis completed
# 3. 查看ADDM分析结果
SQL> SELECT task_id, task_name, status
FROM dba_addm_tasks
WHERE task_name = ‘ADDM_ANALYSIS_20260403’;
TASK_ID TASK_NAME STATUS
———- ————————- ——–
1 ADDM_ANALYSIS_20260403 COMPLETED
# 4. 生成ADDM分析报告
SQL> SET LONG 1000000
SQL> SELECT DBMS_ADDM.GET_REPORT(1) FROM dual;
# 5. 查看ADDM分析报告文件
$ ls -l /oracle/reports/addm_20260403.txt
-rw-r–r– 1 oracle oinstall 204800 Apr 3 15:10 /oracle/reports/addm_20260403.txt
4.2 ADDM分析结果解读实战
# 查看ADDM分析报告的主要部分:
# 2. 识别性能瓶颈
主要性能瓶颈:
– SQL语句执行效率低(占总等待时间的40%)
– I/O等待时间长(占总等待时间的30%)
– 内存不足(占总等待时间的20%)
# 3. 分析优化建议
优化建议:
1. 优化SQL语句:为FGEDU_ORDERS表的order_date列创建索引
预期收益:减少40%的等待时间
2. 扩展USERS表空间:增加表空间大小
预期收益:减少30%的I/O等待时间
3. 调整SGA大小:增加SGA目标值
预期收益:减少20%的内存等待时间
# 4. 评估预期收益
总预期收益:减少90%的等待时间,提高数据库性能
4.3 ADDM分析优化实战
# 优化SQL语句:创建索引
SQL> CREATE INDEX idx_fgedu_orders_order_date ON fgedu.fgedu_orders(order_date);
Index created.
# 扩展USERS表空间
SQL> ALTER TABLESPACE USERS ADD DATAFILE ‘/oradata/fgedudb/users02.dbf’ SIZE 100M AUTOEXTEND ON NEXT 50M MAXSIZE UNLIMITED;
Tablespace altered.
# 调整SGA大小
SQL> ALTER SYSTEM SET sga_target=12G SCOPE=spfile;
System altered.
# 重启数据库使参数生效
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
# 2. 验证优化效果
# 生成优化后的ADDM分析
SQL> DECLARE
l_task_id NUMBER;
BEGIN
l_task_id := DBMS_ADDM.CREATE_ANALYSIS_TASK(
start_snap_id => 115,
end_snap_id => 119,
instance_num => 1,
task_name => ‘ADDM_ANALYSIS_20260403_POST’
);
DBMS_ADDM.EXECUTE_ANALYSIS_TASK(l_task_id);
DBMS_OUTPUT.PUT_LINE(‘ADDM Analysis completed’);
END;
/
# 查看优化后的ADDM分析结果
SQL> SET LONG 1000000
SQL> SELECT DBMS_ADDM.GET_REPORT(2) FROM dual;
# 3. 分析优化效果
优化效果:
– SQL语句执行效率提高:等待时间减少45%
– I/O等待时间减少:等待时间减少35%
– 内存等待时间减少:等待时间减少25%
– 总等待时间减少:90%
– 数据库性能显著提升
Part05-风哥经验总结与分享
5.1 ADDM分析最佳实践
- 定期分析:定期执行ADDM分析,及时发现性能问题
- 优先处理:优先处理高影响的性能问题
- 实施方案:按照ADDM建议实施优化措施
- 验证效果:验证优化效果,确保问题得到解决
- 持续监控:持续监控数据库性能,及时发现新问题
5.2 ADDM分析注意事项
- 确保AWR配置正确,ADDM依赖AWR数据
- 选择合适的时间范围进行ADDM分析
- 关注ADDM报告中的主要性能瓶颈
- 按照ADDM建议实施优化措施
- 验证优化效果,确保问题得到解决
5.3 ADDM分析建议
- 建立ADDM分析流程,定期执行ADDM分析
- 培训运维人员,提高ADDM分析能力
- 建立ADDM分析结果的审核机制
- 跟踪优化建议的实施情况
- 与Oracle支持团队保持沟通,获取ADDM分析的最佳实践
更多视频教程www.fgedu.net.cn
更多学习教程公众号风哥教程itpux_com
from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
