重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

标题: 在18.3中报'ORA-38153 Software edition is incompatible with SQL plan ma... [打印本页]

作者: 刘泽宇    时间: 2025-12-28 11:50
标题: 在18.3中报'ORA-38153 Software edition is incompatible with SQL plan ma...
概要

当创建了一个新的18c (Standard Edition 2) 数据库后,在alert 日志里面出现如下报错:
Errors in file j002_22111.trc:
ORA-12012: error on auto execute of job "SYS"."ORA$AT_SQ_SQL_SW_36"
ORA-38153: Software edition is incompatible with SQL plan management.
ORA-06512: at "SYS.DBMS_SPM_INTERNAL", line 4911
ORA-06512: at "SYS.DBMS_SPM", line 2696
ORA-06512: at line 34

Oracle 19c Standard Edition 也会遇到该问题。


解决方案

根据官方文档,SPM Evolve Advisor任务会被作为SQL Tuning任务的一部分在维护窗口期间被自动执行。

https://docs.oracle.com/en/datab ... 4-921C-C899485C954F
Managing SQL Plan Baselines

29.2.2.2 Enabling and Disabling the SPM Evolve Advisor Task
No separate scheduler client exists for the Automatic SPM Evolve Advisor task.
One client controls both Automatic SQL Tuning Advisor and Automatic SPM Evolve Advisor. Thus, the same task enables or disables both.
您可以通过关闭SQL Tuning任务来避免该报错:

BEGIN
  DBMS_AUTO_TASK_ADMIN.DISABLE (
    client_name => 'sql tuning advisor'
,   operation   => NULL
,   window_name => NULL
);
END;
/


原因

无。


就如这个错误消息说的那样在18c的标准版2中是不支持SQL plan management特性的。

如果自动SPM Evolve Advisor任务被执行,alert 日志中将会出现报错,这是个预期的行为。概要

有时AUTO_STATS_ADVISOR_TASK在维护窗口之外运行
例如, 禁用了'Auto optimizer stats collection',并且在 [18-04-11 02:00:02.931514 +09:00] 关闭了窗口
但通过dba_advisor_tasks视图看到 AUTO_STATS_ADVISOR_TASK 运行时间 [2018/04/11 02:36:38]~[2018/04/11 02:38:29]:
SQL> select OWNER,DESCRIPTION,TASK_NAME,ADVISOR_NAME,EXECUTION_START,EXECUTION_END from dba_advisor_tasks;

OWNER DESCRIPTION TASK_NAME ADVISOR_NAME EXECUTION_START EXECUTION_END

------------ ---------------- ------------------------------ -------------------- -------------------- --------------------

SYS AUTO_STATS_ADVISOR_TASK Statistics Advisor 2018/04/11 02:36:38 2018/04/11 02:38:29

解决方案

这是期望的行为.

或者

如果不希望运行AUTO_STATS_ADVISOR_TASK。

请参考下边的方法删除Statistics Advisor任务(AUTO_STATS_ADVISOR_TASK)。

-----
DECLARE
v_tname VARCHAR2(32767);
BEGIN
v_tname := 'AUTO_STATS_ADVISOR_TASK';
DBMS_STATS.DROP_ADVISOR_TASK(v_tname);
END;
/







欢迎光临 重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛 (http://bbs.cqsztech.com/) Powered by Discuz! X3.2