1. 程式人生 > >理解及應用 Oracle 12c 插拔數據庫

理解及應用 Oracle 12c 插拔數據庫

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 插拔數據庫