♣
題目部分
【DB筆試面試825】在Oracle中,如何擷取ADDM報告?
♣
答案部分
有兩種辦法可以擷取ADDM報告:
(1) 采用addmrpt.sql腳本。運作腳本:@?/rdbms/admin/addmrpt.sql
(2) 采用DBMS_ADVISOR包:
DECLARE
TASK_NAME VARCHAR2(50) := 'HEALTH_CHECK_BY_LHR';
TASK_DESC VARCHAR2(50) := 'HEALTH_CHECK_BY_LHR';
TASK_ID NUMBER;
BEGIN
DBMS_ADVISOR.CREATE_TASK('ADDM', TASK_ID, TASK_NAME, TASK_DESC, NULL);
DBMS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, 'START_SNAPSHOT', &_SNAP_ID);
DBMS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, 'END_SNAPSHOT', &_SNAP_ID1);
DBMS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, 'INSTANCE', &_INSTANCE_NUMBER);
DBMS_ADVISOR.SET_TASK_PARAMETER(TASK_NAME, 'DB_ID', &_DBID);
DBMS_ADVISOR.EXECUTE_TASK(TASK_NAME);
END;
/
SELECT DBMS_ADVISOR.GET_TASK_REPORT('HEALTH_CHECK_BY_LHR', 'TEXT', 'ALL') ADDM_RESULTS FROM DUAL;
SELECT * FROM DBA_ADDM_TASKS T ORDER BY T.TASK_ID;
SELECT * FROM DBA_ADVISOR_TASKS T ORDER BY T.TASK_ID;
SELECT DBMS_ADVISOR.GET_TASK_REPORT('HEALTH_CHECK_BY_LHR', 'TEXT', 'ALL') ADDM_RESULTS FROM DUAL;
複制
其中,存儲過程SET_TASK_PARAMETER是用來設定任務參數的。START_SNAPSHOT是起始快照ID,END_SNAPSHOT是結束快照ID,INSTANCE是執行個體号,對于單執行個體,一般是1,在RAC環境下,可以通過查詢視圖GVINSTANCE得到,DB_ID是資料庫的唯一識别号,可以通過查詢VDATABASE查到。
若普通使用者使用DBMS_ADVISOR包擷取ADDM報告,則必須使用SYS給這個普通使用者賦予如下權限:
GRANT EXECUTE ON DBMS_ADVISOR TO USER_LHR;
GRANT ADVISOR TO USER_LHR;
複制
& 說明:
有關ADDM的更多内容可以參考我的BLOG:http://blog.itpub.net/26736162/viewspace-2140642/
本文選自《Oracle程式員面試筆試寶典》,作者:小麥苗