1. 首页 > Oracle教程 > 正文

Oracle教程FG283-Oracle ADDM分析实战

内容大纲

内容简介:本文主要介绍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配置

# 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分析生成

# 1. 使用DBMS_ADDM包生成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分析结果解读

# 1. 分析ADDM分析结果
# 查看ADDM分析报告的主要部分:

# 2. 识别性能瓶颈
# 关注ADDM报告中的”主要性能瓶颈”部分

# 3. 分析优化建议
# 关注ADDM报告中的”优化建议”部分

# 4. 评估预期收益
# 关注ADDM报告中的”预期收益”部分

# 5. 实施优化建议
# 根据ADDM建议实施优化措施

# 6. 验证优化效果
# 生成优化后的ADDM分析,验证优化效果

3.4 ADDM结果管理

# 1. 查看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分析生成实战

# 1. 连接数据库
$ 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分析结果解读实战

# 1. 分析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分析优化实战

# 1. 实施优化建议
# 优化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

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息