Oracle Standard Edition Datenbank korrekt erzeugen

Sehr viele Nutzer der Oracle Standard Edition Datenbank machen den Fehler, im DBCA ein Datenbanktemplate auszuwählen, dass eine gezippte Enterprise Edition Datenbank mitbringt.
Beispielsweise: „General Purpose“ bzw. „Data Warehouse“

Dieser Artikel geht darauf ein, warum es keine gute Idee ist, sondern verschiedene Probleme aufwirft.

Oracle Lizensierung – Grauzonen und Pitfalls

Da die Datenbanktemplates eine Enterprise Edition Datenbank mit allen Optionen enthalten, die in einer Standard Edition Datenbank nicht genutzt werden dürfen, werden potenzielle Lizenzverletzungen erleichtert/ermöglicht. Schaut man in DBA_REGISTRY nach findet man typischerweise folgendes vor:

SELECT comp_id, comp_name, status 
FROM dba_registry;

COMP_ID  COMP_NAME                           STATUS
-------- ----------------------------------- ----------
CATALOG  Oracle Database Catalog Views       VALID
CATPROC  Oracle Database Packages and Types  VALID
RAC      Oracle Real Application Clusters    OPTION OFF
JAVAVM   JServer JAVA Virtual Machine        VALID
XML      Oracle XDK                          VALID
CATJAVA  Oracle Database Java Packages       VALID
APS      OLAP Analytic Workspace             VALID
XDB      Oracle XML Database                 VALID
OWM      Oracle Workspace Manager            VALID
CONTEXT  Oracle Text                         VALID
ORDIM    Oracle Multimedia                   VALID
SDO      Spatial                             VALID
XOQ      Oracle OLAP API                     VALID
OLS      Oracle Label Security               VALID
DV       Oracle Database Vault               VALID

Seit Oracle 19c ist RAC – obwohl eine Option – immer in der Datenbank enthalten. Sofern die Softwareinstallation mit Single Instanz durchgeführt wurde, ist der Status „OPTION OFF“. Ebenfalls mit 19c darf eine SE2 auch nicht mehr im RAC betrieben werden, siehe auch SE2 ohne RAC! Seit dem 5. Dezember 2019 darf man SDO auch in einer Standard Edition nutzen. Einige Komponenten wie Oracle Multimedia sind in Oracle 19c sogar desupported und sollte nicht mehr genutzt werden. Bei desupporteten Funktionalitäten garantiert Oracle auch keine Security Patches mehr, was somit auch ein Security Problem bedeuten kann.
Andere Komponenten wie Oracle Label Security und Database Vault gehören zu kostenpflichtigen Enterprise Edition Optionen.

Security, Patching und Upgrade Laufzeiten

Ein weiterer Grund nur die wirklich genutzten Optionen in der Datenbank installiert zu haben, sind potentielle Security Lücken. Gerade im Bereich JAVA, XDB aber auch Oracle Text gibt es immer wieder Lücken mit hohem Risiko. Nutzt man weder Java in der Oracle Datenbank noch Oracle Text Indizes, setzt man sich nur unnötigen Gefahren aus, wenn die Optionen in der Datenbank enthalten sind. Gleichzeitig dauert sowohl das Patching (datapatch) als auch das Datenbank Versionsupgrade umso länger je mehr Optionen in der Oracle Datenbank installiert sind. Eine nachträgliche saubere deinstallation von Optionen ist nicht trivial (Wir bieten das Service für Oracle 11gR2 bis 19c nur für NON-CDB Datenbanken an. Die wenigen Anleitungen seitens Oracle sind leider oft unvollständig oder fehlerhaft.)

Siehe auch unser Webinar: Unnötige Optionen in der Oracle DB vermeiden.

Fehler im ALERT.LOG der Datenbank

