1. 程式人生 > 資料庫 >ORACLE_OCP多租戶之容器資料庫(CDB)和可插拔資料庫(PDB)

ORACLE_OCP多租戶之容器資料庫(CDB)和可插拔資料庫(PDB)

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個服務

十五、問題: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