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進行優化。