Vérifier dans quel conteneur vous êtes et interroger toutes les PDB depuis la racine (CDB_ / CONTAINERS)
OracleMultitenantCommande
-- 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;Ce que fait la commande
Affiche le conteneur auquel la session est connectée ; depuis la racine, les vues CDB_ et la clause CONTAINERS() collectent en une seule requête les informations du dictionnaire de toutes les PDB ouvertes.
Quand l'utiliser
Pour vous assurer d'être dans le bon conteneur avant un DDL/changement de paramètre, et pour établir un inventaire de l'espace, des utilisateurs et des objets sur toutes les PDB.
Attention
Lecture seule. Ne créez pas par erreur d'objets applicatifs ou d'utilisateurs locaux dans la racine (CDB$ROOT) ; ALTER SYSTEM dans la racine affecte toute la CDB. Les vues CDB_ et CONTAINERS() ne renvoient que les PDB ouvertes ; les PDB MOUNTED n'apparaissent pas dans le résultat.
Voir aussi
- Créer une nouvelle PDB depuis PDB$SEED
- Cloner une PDB dans la même CDB (clone local / à chaud)
- Cloner une PDB depuis une autre CDB via un DB link (remote clone)
- Débrancher une PDB et la brancher dans une autre CDB (ou la même)
- Ouvrir les PDB et les garder ouvertes après un redémarrage de la CDB (SAVE STATE)
- Définir des limites de CPU, mémoire, E/S et stockage par PDB