You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle 21c中v$database视图数据归属及NAME字段值疑问

关于Oracle CDB/PDB中v$database视图的疑问解答

1. 为什么NAME字段始终为ORCL?

在Oracle的CDB(容器数据库)架构中:

  • 整个CDB拥有唯一的数据库名称(即v$database.NAME),这个名称是创建CDB时指定的,你的场景中就是ORCL。
  • PDB(可插拔数据库)是CDB的组成组件,没有独立的数据库名称,它们依附于CDB存在。
  • v$database是CDB级别的动态性能视图,存储的是整个CDB的核心元数据。无论你连接到CDB根容器(CDB$ROOT)还是某个PDB,查询这个视图返回的都是CDB的名称,因此始终显示ORCL。

2. 连接PDB时,v$database中的数据属于当前PDB还是所属CDB?

连接PDB时,v$database返回的核心标识数据(如NAME)属于所属CDB,而部分状态类字段(如OPEN_MODE)会返回当前PDB的状态,原因如下:

  • v$database本质上属于CDB根容器(CDB$ROOT),并非每个PDB都有独立的视图实例。当你在PDB中查询该视图时,Oracle会隐式访问根容器的元数据,但针对状态类字段会返回当前连接容器的状态。
  • 如果需要查看当前PDB自身的完整信息,应该使用PDB专属的视图,例如:
    -- 查询当前PDB的名称和打开模式
    SELECT name, open_mode FROM v$pdbs WHERE con_id = SYS_CONTEXT('USERENV', 'CON_ID');
    -- 或者查询dba_pdbs视图
    SELECT pdb_name, status FROM dba_pdbs WHERE pdb_name = SYS_CONTEXT('USERENV', 'CON_NAME');
    

内容的提问来源于stack exchange,提问作者Ackerven

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:31:06