Der Fehler ORA-38153 ist bereits seit Version 18.3 vorhanden, tritt jedoch bei 19c SE2 Datenbanken immer noch auf. Nachdem vor Kurzem einer unserer Kunden danach fragte (bisher war nur die Enterprise Edition im Einsatz), beschreibt dieser Artikel die Lösung für dieses Problem in Kürze.
Bei 19c Datenbanken vom Typ Standard Edition 2 (SE2) taucht im Alertlog der Datenbankinstanz regelmäßig die folgende Fehlermeldung auf (am Beispiel einer DB unter Linux; wobei Windows ebenso betroffen ist):
2023-04-18T22:00:02.962199+02:00
Errors in file /u01/app/oracle/diag/rdbms/db19se/DB19SE/trace/DB19SE_j003_3194.trc:
ORA-12012: error on auto execute of job "SYS"."ORA$AT_SQ_SQL_SW_1923"
ORA-38153: Software edition is incompatible with SQL plan management.
ORA-06512: at "SYS.DBMS_SPM_INTERNAL", line 6255
ORA-06512: at "SYS.DBMS_SPM", line 2824
ORA-06512: at line 34
Was schreibt Oracle zu dieser Fehlermeldung:
$ oerr ora 38153
38153, 00000, "Software edition is incompatible with SQL plan management."
// *Cause: SQL plan management could be used only with Oracle Database Enterprise Edition.
// *Action: Ensure that Oracle is linked with the Enterprise Edition options.
Hier wird also das Oracle Feature „SQL Plan Management“ verwendet, dass nur in der Enterprise Edition zur Verfügung stehen sollte. Aber so ganz stimmt das auch wieder nicht, denn wie ein Blick in den 19c License Guide zeigt, kann dieses Feature auch in der SE2 Datenbank verwendet werden (wenn auch nur etwas eingeschränkter):
SQL Plan Management does not require a license for Oracle Diagnostics Pack or Oracle Tuning Pack.
SE2 and DBCS SE Summary: Only one SQL plan baseline per SQL statement is allowed and SQL plan evolution is disabled.
SE2 and DBCS SE Details:
Die Fehlermeldungen im Alertlog entstehen aber dadurch, weil Oracle in seinen Datenbanken – unabhängig von der Edition – regelmäßig interne Aufgaben ausführt, die sogenannten Auto-Tasks.
Eine dieser Auto-Tasks verwendet den SQL Tuning Advisor der wiederum im Hintergrund den Automatic SPM Evolve Advisor aufruft. Und dieser Aufruf erzeugt die im Alertlog zu findende Fehlermeldung. Einzeln abschalten kann man den Aufruf des Automatic SPM Evolve Advisor leider nicht und auch das explizite Deaktivieren des Tuning Packs (was Sie in Ihrer SE2 Datenbank hoffentlich auch immer machen) über den Initialisierungs-Parameter CONTROL_MANAGEMENT_PACK_ACCESS (NONE) hilft nichts.
Damit die Fehlermeldung aus dem Alertlog verschwindet, muss die Auto-Task „SQL Tuning Advisor“ deaktiviert werden (siehe MOS Doc ID 2448865.1).
Dies erfolgt mit folgendem Befehl:
BEGIN
DBMS_AUTO_TASK_ADMIN.DISABLE (
client_name => 'sql tuning advisor',
operation => NULL,
window_name => NULL
);
END;
/
SYS@DB19SE> set lines 200
SYS@DB19SE> col CLIENT_NAME for a40
SYS@DB19SE> col OPERATION_NAME for a30
SYS@DB19SE> select CLIENT_NAME,OPERATION_NAME,STATUS from DBA_AUTOTASK_OPERATION;
CLIENT_NAME OPERATION_NAME STATUS
---------------------------------------- ------------------------------ --------
auto optimizer stats collection auto optimizer stats job ENABLED
auto space advisor auto space advisor job ENABLED
sql tuning advisor automatic sql tuning task ENABLED
3 rows selected.
SYS@DB19SE> BEGIN
2 DBMS_AUTO_TASK_ADMIN.DISABLE (
3 client_name => 'sql tuning advisor',
4 operation => NULL,
5 window_name => NULL
6 );
7 END;
8 /
PL/SQL procedure successfully completed.
SYS@DB19SE> select CLIENT_NAME,OPERATION_NAME,STATUS from DBA_AUTOTASK_OPERATION;
CLIENT_NAME OPERATION_NAME STATUS
---------------------------------------- ------------------------------ --------
auto optimizer stats collection auto optimizer stats job ENABLED
auto space advisor auto space advisor job ENABLED
sql tuning advisor automatic sql tuning task DISABLED
3 rows selected.
Schade eigentlich, dass Oracle immer noch nicht zwischen SE2 und EE Datenbanken unterscheiden kann …
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.