DBAtlas · 数据库运维图谱

确认当前所在容器,并从 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 不会出现在结果中。

在 DBAtlas 中打开 →

相关内容