Oracle12c中CDB数据库中数据字典架构是怎样的

54次阅读
没有评论

共计 2194 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章给大家介绍 Oracle12c 中 CDB 数据库中数据字典架构是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

数据字典就是元数据的集合,比如创建的表,列,约束,触发器等等这些都是元数据,需要保存到数据库中。除此之外,Oracle 自身的一些数据库对象,如目录,PL/SQL 代码等等这些都是元数据,都需要存放在数据字典中。随着 12c 容器数据的普及,Oracle 数据字典发生了哪些变化呢,下文即是具体描述。

一、数据字典及其形成
1、数据字典

数据字典是元数据的集合,从逻辑上和物理上描述了数据库及内容,存储于 SYSTEM 与 SYSAUX 表空间内的若干段。

SYS 用户拥有所有的数据字典表,数据字典基本一般以
2、数据字典的形成

在数据库创建阶段创建,在使用阶段维护和更新

无法通过 DML 操作来修改,只能通过相关的命令修改系统,来达到间接修改数据字典。

3、数据字典包括的内容

数据库对象的定义信息

用户定义信息

PL/SQL 代码

用户创建的其他对象等

关于数据字典详细介绍可以参考:Oracle 数据字典和数据字典视图

二、CDB 数据库中数据字典架构
1、数据字典存放方式的变更

在 Oracle 12c 之前的数据库版本,系统数据字典和用户数据字典采取了混合存放的处理方式。

在 Oracle 12c CDB 数据库中采取分离存放的方式,及各个 PDB 数据字典独立存放。

从用户和应用程序的角度来看,CDB 中每个容器中的数据字典是分开的,因为它将在非 CDB 中。

2、非 CDB 混用数据字典情形示意图

在新创建的不包含用户数据的非 CDB 中,数据字典仅包含系统元数据。

例如,TAB$ 表包含仅描述 Oracle 提供的表的行,例如 TRIGGER$ 和 SERVICE$。

随着用户数据库对象添加到数据库,则用户添加的这些对象信息被混合存放到了系统数据字典(即 Oracle 提供的数据对象字典)

如下图描绘了二个基础数据字典表

左边图示中黑色条表示描述系统数据字典的行,绿色条的表示用户对象产生的行相间到数据字典表  

3、CDB 分离数据字典情形示意图

在 CDB 中,数据字典元数据在根和 PDB 之间分割。

在下图中,表 emp 和 dept 位于 PDB 中。该用户数据的数据字典也驻留在 PDB 中。因此,TAB$PDB 中的表具有 emp 表的行和表 dept 的行。

那对于 Oracle 提供的系统对象 (系统级别数据字典) 要如何访问呢,Oracle 通过内部指针的方式来实现。

如下图显示 PDB 中的数据字典包含指向根中数据字典的指针。在内部,Oracle 提供的对象(如数据字典表定义和 PL / SQL 包)仅在根中表示。

这种架构实现了 CDB 内的两个主要目标:

???? 减少重复

???????? 例如,DBMS_ADVISORCDB 不是将 PL / SQL 包的源代码存储在每个 PDB 中,而是将其存储在 CDB$ROOT 其中,从而节省了磁盘空间。

???? 易于数据库升级

???????? 如果数据字典表的定义存在于每个 PDB 中,并且如果定义在新版本中更改,则每个 PDB 将需要单独升级以捕获更改。在根中存储表定义只有一次消除了这个问题。

4、元数据和数据链接

CDB 使用内部链接机制来分离数据字典信息。

具体来说,Oracle 数据库使用以下自动管理的指针:

元数据链接

??Oracle 数据库仅在 CDB 根目录中存储有关字典对象的元数据。例如,数据字典视图下的 OBJ$ 字典表的列定义 DBA_OBJECTS 仅存在于根目录中。如前一图示,OBJ$ 在每个 PDB 表使用称为内部机构的元数据链接指向存储在根定义的 OBJ$。

?? 该数据对应于元数据链路驻留在其 PDB,而不是在根。例如,如果您在 hrpdb 上的表 mytable 中添加行,然后将行存储在 PDB 数据文件。PDB 和根中的数据字典视图包含不同的行。描述表 mytable 的一个新行被添加到 hrpdb 的 OBJ$,但是不存在于 CDB 根目录中的 OBJ$。因此,查询 DBA_OBJECTS 在 CDB 根和 DBA_OBJECTS 在 hrdpb 显示出不同的结果。

数据链接

?? 注意: 
??Oracle 数据库 12 c 版本 1(12.1.0.2)中的数据链接称为对象链接。

?? 在某些情况下,Oracle 数据库将一个对象的数据(不仅仅是元数据)存储在应用程序根目录中。应用程序 PDB 使用称为数据链接的内部机制来引用应用程序根目录中的对象。创建数据链接的应用程序 PDB 还存储数据链接描述。数据链接继承其所涉及的对象的数据类型。

扩展数据链接

?? 扩展数据链路是数据链路和元数据链路的混合。像数据链接一样,扩展数据链接引用应用程序根目录中的对象。然而,扩展数据链路也引用 PDB 中的相应对象。像元数据链接一样,应用程序 PDB 中的对象从应用程序根目录中的相应对象继承元数据。

?? 在应用程序根目录中查询时,扩展的数据链接对象仅从应用程序根目录中获取行。然而,当在应用程序 PDB 中查询时,扩展的数据链接对象从应用程序根和应用程序 PDB 中获取行。

Oracle 数据库自动创建和管理元数据和数据链接 CDB$ROOT。用户无法添加,修改或删除这些链接。

三、数据字典视图

在启用 CDB 之后,数据字典相关视图也有一些变化,主要是增加了 CDB 相关的视图。如下图所示: 

关于 Oracle12c 中 CDB 数据库中数据字典架构是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计2194字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)