理解及應用 Oracle 12c 插拔數據庫
阿新 • • 發佈:2018-10-10
src session alt obj 結構 rtu head code oot 一、概述
1、Oracle 12c 可插拔數據庫體系結構
Oracle 12c 中引入了一個新功能就是Oracle Multitenant,這個功能可以在多租戶容器數據庫中,創建並維護許多個可插拔數據庫。Oracle Multitenant是Oracle企業版中需要額外付費的組件。然而,在所有Oracle版本中都可以在一個可插拔數據庫中免費使用它。
多租戶容器數據庫(CDB)是指能夠容納一個或者多個可插拔數據庫的數據庫。容器是指CDB中的數據文件和元數據的集合。可插拔數據庫是指可以通過克隆另一個數據庫輕松創建的數據容器。如果有必要,也可將可插拔數據庫從一個CDB傳送到另一個CDB。
所有含有一組主數據文件和元數據的CDB都是根容器。每個CDB也會含有種子容器,它是用於創建其它可插拔數據庫的模板。每個CDB都由一個根容器、一個種子容器和0個、1個或多個可插拔數據庫構成。
2、容器數據庫與可插拔數據庫
1、ORACLE MULTITEMENT CONTAINER DATABASE(CDB),即多容器數據庫
是ORACLE12c新引入的特性,這個特性允許CDB容器數據庫中創建並且維護多個數據庫,在CDB中創建的數據庫被稱為PDB,每個PDB在CDB中是獨立的,在單獨使用PDB時與普通數據庫無差別。CDB根容器數據庫的主要作用就是容納所有相關的PDB元數據,以及在CDB中對雖有PDB進行管理。
2、多租戶環境組成
(1)ROOT:ROOT容器數據庫,是CDB環境中的根數據庫,在跟數據庫中含有主數據字典視圖,其中包含了與ROOT容器有關的元數據和CDB中包含的所有PDB信息,在CDB環境中被標識為CDB$ROOT,每個CDB環境中只能有一個ROOT容器數據庫。(2)PDB$SEED:PDB$SEED為PDB的種子,其中提供了數據文件,在PDB環境中被標識為PDB$SEED,是創建PDB的模板,可以連接PDB$SEED但是不能執行任何事務,因為PDB$SEED是只讀的,不可修改。
(3)PDBS:PDBS數據庫,在CDB環境中每個PDB都是獨立存在的,與傳統ORACLE數據庫無差別,每個PDB擁有自己的數據文件和OBJECTS,唯一的區別就是PDB可以插入到PDB中,以及從CDB中拔出。當用戶連接到PDB時不會感覺到根容器和其他PDB的存在。
二、實驗環境
主機 | 操作系統 | IP地址 | 數據庫版本 |
---|---|---|---|
Oracle | CentOS 7 | 192.168.100.135 | oracle 12c |
進入Oracle
[root@HOSTNAMEoracle ~]# su - oracle
[oracle@HOSTNAMEoracle ~]$ sqlplus / as sysdba
三、CDB與PDB操作
查看當前所在的容器
SQL> show con_name
-
查詢數據庫的所有容器
SQL> show pdbs;
-
更改為orclpdb,PDB容器
SQL> alter pluggable database orclpdb open; //修改可插拔庫orclpdb打開狀態 SQL> alter session set container=orclpdb; //CDB下切換會話到PDB中 SQL> show con_name //查看當前所在的容器
-
SQL> shutdown immediate //在PBD中關閉插拔數據庫 插接式數據庫已關閉。 SQL> startup //在PBD中關閉插拔數據庫 插接式數據庫已打開。
-
更改回CDB容器
SQL> alter session set container=cdb$root; //切換模式到CDB SQL> show con_name //查看
理解及應用 Oracle 12c 插拔數據庫