Aktuellen Container bestätigen und alle PDBs vom Root aus abfragen (CDB_ / CONTAINERS)
OracleMultitenantBefehl
-- Current container:
SHOW CON_NAME
SHOW CON_ID
SHOW PDBS
SELECT SYS_CONTEXT('USERENV','CON_NAME') AS con_name,
SYS_CONTEXT('USERENV','CON_ID') AS con_id
FROM dual;
-- All containers, from the root:
SELECT con_id, name, open_mode FROM v$containers ORDER BY con_id;
-- CDB_ views combine all open PDBs with CON_ID:
SELECT c.name AS container, t.tablespace_name, t.status
FROM cdb_tablespaces t JOIN v$containers c ON c.con_id = t.con_id
ORDER BY c.name, t.tablespace_name;
-- Query any table/view across all PDBs with CONTAINERS():
SELECT con_id, COUNT(*) AS users
FROM CONTAINERS(dba_users)
GROUP BY con_id ORDER BY con_id;Was es tut
Zeigt den Container, mit dem die Session verbunden ist; vom Root aus sammeln CDB_-Views und die CONTAINERS()-Klausel Dictionary-Informationen aller geöffneten PDBs in einer einzigen Abfrage.
Wann einsetzen
Um vor einer DDL-/Parameteränderung sicherzugehen, dass du im richtigen Container bist, und um ein Platz-, Benutzer- und Objektinventar über alle PDBs zu erstellen.
Vorsicht
Nur lesend. Lege nicht versehentlich Anwendungsobjekte oder lokale Benutzer im Root (CDB$ROOT) an; ALTER SYSTEM im Root wirkt auf die gesamte CDB. CDB_-Views und CONTAINERS() liefern nur geöffnete PDBs; PDBs im Zustand MOUNTED erscheinen nicht im Ergebnis.
Verwandte Einträge
- Neue PDB aus PDB$SEED anlegen
- PDB innerhalb derselben CDB klonen (Local / Hot Clone)
- PDB aus einer anderen CDB über einen DB-Link klonen (Remote Clone)
- PDB ausstecken (Unplug) und in eine andere (oder dieselbe) CDB einstecken (Plug)
- PDBs öffnen und über CDB-Neustarts hinweg offen halten (SAVE STATE)
- CPU-, Speicher-, I/O- und Storage-Limits je PDB festlegen