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.