一、Oracle 12c 可插拔數據庫體系結構
Oracle 12c 中引入了一個新功能就是Oracle Multitenant,這個功能能夠在多租戶容器數據庫中,建立並維護許多個可插拔數據庫。Oracle Multitenant是Oracle企業版中須要額外付費的組件。然而,在全部Oracle版本中均可以在一個可插拔數據庫中無償使用它。
多租戶容器數據庫(CDB)是指可以容納一個或者多個可插拔數據庫的數據庫。容器是指CDB中的數據文件和元數據的集合。可插拔數據庫是指能夠經過克隆另外一個數據庫輕鬆建立的數據容器。若是有必要,也可將可插拔數據庫從一個CDB傳送到另外一個CDB。
全部含有一組主數據文件和元數據的CDB都是根容器。每一個CDB也會含有種子容器,它是用於建立其它可插拔數據庫的模板。每一個CDB都由一個根容器、一個種子容器和0個、1個或多個可插拔數據庫構成。sql
二、容器數據庫與可插拔數據庫
一、ORACLE MULTITEMENT CONTAINER DATABASE(CDB),即多容器數據庫
是ORACLE12c新引入的特性,這個特性容許CDB容器數據庫中建立而且維護多個數據庫,在CDB中建立的數據庫被稱爲PDB,每一個PDB在CDB中是獨立的,在單獨使用PDB時與普通數據庫無差異。CDB根容器數據庫的主要做用就是容納全部相關的PDB元數據,以及在CDB中對雖有PDB進行管理。
二、多租戶環境組成
(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 |
[root@HOSTNAMEoracle ~]# su - oracle [oracle@HOSTNAMEoracle ~]$ sqlplus / as sysdba
查看當前所在的容器
SQL> show con_name
-session
查詢數據庫的全部容器
SQL> show pdbs;
-oracle
更改成orclpdb,PDB容器
SQL> alter pluggable database orclpdb open; //修改可插拔庫orclpdb打開狀態 SQL> alter session set container=orclpdb; //CDB下切換會話到PDB中 SQL> show con_name //查看當前所在的容器
-ide
SQL> shutdown immediate //在PBD中關閉插拔數據庫 插接式數據庫已關閉。 SQL> startup //在PBD中關閉插拔數據庫 插接式數據庫已打開。
-操作系統
更改回CDB容器
SQL> alter session set container=cdb$root; //切換模式到CDB SQL> show con_name //查看