Oracle database作为一个强大的商业RDBMS,其自动诊断功能也在随着版本更新逐步强大。DBA在进行数据库问题诊断与分析的时候,如果经验不足,ADDM可以帮助你做一些科学的诊断,它是一个有用而且Oracle官方也非常推荐的工具。
理解ADDM
1,ADDM和AWR一样,基础数据还是来自snapshot,只要有基础数据存在,ADDM就能进行分析。
ADDM工具的核心是DBMS_ADDM包,这个包可以帮助DBA分析数据库,并产生报告,详细的知识。
参见官方:http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_addm.htm#CACJDCBJ
2,使用ADDM,常见的方式如下
- @?/rdbms/admin/addmrpt.sql
- Enterprise Manager (EM)
- DBMS_ADDM
SQL> var addmname varchar2(30);
SQL> begin
:addmname:='addm_task_747-748';
dbms_addm.analyze_db(:addmname,747,748);
end;
/
PL/SQL procedure successfully completed.
spool addm_task_747-748_report.txt
set long 99999999
set linesize 200
set pagesize 50000
set serveroutput on size 999999
col dbms_addm.get_report(‘addm_task_747-748’) for a200
select dbms_addm.get_report(‘addm_task_747-748’) from dual;
spool off
3,产生report以后,根据ADDM推荐的诊断结果,对数据库进行进行有用的分析。
例如发现SQL Tuning,可以使用sqltrpt.sql对单独的一条SQL进行优化分析。
sqltrpt.sql是一个类似SQL Tuning Advisor自动sql诊断工具,运行完成后会产生一个TASK,类似SYS_AUTO_SQL_TUNING_TASK。
我们可以利用sqltrpt.sql产生的分析报告,发现单独条SQL的问题所在,并可以使用SQL Profiler等办法对SQL进行优化。