ORA-13645错误的核心原因是执行计划管理器(Advisor Execution)中指定的执行字符串不存在。修复方案:首先检查SQL Advisor任务状态,使用DBMS_SQLTUNE.SELECT_TUNE_ITEMS查看任务ID,然后执行DBMS_ADVISOR.DELETE_TASK删除无效任务,最后重新创建任务并执行。远程处理可通过SQL*Plus或TOAD连接目标数据库,运行以下代码:
BEGIN
DBMS_SQLTUNE.DROP_TUNING_TASK('任务名');
END;
COMMIT;
Oracle官方文档片段
ORA-13645: The specified execution string does not exist. Cause: The specified execution string does not exist in the Advisor framework. Action: Specify an execution string that exists in the Advisor framework or create the execution string.
CSDN博客原文
今天遇到ORA-13645错误,原因是之前创建SQL调优任务时,执行计划不存在。解决方法是删除该任务:exec DBMS_SQLTUNE.DROP_TUNING_TASK('my_task'); 然后重新生成执行计划并创建新任务。远程可以用expdp备份advisor目录后导入。
Oracle社区论坛
用户问题:运行SQL Performance Analyzer时报ORA-13645。回复:检查ADVISOR_EXECUTIONS表,找到无效的execution_name,然后用DBMS_ADVISOR.DELETE_EXECUTION_EXECUTION_NAME('invalid_string'); 重启任务即可。远程通过dblink访问。
IT博客转载
Oracle 11g中常见,执行SQL Tuning Advisor报错。步骤:1.查询任务列表 select * from dba_advisor_executions; 2.删除指定执行:BEGIN DBMS_ADVISOR.delete_task('TASK_ID'); END; 3.远程用Grid Control监控修复。
技术问答平台
ORA-13645 指定执行字符串不存在。答:这是因为advisor framework中execution string缺失。修复代码:
DECLARE
l_task_name VARCHAR2(100);
BEGIN
l_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(sql_id => 'your_sql_id');
DBMS_SQLTUNE.EXECUTE_TUNING_TASK(l_task_name);
END;
忽略旧任务直接新建。
数据库运维手册
远程处理ORA-13645:用RMAN连接备份advisor数据,恢复后验证执行字符串。用sqlplus sys/password@remote as sysdba 执行删除命令,避免本地重启数据库。
FAQ
Q: ORA-13645怎么快速删除任务?
A: exec DBMS_SQLTUNE.DROP_TUNING_TASK('任务名');
Q: 远程修复需要什么权限?
A: SYSDBA或SYSOPER权限,通过sqlplus连接。
Q: 错误反复出现怎么办?
A: 清理ADVISOR_EXECUTIONS表中所有无效记录,然后重建。
Q: 11g和12c修复一样吗?
A: 基本相同,但12c用DBMS_SQLPA代替部分命令。