Oracle 中的 v$pdbs 和 dba_pdbs 有什么区别?

What's the difference between v$pdbs and dba_pdbs in Oracle?

我是可插拔数据库的新手,对字典视图 DBA_PDBSV$PDBS 感到困惑。有什么区别?该文档也没有帮助:

V$PDBS displays information about PDBs associated with the current instance. 1

SELECT * FROM v$pdbs;

CON_ID  NAME      OPEN_MODE  ...
2       PDB$SEED  READ ONLY  
3       XEPDB1    READ WRITE

DBA_PDBS describes PDBs belonging to a given CDB. 2

SELECT * FROM dba_pdbs;

PDB_ID  PDB_NAME  STATUS ...
2       PDB_SEED  NORMAL
3       XEPDB1    NORMAL

在内部,V$PDBS 似乎是基于 SYS.X$CON,而 DBA_PDBS 是基于 SYS.CONTAINERS$

V$DATAFILE vs DBA_DATA_FILES 或 V$TABLESPACE vs DBA_TABLESPACES 也有类似的情况:在这种情况下,这些视图数据是从数据库控制文件中读取的,并且对于 [=12] 可能是多余的=] 目的(即,当 SYSTEM 表空间尚不可用时,DBAxxx 视图不存在,但当数据库实例需要处理数据文件和表空间时)。除了 DBA_PDBS.

之外,我们还有 V$PDBS 可能是出于同样的原因