官术网_书友最值得收藏!

1.5.2 CDB結構

1.Oracle多租戶數據庫的基本概念

(1)CDB

多租戶結構使得Oracle數據庫可成為容器數據庫(Container DataBase,CDB)。多租戶容器數據庫是指能夠容納一個或多個插接式數據庫的數據庫。Oracle 12c中的每個數據庫要么是CDB,要么是非CDB(no CDB),即傳統的數據庫。CDB的結構如圖1-6所示。

圖1-6 CDB的結構

(2)容器

容器是指CDB中的數據文件和元數據的集合。CDB中的根、種子和PDB均稱為容器。CDB中的每個容器有唯一的容器編號(ID)和名稱。每個CDB都由一個根容器、一個種子容器和多個(0~N)插接式數據庫構成。

(3)根容器

根容器(簡稱為根)是每個PDB的對象、模式對象和非模式對象的集合。每個CDB只能有一個名字為CDB$ROOT的根容器,在根中存儲管理PDB所需的元數據和公用用戶。根中不存儲用戶數據,即不能在根中添加數據或修改根中的系統模式。可以建立管理數據庫的公用用戶,具有權限的公用用戶可在PDB之間切換。

(4)種子容器

每個CDB只能有一個名稱為PDB$SEED的種子容器,它是創建PDB的模板。不能修改種子容器中的對象,也不能向種子容器中添加對象。

(5)PDB

插接式數據庫(Pluggable DataBases,PDB)由一組可插拔的模式、模式對象和非模式對象組成,包含數據和應用的代碼,如支持人力資源或銷售應用的PDB。PDB可以通過復制另一個數據庫來創建。如果有必要,也可以將PDB從一個CDB傳送到另一個CDB。每個CDB都有一個用于創建其他插接式數據庫的種子容器。所有PDB都屬于某個CDB。

PDB完全兼容Oracle 12c以前的Oracle數據庫。可根據應用需求將PDB添加到某個CDB中。PDB與非CDB的兼容性保證了客戶程序可以像以前一樣通過Oracle Net連接到PDB上。基于CDB上的應用與基于非CBD應用在安裝過程和運行后的結果都完全一樣。像Oracle數據保護、數據庫備份與恢復這樣對整個數據庫的操作,在整個非CDB上進行的操作也與整個CDB上的一樣。

(6)公用用戶和本地用戶

插接式數據庫環境中有公共用戶和本地用戶。

①公共用戶。公共用戶(Common User)是在Oracle 12c中引入的新概念,僅存在于多租戶數據庫環境中。公共用戶是指存在于根容器和所有插接式數據庫中的用戶,即在根和每個PDB中都有同一標識的用戶。初始時必須在根容器中創建這種用戶,然后它們會在所有現存的插接式數據庫和將來創建的插接式數據庫中被自動創建。

公共用戶可以登錄到根和任何有權限的PDB中,然后根據相應的權限完成指定操作。建立PDB或從CDB中撥出PDB必須由公用用戶來完成。如果在連接根容器時為公共用戶賦予權限,那么該權限不會傳遞到插接式數據庫中。如果需要為公共用戶賦予能夠傳遞到插接式數據庫的權限,可創建公共角色并將之分配給公共用戶。

數據庫管理員以公共用戶連接到CDB可管理整個CDB和根的屬性,也可管理PDB的部分屬性。管理員可建立、插接(Plug in)、撥出(Unplug)和刪除PDB,也可指定整個CDB的臨時表空間和根的默認表空間,也可以改變PDB的打開模式。

公共用戶或公用角色的名稱必須以C##開頭。SYS和SYSTEM用戶是Oracle在CDB中自動創建的公用用戶。

②本地用戶。本地用戶(Local User)是指在插接式數據庫中創建的普通用戶。在插接式數據庫中使用本地用戶的方法,與在非CDB數據庫中使用用戶的方法相同。本地用戶的管理方法中沒有特殊內容。可以使用非CDB數據庫中管理用戶的方法管理本地用戶。

2.CDB的結構

CDB的結構與非CDB數據庫的結構不同。圖1-6顯示一個CDB數據庫,它含有一個根容器、一個種子容器和兩個插接式數據庫(SALEPDB和HRPDB)。

下面將就圖1-6中所示的內容進行說明。

(1)圖1-6展示了一個非RAC配置,因此,僅有一套內存分配方案和一組后臺進程,即僅使用了一個實例。這個CDB中的所有PDB都使用同一個實例和同一組后臺進程。

(2)具有權限的用戶可連接CDB。連接CDB就是連接CDB$ROOT根容器。可通過SYS用戶訪問根容器,就像訪問非CDB數據庫一樣。

(3)種子容器(PDB$SEED)只是用于創建插接式數據庫的模板。可以連接只讀的種子容器,但不能使用它執行任何事務。

主站蜘蛛池模板: 广宗县| 昭觉县| 榆社县| 临沧市| 卓尼县| 海丰县| 吉林市| 南昌县| 苏尼特左旗| 龙江县| 沁水县| 白河县| 济阳县| 门源| 丹江口市| 无极县| 龙州县| 定兴县| 丹巴县| 合江县| 西和县| 乌苏市| 福安市| 唐山市| 吴江市| 怀集县| 遵义县| 维西| 石景山区| 正蓝旗| 杨浦区| 永嘉县| 五莲县| 大埔县| 台山市| 买车| 衡山县| 涟源市| 万州区| 北流市| 扶绥县|