首页 > 数据库 > Oracle > 查看oracle是noncdb 还是cdb的方法
v$database 视图执行以下SQL语句:
SELECT name, cdb FROM v$database;
结果解读:
CDB=YES:当前为CDB架构。
CDB=NO:当前为Non-CDB架构。
若数据库是CDB,可进一步查询容器信息:
SELECT con_id, name, open_mode FROM v$containers; -- 显示所有容器(CDB$ROOT、PDB$SEED及PDBs)SELECT name, open_mode FROM v$pdbs; -- 仅显示PDB信息:cite[2]:cite[6]:cite[7]
Non-CDB中:这些视图无有效数据或查询报错 3。
SHOW 命令SHOW con_name -- 若返回 CDB$ROOT 表示当前在CDB根容器SHOW pdbs -- 若列出PDB列表(如PDB$SEED、用户PDB),则为CDB:cite[6]:cite[7]
Non-CDB中:
SHOW pdbs 无输出或报错。
SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM dual; -- 返回 CDB$ROOT 或 PDB名称(CDB环境) / 返回数据库名(Non-CDB):检查数据字典表
SELECT * FROM cdb_tables; -- CDB中存在此视图,Non-CDB中不存在
监听服务检查
lsnrctl status
CDB环境:输出包含多个Service(每个PDB一个服务) 10。
Non-CDB环境:通常仅有一个服务。
| 方法 | CDB特征 | Non-CDB特征 |
|---|---|---|
SELECT cdb FROM v$database |
CDB='YES' |
CDB='NO' |
SHOW pdbs |
显示PDB列表 | 无输出或报错 |
v$containers 视图 |
多行记录(容器列表) | 无有效数据或报错 |
SYS_CONTEXT 返回值 |
CDB$ROOT 或 PDB名称 |
数据库实例名 |
💡 操作建议:
优先使用
SELECT name, cdb FROM v$database;直接确认类型。若需管理CDB中的PDB,结合
v$pdbs和ALTER SESSION SET CONTAINER=PDB名称切换容器
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10201716/viewspace-3087760/ ,如需转载,请注明出处,否则将追究法律责任。