12c 多租戶資料庫中克隆和遷移 PDB

Oracle 12c 多租戶架構

多租戶架構支援將多個數據庫合併到單個數據庫中,一個多租戶容器資料庫(CDB)可能包含零個、一個或多個使用者建立的可插拔資料庫(PDB)。它提供了許多優於非 CDB 架構的優點,例如:

降低成本

隔離資料和程式碼

安全分離管理職責

更少的資料庫升級和打補丁

資料和程式碼遷移更容易

多租戶資料庫備受喜歡的一個主要優點是資料和程式碼的快速移動。由於資料字典物件在 root 和 PDBs 之間是分離的,因此可以從一個 CDB 快速拔出 PDB 並插入另一個 CDB。可以藉助 Oracle 12c 中提供的克隆和遷移來實現資料移動。

PDB/Non-CDB 的移動基本上涉及 PDB 的拔出和/或插入。PDB/Non-CDB 的克隆和遷移可以用如下方法:

PDB 克隆 – 本地和遠端

拔出和插入一個 PDB

Non-CDB 克隆和遷移

克隆和遷移也有多種選項:比如完全克隆/遷移、子集克隆、熱克隆和無資料克隆。

PDB 克隆 – 本地和遠端

可以透過在同一 CDB 中克隆本地 PDB 或在另一 CDB 中複製遠端 PDB 來建立新的 PDB。 執行克隆時,源 PDB 應在 READ ONLY 模式下開啟。

克隆一個本地 PDB:

CREATE PLUGGABLE DATABASE FROM

[[CLAUSES]];

克隆一個遠端 PDB:

CREATE PLUGGABLE DATABASE FROM @

[[CLAUSES]];

當執行遠端 PDB 的克隆時,在目標 CDB 的 root 和 PDB 本身或其駐留的 CDB 之間應存在資料庫連結。 在克隆操作期間需要此資料庫連結才能訪問資料。

許多可選的子句(CLAUSES)也可用來指定新 PDB 的資料檔案路徑、日誌記錄、儲存限制,以及源 PDB 的哪些表空間應被克隆。

拔下和插入一個 PDB

當 PDB 被移動到新的 CDB 或不再需要時,PDB 被拔掉。 拔下 PDB 將其與 CDB 分離。 要拔下 PDB,應該指定一個 XML 檔案,它將在拔掉 PDB 後包含 PDB 的元資料:

ALTER PLUGGABLE DATABASE UNPLUG INTO ‘/sample。xml’;

要拔掉一個 PDB,需要先關閉它,並且在其生命週期中至少被開啟過一次。一個拔掉的資料庫仍是 CDB 的一部分並且顯示為 mounted 狀態,直到它被 drop 掉。如果一個 PDB 將被插入到另一個 CDB,它應該先被 drop 掉:

DROP PLUGGABLE DATABASE

KEEP DATAFILES 子句是預設的,所以,drop 一個 PDB 不會自動刪除其資料檔案。

Non-CDB 克隆和遷移

非 CDB 資料庫可以透過克隆或遷移轉換為 PDB。 要執行克隆,non-CDB 應該處於 READ ONLY 模式。 應存在一個數據庫連結,以實現 CDB 和非 CDB 之間的連線。 使用資料庫連結與遠端源連線的使用者必須在 non-CDB 中具有 CREATE PLUGGABLE DATABASE 系統許可權。

源平臺和目標平臺應該具有同樣的位元組序(endianness)。 它們必須具有相容的字符集和國家字符集。

CREATE PLUGGABLE DATABASE FROM @

[[CLAUSES]];

當 PDB 建立完畢,開啟 PDB 之前必須執行 noncdb_to_pdb。sql 指令碼:

@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb。sql

或者,可以使用 DBMS_PDB 包將 non-CDB 插入 CDB。 Non-CDB 上的 DBMS_PDB。DESCRIBE 過程生成一個描述非 CDB 的資料庫檔案的 XML 檔案:

BEGIN

DBMS_PDB。DESCRIBE(

Pdb_descr_file => ‘/sample。xml’);

END;

/

此 XML 檔案現在可用於檢查 non_CDB 資料庫與要作為 PDB 插入的 CDB 之間的相容性:

SET SERVEROUTPUT ON

DECLARE

compatible CONSTANT VARCHAR2(3) :=

CASE DBMS_PDB。CHECK_PLUG_COMPATIBILITY(

pdb_descr_file => ‘/sample。xm’,

pdb_name => ‘’)

WHEN TRUE THEN ‘YES’

ELSE ‘NO’

END;

BEGIN

DBMS_OUTPUT。PUT_LINE(compatible);

END;

/

如果 non-CDB 不相容,則應檢查 PDB_PLUG_IN_VIOLATIONS 檢視中的錯誤。 所有不相容行為必須在 non-CDB 可插入之前予以糾正。一旦解決,就可以建立 PDB:

CREATE PLUGGABLE DATABASE USING ‘/sample。xml’

[[CLAUSES]];

然後執行 noncdb_to_pdb。sql 指令碼:

@$ORACLE_HOME/rdbms/admin/noncdb_to_pdb。sql

優點

多租戶資料庫中的克隆和遷移方法不僅提供了 PDB 的快速移動,而且還可以快速建立 PDB 的克隆來測試新的應用程式,而不會使原始的 PDB 或非 CDB 處於危險之中。 在資料移動方面,各種選項可以在建立 PDB 時提供高度的定製,根據生產需求和冗餘度進行隔離。

12c 多租戶資料庫中克隆和遷移 PDB