ORACLE_OCP多租戶之容器資料庫(CDB)和可插拔資料庫(PDB)
阿新 • • 發佈:2021-01-09
ORACLE_OCP多租戶之容器資料庫(CDB)和可插拔資料庫(PDB)
- 文章目標:
- 描述多租戶架構
- 描述ROOT資料庫 CDB和PDB
- 將根與PDB區分開
- 說明PDB的插入操作
- 列出各個結構對容器庫的影響
一、挑戰
- 許多Oracle客戶擁有大量基於Oracle RDBMS構建的“部門”級應用程式,這些應用程式:
- 不需要太多硬體資源
- 具有例項和儲存開銷,防止將大量“部門”資料庫放置在同一物理伺服器和儲存伺服器上
- 不夠複雜,無法吸引DBA的100%關注
- 可能需要大量時間來打補丁或升級所有應用程式
二、非CDB架構
- 多個整體式或非CDB,不共享以下內容:
- 後臺程序
- 程序使用的實體記憶體
- Oracle元資料的多重副本
三、新的多租戶架構:優點
- 在集中管理的平臺中操作多個數據庫以降低成本:
- 減少例項開銷
- 降低儲存成本
- 降低DBA維護資料庫成本,增強了資料庫安全性:
- 沒有應用程式更改
- 快速簡便的配置
- 節省打補丁和升級時間
- 保持職責分離:
- 不同的應用程式都具有相應的管理員
- 應用程式管理員和DBA完全剝離
- 應用程式內的使用者完全剝離
- 提供隔離特性
- 確保與非CDB完全向後相容
- 與RAC完全相容
- 與企業管理器和資源管理器整合
- 允許集中管理多個數據庫
- 備份/災難恢復
- 修補和升級
四、多租戶構型
五、Oracle容器資料庫
- 單個數據庫共享:
- 後臺程序
- 共享程序記憶體
- Oracle元資料
六、原始安裝
- 初始資料庫建立後,唯一的物件是Oracle提供的物件.
七、使用者資料已新增
- 在非CDB中,已新增的使用者資料包括:
- 元資料與資料字典中Oracle提供的資料混合在一起.
八、分離系統和使用者資料
九、使用者容器中的SYSTEM物件
十、容器的命名
十一、設定可插拔資料庫
- 四種方法:
- 從PDB$SEED可插入資料庫建立新的PDB。
- 插入非CDB。
- 將一個PDB從另一個PDB中克隆到相同或另一個CDB中。
- 將未插入的PDB插入相同或另一個CDB。
十二、在多租戶容器資料庫中進行互動
十三、多租戶容器資料庫架構 基於ORACLE 12C R1/R2
- 單資料庫共享:
- 後臺程序
- 共享/程序記憶體
- Oracle元資料
- 重做日誌檔案
- 控制檔案
- UNDO表空間
十四、容器
- V$CONTAINERS中的兩種容器:
- The root container(根容器)
- CDB建立時建立的第一個強制性容器
- Oracle系統提供的通用物件和元資料
- Oracle系統提供的普通使用者和角色
- Pluggable database containers (PDBs)可插拔資料庫
- 應用程式或使用者的容器: (類似於我們ORACLE非CDB的SCHEMA)
- 表空間(永久和臨時)
- Schemas/物件/許可權
- 建立/克隆/拔出/插入
- 使用特定的種子PDB$SEED:快速配置新的PDB
- CDB中包括種253個PDB的限制(12.1.0.x)。在12.2.0.x中可以有4096個PDB
- CDB中限制512個服務
- 應用程式或使用者的容器: (類似於我們ORACLE非CDB的SCHEMA)
- The root container(根容器)
十五、問題:ROOT VS PDB
- 什麼屬於CDB而不屬於特定容器?
- 控制檔案 REDO日誌檔案 SPFILE
- ROOT中的內容不在PDB中?
- CDB的UNDO和預設TEMP表空間
- 系統提供的元資料
- 共享的Oracle提供的資料
- PL / SQL Oracle提供的軟體包(DBMS_SQL…)
- PDB服務名稱
- CDB字典檢視可提供跨PDB的資訊
- CDB資源管理器計劃,允許CDB內的PDB之間進行資源管理
十六、問題:PDB VS ROOT
- PDB中不在根目錄或另一個PDB中的內容:
- 應用程式表空間
- 本地臨時表空間
- 本地使用者和本地角色
- 本地使用者連線到他們所在的PDB
- 非共享的本地元資料
- 與其他PDB的非共享應用程式資料
- PDB 資源計劃
- PDB 的本地UNDO
十七、術語
- DBA, CDBA, and PDBA
- 共有 VS 本地:
- 使用者
- 角色
- 許可權
- CDB vs PDB level:
- CDB資源管理器計劃與PDB資源管理計劃
- CDB或PDB級別的統一審計
- CDB或PDB級別的流處理
十八、公共和本地使用者
十九、公共和本地使用者的許可權和角色
二十、共享和非共享的物件
二十一、Data Dictionary Views—資料字典檢視
SQL> SELECT view_name FROM dba_views WHERE view_name like ‘CDB%’;
- CDB_pdbs: CDB中的所有PDBS
- CDB_tablespaces: CDB中所有的表空間
- CDB_users: CDB中所有的使用者(共同的和本地的)
DBA資料字典檢視在PDB中提供資訊
SQL> SELECT table_name FROM dict WHERE table_name like ‘DBA%’;
二十二、使用CDB和PDB以後產生的相關影響
- 所有PDB都使用一個字符集(建議使用Unicode)
- 每個PDB都受初始化引數影響,但是隻有一個spfile
- 使用PDB相關的物件名稱規範:
- SELECT * FROM HR:apps.tab1
- Use DB Links: SELECT * FROM apps.tab1@HR
- DATAGUARD只在CDB級別
- 僅每個PDB的Oracle Database Vault
- 每個PDB一個主金鑰來加密PDB資料
- CDB和PDB級別的統一審計
- Oracle Scheduler
- Oracle GoldenGate
- Oracle Streams
- CDB和PDB級別的Oracle XStream