Oracle 19c使用SYS用户执行addmrpt.sql生成ADDM报告失败求助
ORA-13605 错误解决思路(SYS用户生成ADDM报告时)
验证快照ID有效性
先确认指定的起始快照5436和结束快照5443是否真实存在、时间逻辑合理,执行查询:SELECT snap_id, begin_interval_time, end_interval_time FROM dba_hist_snapshot WHERE snap_id BETWEEN 5436 AND 5443;若快照不存在或时间范围异常,需重新选择有效快照ID。
手动创建ADDM任务生成报告
跳过addmrpt.sql脚本,直接调用DBMS_ADVISOR包手动完成任务创建与报告生成,规避脚本自动生成任务时的异常:DECLARE v_task_name VARCHAR2(100) := 'ADDM_SNAP_5436_5443'; BEGIN -- 创建ADDM任务 DBMS_ADVISOR.CREATE_TASK( advisor_name => 'ADDM', task_name => v_task_name ); -- 设置快照范围参数 DBMS_ADVISOR.SET_TASK_PARAMETER(v_task_name, 'START_SNAPSHOT', 5436); DBMS_ADVISOR.SET_TASK_PARAMETER(v_task_name, 'END_SNAPSHOT', 5443); -- 执行任务 DBMS_ADVISOR.EXECUTE_TASK(v_task_name); -- 生成文本报告到指定目录(需先创建目录对象) DBMS_ADVISOR.CREATE_FILE( DBMS_ADVISOR.GET_TASK_REPORT(v_task_name, 'TEXT'), 'ADDM_REPORT_DIR', -- 替换为你创建的目录对象名 'addmrpt_5436_5443.txt' ); END; /提前创建并授权目录对象:
CREATE OR REPLACE DIRECTORY ADDM_REPORT_DIR AS '/your/report/path'; GRANT READ, WRITE ON DIRECTORY ADDM_REPORT_DIR TO SYS;检查ADVISOR相关对象状态
确认核心包与任务表是否正常:-- 检查ADVISOR包状态 SELECT object_name, status FROM dba_objects WHERE object_name IN ('DBMS_ADVISOR', 'PRVT_ADVISOR') AND owner = 'SYS'; -- 排查残留无效任务 SELECT task_name, status FROM dba_advisor_tasks WHERE task_name LIKE 'TACHE_%';若包状态为
INVALID,重新编译:ALTER PACKAGE SYS.PRVT_ADVISOR COMPILE BODY; ALTER PACKAGE SYS.DBMS_ADVISOR COMPILE;对于无效的
TACHE_6725任务,删除后重试:EXEC DBMS_ADVISOR.DELETE_TASK('TACHE_6725');确认SYSDBA执行环境
确保通过CONNECT SYS AS SYSDBA登录SQL*Plus,而非普通登录后切换权限。若为CDB环境,检查当前会话容器是否匹配目标库:SHOW CON_NAME;
内容的提问来源于stack exchange,提问作者ben.IT
相关产品推荐
相关产品推荐

