确认当前所在容器,并从 root 查询所有 PDB(CDB_ / CONTAINERS)
Oracle多租户命令
-- 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;作用
显示会话所连接的容器;在 root 中,CDB_ 视图和 CONTAINERS() 子句可在单个查询中收集所有已打开 PDB 的数据字典信息。
适用场景
在 DDL/参数变更前确认所处容器正确,以及建立所有 PDB 的空间、用户和对象清单。
注意
只读。不要在 root(CDB$ROOT)中误建应用对象或本地用户;在 root 中执行 ALTER SYSTEM 会影响整个 CDB。CDB_ 视图和 CONTAINERS() 只返回已打开的 PDB;MOUNTED 的 PDB 不会出现在结果中。