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

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 302|回复: 0
打印 上一主题 下一主题

[Oracle] 在18.3中报'ORA-38153 Software edition is incompatible with SQL plan ma...

[复制链接]
跳转到指定楼层
楼主
发表于 2025-12-28 11:50:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
概要

当创建了一个新的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;
/


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-17 20:57 , Processed in 0.212207 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表