ITPub博客

首页 > 数据库 > Oracle > 查看oracle是noncdb 还是cdb的方法

查看oracle是noncdb 还是cdb的方法

原创 Oracle 作者:pingdanorcale 时间:2025-06-14 21:43:46 0 删除 编辑

一、SQL查询法(推荐)

1. 查询  v$database 视图

执行以下SQL语句:


SELECT name, cdb FROM v$database;


  • 结果解读:

    • CDB=YES:当前为CDB架构。

    • CDB=NO:当前为Non-CDB架构。

2. 检查容器视图

若数据库是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。


💻 二、SQL*Plus命令法

1.  SHOW 命令


SHOW con_name   -- 若返回 CDB$ROOT 表示当前在CDB根容器SHOW pdbs       -- 若列出PDB列表(如PDB$SEED、用户PDB),则为CDB:cite[6]:cite[7]
  • Non-CDB中: SHOW pdbs 无输出或报错。

2. 系统函数


SELECT SYS_CONTEXT('USERENV', 'CON_NAME') FROM dual;  -- 返回 CDB$ROOT 或 PDB名称(CDB环境) / 返回数据库名(Non-CDB):

⚙️ 三、其他辅助方法

  1. 检查数据字典表


    SELECT * FROM cdb_tables;  -- CDB中存在此视图,Non-CDB中不存在
  2. 监听服务检查


    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名称 数据库实例名

💡  操作建议:

  1. 优先使用  SELECT name, cdb FROM v$database; 直接确认类型。

  2. 若需管理CDB中的PDB,结合  v$pdbs 和  ALTER SESSION SET CONTAINER=PDB名称 切换容器


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10201716/viewspace-3087760/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-01-02

  • 博文量
    158
  • 访问量
    221190