Mit der Oracle Database Free 23c gibt es auch eine neue Fehlermeldung:
ORA-39712 database cannot be opened by an Oracle Database Free server
aber bevor ich auf die Fehlermeldung eingehe, noch die Vorgeschichte.
Ein Kunde, der seine Applikationsentwicklung auf einer Oracle SE Datenbank betreibt, ist auf die Idee gekommen, dass es doch einfacher wäre, wenn er den aktuellen Entwicklungsstand mit Hilfe einer Oracle Datenbank Free 23c einerseits auf Kompatibilität mit Oracle 23c verifizieren könnte und auch noch den Entwicklungsstand auf seinem Notebook mit zum Kunden nehmen könnte.
Was bietet sich somit ein, wenn man schon eine Datenbanklösung mit Pluggable Datenbanken hat?
Richtig, man nutzt dieses Feature um sich eine Kopie der Datenbank und plugged diese in die FREE Edition Datenbank ein.
Hier die Schritte, die gemacht wurden:
Zunächst die Quelldatenbank in den read-only Modus setzten und das XML File für das Pluggin erzeugen
-- Falls die DB läuft ausschalten
shutdown immediate;
-- DB im Read-Only Mode starten startup mount
alter database open read only;
---
execute DBMS_PDB.DESCRIBE ('/tmp/orase.xml');
Im nächsten Schritt, wurden die Datenbankfiles gemeinsam mit dem File /tmp/orase.xml
auf den Rechner mit der Oracle 23c FREE Edition kopiert. Im Pfade auf die Datenbankfiles sind im XML File mittels Editor korrigiert worden.
Auf der Oracle Datenbank Free Edition geht es weiter mit
-- Plugin
CREATE PLUGGABLE DATABASE oraSEpdb USING '/tmp/orase.xml' NOCOPY;
-- konvertieren von NONCDB auf PDB
ALTER SESSION SET CONTAINER = oraSEpdb;
@?/rdbms/admin/noncdb_to_pdb.sql
Soweit so gut, jetzt fehlt nur noch das Open der Pluggable Datenbank!
alter pluggable database oraSEpdb open;
alter pluggable database oraSEpdb open
*
ERROR at line 1:
ORA-39712: database cannot be opened by an Oracle Database Free server Help: https://docs.oracle.com/error-help/db/ora-39712/
Alles geht gut, erst das finale OPEN bringt den Fehler!
Schauen wir uns den Fehler genauer an:
ORA-39712 database cannot be opened by an Oracle Database Free server
Cause: An attempt was made to open a Standard Edition or Enterprise Edition database with an Oracle Database Free server.
Action: Use the Oracle Database Free server only with Oracle Database Free databases.
Spannend ist, dass alle Schritte davor (also CREATE PLUGGABLE und konvertieren) keinen Fehler gebracht haben. Auch verstehe ich die Einschränkung nicht wirklich. Klar soll/darf man keine Oracle EE Funktionalitäten nutzen können, die die FREE Edition nicht anbietet, das kann man aber auch anders verhindern.
Natürlich gibt es auch andere Wege (EXPDP/IMPDP) um die Inhalte von einer SE/EE auf einer FREE Edition zu transportieren, aber einfacher und schneller sollte der Weg mit PLUGIN sein (wenn man nicht konvertieren muss).
Diese Einschränkung ist für mich nicht ganz nachvollziehbar, solange die Datenbank, die man einplugged, die Limitationen bezüglich Speicherplatz nicht überschreitet.