亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle12c中CDB數據庫中數據字典架構是怎樣的

發布時間:2021-11-12 14:34:31 來源:億速云 閱讀:112 作者:柒染 欄目:關系型數據庫

這篇文章給大家介紹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提供的數據對象字典)

如下圖描繪了二個基礎數據字典表

左邊圖示中黑色條表示描述系統數據字典的行,綠色條的表示用戶對象產生的行相間到數據字典表 
Oracle12c中CDB數據庫中數據字典架構是怎樣的

3、CDB分離數據字典情形示意圖

在CDB中,數據字典元數據在根和PDB之間分割。

在下圖中,表emp和dept位于PDB中。該用戶數據的數據字典也駐留在PDB中。因此,TAB$PDB中的表具有emp表的行和表dept的行。

Oracle12c中CDB數據庫中數據字典架構是怎樣的

那對于Oracle提供的系統對象(系統級別數據字典)要如何訪問呢,Oracle通過內部指針的方式來實現。

如下圖顯示PDB中的數據字典包含指向根中數據字典的指針。在內部,Oracle提供的對象(如數據字典表定義和PL / SQL包)僅在根中表示。

Oracle12c中CDB數據庫中數據字典架構是怎樣的

這種架構實現了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數據庫中數據字典架構是怎樣的

關于Oracle12c中CDB數據庫中數據字典架構是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阜阳市| 信宜市| 河西区| 朝阳市| 仁布县| 孝感市| 林西县| 新化县| 托里县| 乌兰察布市| 五指山市| 启东市| 佛山市| 乌兰县| 左云县| 宜章县| 出国| 洛浦县| 锦屏县| 若尔盖县| 宁强县| 蒲城县| 溆浦县| 怀宁县| 铁岭县| 江口县| 横峰县| 汉沽区| 安仁县| 云霄县| 洛浦县| 济南市| 千阳县| 玉山县| 定日县| 许昌县| 时尚| 宣城市| 三亚市| 灵石县| 龙山县|