♣
题目部分
【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程序员面试笔试宝典》,作者:小麦苗