Nutzt man eine Oracle EE Datenbank mit einer Oracle SE2 Datenbank Software, gibt es regelmäßig Fehler im ALERT.LOG – beispielsweise jede Nacht während des Maintenance Window kommt folgender Fehler:

ORA-12012: error on auto execute of job "SYS"."ORA$AT_SQ_SQL_SW_15709"
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

Der Grund ist, dass bei der Standard Edition Datenbank das SQL Plan Management insofern eingeschränkt ist, dass nur ein Execution Plan für ein Statement hinterlegt sein darf. Siehe Oracle 19c Database Licensing Information User Manual die Notes bei SQL Plan Management.

In einer EE Datenbank gibt es jedoch einen Job, der im Maintenance Window gestartet wird um im Rahmen des SQL Plan Managements alternative Execution Pläne für ein Statement zu evaluieren. Dieser läuft bei Verwendung der SE2 Datenbank Software in den beschriebenen Fehler.

Oracle´s Statement zur Nutzung von EE Datenbank Templates mit Oracle SE2 Software

Hier hält sich Oracle nobel zurück. Es gibt keine offizielle Aussage: „Das darfst Du nicht machen!“. Böse Zungen könnten jetzt behaupten, dass dies absichtlich ist, damit SE2 Nutzer mehr Potential für Lizenzverletzungen haben.

Es gibt lediglich eine offizielle Support Note – allerdings schon für Oracle 10g/11g – die explizit sagt, dass man bei SE Lizensierung im DBCA nur „Custom Database“ auswählen soll: Use Of Database Templates with Standard Edition Cause Problems With OLAP (Doc ID 556194.1)

Auszug:

When using DBCA with the Standard Edition of 10g or 11g of Oracle RDBMS, ensure that:

  • In Step 2 (Database Template) of DBCA, select Custom Database.
  • In Step 9 (Database Content) of DBCA, in the Database Content tab, please uncheck the OLAP component.

Natürlich kann man dies auch mit DBCA im Command Line Mode umsetzen, wenn man diesen aus einem Standard Edition Oracle Home startet. Wichtig ist dabei, dass man alle nicht benötigten dbOptions abwählt.

export ORACLE_SID=ORCLSE2

$ORACLE_HOME/bin/dbca -silent -createDatabase        \
     -templateName New_Database.dbt                  \
     -gdbname ${ORACLE_SID}                          \
     -sid  ${ORACLE_SID}                             \
     -responseFile NO_VALUE                          \
     -dbOptions JSERVER:false,ORACLE_TEXT:false,IMEDIA:false,CWMLITE:false,SPATIAL:false,OMS:false,APEX:false,DV:false \
     -characterSet AL32UTF8                          \
     -sysPassword oracle_4U                          \
     -systemPassword oracle_4U                       \
     -createAsContainerDatabase false                \
     -databaseType MULTIPURPOSE                      \
     -memoryMgmtType auto_sga                        \
     -totalMemory 5000                               \
     -storageType FS                                 \ 
     -datafileDestination "/u01/app/oracle/oradata"  \
     -redoLogFileSize 50                             \
     -emConfiguration NONE                           \
     -ignorePreReqs

Zusammenfassung

Wenn man die Oracle Standard Edition Datenbank nutzt und eine Datenbank mit dem DBCA anlegt, sollte man unbedingt „Custom Database“ auswählen und dann nur die wirklich benötigen Optionen auswählen.
Sollte eine weitere Option (zb: Java, Oracle Text oder XDB) benötigt werden, kann man diese mit dem DBCA jederzeit nachinstallieren. Das Löschen von Optionen ist seitens Oracle (mit wenigen Ausnahmen) nicht supportet. DB Masters bietet die saubere deinstallation von Optionen in NON-CDB Datenbank der Versionen 11gR2 bis 19c als Dienstleistung an, allerdings hat dies leider keine Auswirkung auf die Jobs im Maintenance Window.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

This site uses Akismet to reduce spam. Learn how your comment data is processed.