Blog Johannes

Blog Johannes

johannes blog ohne logo

Blog Johannes

Non-CDB Deprecated

Veröffentlicht: 22. Juli 2015
Geschrieben von Johannes Ahrends

Zitat:

"The non-CDB architecture is deprecated in Oracle Database 12c, and may be desupported and unavailable in a later Oracle Database release. Oracle recommends use of the CDB architecture." (Oracle 12c Database Upgrade Guide, Kapitel 8.1.1).

Was bedeutet das?

Zunächst müssen wir dafür ein paar Begriffe klären:

  1. Non-CDB: Non Container Database. Das ist die "klassische" Datenbank, die bis zur Version 11g einschließlich, üblich ist.
  2. Multitenant Database: Bei einer Multitenant Database haben wir eine Container Datenbank (CDB), in die mehrere (max. 252) Datenbanken, die "Pluggable Databases", eingehängt werden.
  3. Single Tenant Database: Eine spezielle Version der Multitenant Database, bei der in einer Container Datenbank nur eine zusätzliche Datenbank (neben der Seed Datenbank) eingehängt werden kann.

Hier noch einmal zur Veranschaulichung die neue (CDB) Architektur:

1

Das angegebene Zitat besagt also, dass in Zukunft nur noch diese Architektur unterstützt wird.

Dabei stellen sich zwei Fragen:

  1. Was kostet das?
  2. Wie komme ich da hin?

Kosten

Laut Oracle Licensing Guide ist Multitenant Database eine kostenpflichtige Option der Oracle Enterprise Edition. Allerdings mit folgender Einschränkung:

„The multitenant architecture with one user-created pluggable database (single tenant) is available in all editions” Oracle Database Licensing Information 12c Release 1 (12.1) Seite 1-2

Das Konzept der Multitenant Database kann man also in jedem Fall ohne Zusatzkosten nutzen.

Upgrade

Oftmals liest man folgende Frage:

“Ich habe meine Oracle 11g Datenbank nach Oracle 12c umgestellt / upgrade. Wie kann ich diese jetzt in eine CDB konvertieren?“

oder:

„I’ve upgraded my Oracle 11g database to Oracle 12c. How can I convert the database into a CDB?”

Die Antwort ist einfach: gar nicht!

Das liegt daran, dass die Frage falsch gestellt ist: man kann keine Datenbank in eine CDB konvertieren, sehr wohl aber in eine PDB, die dann in die CDB gehängt wird. D.h. die korrekte Frage müsste lauten:

„How can I convert the database into a PDB?“

Lösung:

Zunächst müssen Sie, falls noch nicht geschehen, eine CDB erstellen. Am einfachsten ist das mit dem Database Configuration Assistant:

2

In diesem Beispiel wird eine Container Datenbank mit dem Namen „CDBACFS“ mit einer Pluggable Database „PLUGACFS1“ angelegt. Bitte Vorsicht: sollten Sie keine Multitenant Database Option lizensiert haben, ist damit auch die maximale Anzahl von möglichen PDBs erschöpft. Alternativ können Sie im „Advanced Mode“ auch eine CDB ohne Pluggable Database anlegen oder Sie löschen anschließend einfach die PDB.

Damit ist die Voraussetzung geschaffen, um Ihre existierende Datenbank als neue PDB in die CDB einzuhängen.

Um eine existierende Datenbank in eine CDB einzuhängen, muss diese ein so genanntes „Manifest“ haben. Das ist eine XML-Datei, die im Wesentlichen die Struktur der Datenbank enthält. Es ist also als nächstes Erforderlich, diese XML-Struktur zu erstellen:

% sqlplus sys/@WOLFGANG as sysdba
SQL> STARTUP OPEN READ ONLY;
SQL> execute dbms_pdb.describe('/tmp/wolfgang.xml');

Natürlich darf man an dieser Stelle auch ein anderes Verzeichnis angeben und auch der Name der Datei ist frei wählbar. Einzig die Endung „.xml“ ist an dieser Stelle vorgeschrieben (mandatory).

Jetzt kann die Datenbank in die CDB eingehängt werden.

% sqlplus sys/@CDBACFS as sysdba 
SQL> CREATE PLUGGABLE DATABASE wolfgang USING '/tmp/wolfgang.xml' 
     NOCOPY TEMPFILE REUSE;

Im letzten Schritt muss jetzt noch das Data Dictionary der Pluggable Database bereinigt werden, da ja viele Elemente in der PDB nicht mehr benötigt werden:

SQL> ALTER SESSION SET CONTAINER = WOLFGANG;
SQL> @?/rdbms/admin/noncdb_to_pdb

Mit diesen wenigen Schritten steht die “alte” Datenbank “WOLFGANG” jetzt als wunderschöne, neue Pluggable Database “WOLFGANG” zur Verfügung und kann jetzt endgültig geöffnet werden:

SQL> ALTER DATABASE OPEN READ WRITE;

Tipps

Wenn man die Datenbank, wie in diesem Fall, mit “NOCOPY” in die CDB einhängt, dann bleiben ein paar „Leichen“ liegen, das sind die Controlfiles, die Redolog-Dateien und der Undo-Tablespace der alten Datenbank. Diese sollten dann letztendlich gelöscht werden.

Falls es nicht vorher schon einen expliziten DBA gab, also nicht SYS oder SYSTEM, empfiehlt es sich, einen zusätzlichen DBA (Rolle PDB_DBA) für die PDB anzulegen.

Ein letzter Hinweis: es empfiehlt sich, möglichst bald mit der Umstellung auf eine CDB Architektur anzufangen, da die Herausforderungen weniger im Upgrade der Datenbank als in der Administration Ihrer neuen Umgebung liegen.

Dazu gehört:

  • Die meisten Ihrer SQL oder SHELL Skripte werden wahrscheinlich nicht mehr funktionieren.
  • Mit dem gerne verwendeten sqlplus / as sysdba kann man sich zwar an die CDB nicht aber an die PDB anmelden.
  • Um eine Übersicht über die Datenbankstruktur zu erhalten, muss man jetzt CDB_-Views statt der DBA_-Views verwenden.

Johannes Ahrends

CarajanDB GmbH

Siemensstr. 25  50374 Erftstadt

Fon: +49 (2235) 170 91 83

Fax: +49 (2235) 170 79 78

Mail: info@carajandb.com

 

carajan-db-logo