CDB & PDB¶
Seit Oracle 12 sind die DB-Instanzen mandantenfähig. In einer Container-Datenbank (CDB) können keine, eine oder mehrere Plugin-Database (PDB) angelegt werden.
SHOW pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------ ---------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 MOUNTED
4 ORCLPDB READ WRITE NO
Hier im Beispiel gibt es eine Vorlage-PDB (PDB$SEED), eine inaktive (ORCLPDB1)
und eine aktive Datenbank (ORCLPDB). Als z.B. sysdba
kann man zw. den
Containern wechseln.
ALTER SESSION SET container=ORCLPDB;
Der aktuelle Container ist:
SELECT
SYS_CONTEXT('USERENV', 'CON_NAME') AS CUR_CONTAINER
FROM DUAL;
CUR_CONTAINER
-------------
ORCLPDB
Manage PDBs¶
Öffnen einer PDB (sysdba):
SQL> alter pluggable database ORCLPDB open;
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
------ --------------- ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCLPDB1 MOUNTED
4 ORCLPDB READ WRITE NO
Status des PDB für nächsten Reboot sichern (sysdba):
ALTER pluggable DATABASE ORCLPDB SAVE STATE;
-- anzeigen der saved-states ...
SELECT con_name, state
FROM dba_pdb_saved_states;
CON_NAME CON_NAME
---------- ----------
ORCLPDB OPEN
Und einmal testen:
SQL> shutdown immediate;
Datenbank geschlossen.
Datenbank dismounted.
ORACLE-Instanz heruntergefahren.
SQL> startup
ORACLE-Instanz hochgefahren.
Total System Global Area 1543500872 bytes
Fixed Size 9135176 bytes
Variable Size 1073741824 bytes
Database Buffers 452984832 bytes
Redo Buffers 7639040 bytes
Datenbank mounted.
Datenbank geoffnet.
-- anzeigen der saved-states ...
SELECT con_name, state
FROM dba_pdb_saved_states;
CON_NAME CON_NAME
---------- ----------
ORCLPDB OPEN
PDB tnsnames.ora¶
Für die PDBs sollten entsprechen Einträge in der tnsnames.ora vorgenommen werden:
ORCLPDB =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 192.168.1.110)
(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORCLPDB))
)