Oracle 12c多租戶特性詳解:PDB 的出與入 InAndOut
將 Non-PDB 插入 CDB
在12c中,可以將一個非 CDB(也即NON-CDB)插入到 CDB 中,這個過程需要在只讀模式下進行。
以下測試首先啟動一個常規的 Non-CDB 資料庫:
這個資料庫中已經預先建立了一個資料庫使用者,並且有一個測試表:
在12c中,新增加的包 DBMS_PDB 可以用於進行遷移:
在 OPEN 模式下執行 DESCRIBE 操作會出現錯誤,提示該操作只能在只讀模式下進行:
以下啟動資料庫到只讀模式:
執行 DBMS _PDB.DESCRIBE 過程,然後關閉資料庫:
這個步驟在 $ORACLE_HOME/dbs 目錄下生成了一個 XML 檔案,用於描述需要遷移的資料檔案,其主要內容如下:
在 CDB 中執行 PLUG,就可以將這個 NON-CDB 插入到 CDB 中,指定 COPY 引數,將檔案複製到 CDB 的相應目錄下,如果已經複製到特定目錄,則可以指定 NOCOPY 選項,就無需再複製一次。這也是對以前版本中傳輸表空間技術的增強:
以下列表中可以看到,新的 PDB 資料庫已經被插入到 CDB 中:
插入成功之後可以連線到資料庫進行資料驗證:
UNPLUG 資料庫
透過 UNPLUG 命令可以拔出一個 PDB:
以上命令生成一個 XML 檔案,預設儲存於 $ORACLE_HOME/dbs目錄下:
也可以在以上命令中指定目錄,這樣 XML 檔案就可以儲存於特定位置:
XML 檔案包含了資料檔案的描述資訊,用於轉移資料庫。UNPLUG 後 PDB 的狀態被變更為MOUNTED,資料庫被關閉:
已經 UNPLUG 的資料庫不能在當前資料庫中直接開啟:
透過如下命令在當前資料庫中刪除一個已經 UNPLUG 的資料庫:
如果要集聯刪除所有的資料檔案,則可以將 keep datafiles 指令換成 including datafiles.
CDB 的檢視與原理
隨著 CDB、PDB 的引入一系列的檢視對應引入 ,用於資料庫資訊的查詢和展現。
如在 CDB 層面的使用者資訊查詢,可以透過新的檢視 CDB_USERS 進行,透過這個檢視可以直觀的看到一個使用者在哪些容器中存在:
查詢臨時檔案可以透過檢視 CDB_TEMP_FILES 進行:
對於常規的 DBA 類檢視,在 CDB 中都具有對應的檢視。下表列出了與常用資料庫檢視相對應的一些 CDB 檢視:
在資料庫的建立指令碼中,還可以找到最核心的底層表 container$ 的建立語句,該底層表用於記錄各容器的資訊,透過該表與其他物件的關聯,CDB 的內容可以被隔離和識別出來:
透過資料庫建立的核心指令碼 - cdcore.sql ,可以找到部分檢視的建立方式,如以下指令碼記錄了 DBA_PDBS 檢視的建立方式,正是透過 container$ 和 obj$ 的關聯過濾出容器物件的:
對於 PDB 的常規檢視建立,另外一個核心指令碼是 -catcdbviews.sql,在這個指令碼中建立了一個 PackageCDBView,透過這個程式包,根據現有的 DBA 檢視批次建立 CDB 所需要的內部檢視、同義詞並進行授權:
接下來的包體中定義了詳細的操作步驟,其中最核心的是根據資料字典檢視批次的建立 CDB 所需要的檢視:
最終執行轉換成類似如下的一個系列 SQL:
瞭解了這些內部過程,我們就可以對 CDB 的各類檢視結構有各大致的瞭解。
PDB 為雲端計算而生
在 Oracle 資料庫中,PDB 新特性的引入,被稱為是為雲端計算而生的新技術,在雲資料庫平臺上,需要將不同使用者的物件、許可權等資訊徹底分割開來,原有的 Schema 方式並不適合,而 PDB 完全滿足隔離與遷移的需要,徹底簡化了雲資料庫平臺的管理和維護。
我們先來看一看在 Oracle 11g 版本之上的 Oracle 雲資料庫平臺,下圖包含了銷售方式,Oracle 公司透過儲存空間不同來進行收費區分,銷售單位只能為1個 Schema,這是 Oracle Database 11g 版本的特性決定的,如果一個企業能否隨意建立 Schema,則資料庫會變得異常混亂,而 PDB 模式透過隔離可以徹底解決這一問題。
目前開放的雲資料庫平臺,可以透過申請獲得試用的賬戶。在獲得了資料庫賬戶之後,可以透過 Oracle Application Express 進行線上的應用開發和釋出,後臺的資料物件可以透過 APEX 內嵌的管理功能進行維護:
在 Oracle SQL Developer 工具中,已經整合了“Cloud Connection”模組用於雲端的資料庫管理:
雖然目前 Oracle 的雲資料庫看起來還相當簡單,但是不論如何,雲資料庫的時代已經慢慢走來。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-2133431/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 12c多租戶特性詳解:PDB 的建立、克隆與維護Oracle
- Oracle 12c多租戶特性詳解:PDB 的備份與恢復Oracle
- Oracle 12c 多租戶 CDB 與 PDB 備份Oracle
- Oracle 12c 多租戶 手工建立 pdb 與 手工刪除 pdbOracle
- Oracle 12c 多租戶在 CDB 中 Plug A PDB,Unplugging A PDBOracle
- Oracle 12c 多租戶 CDB 與 PDB之 shared undo 與 Local undo 切換Oracle
- Oracle 12c 多租戶配置和修改 CDB 和 PDB 引數Oracle
- Oracle 12c多租戶特性詳解:全域性使用者與本地使用者的原理與維護Oracle
- Oracle 18c新特性詳解-多租戶專題Oracle
- Oracle 12c 多租戶 CDB 與 PDB 級別 expdb 與 impdb(表、使用者、全庫)Oracle
- Oracle多租戶特性的常用操作Oracle
- 12C多租戶關於CDB、PDB的常用SQL語句SQL
- ORACLE 12C新特性——CDB與PDBOracle
- 詳解ABP框架的多租戶框架
- Part III PDB建立概述-Oracle多租戶管理員指南Oracle
- Oracle 20C 多租戶_新特性Oracle
- oracle 12c 多租戶 pdb 恢復(單個pdb資料檔案、非系統pdb表空間、整個pdb資料庫)Oracle資料庫
- Oracle12c多租戶如何連線到CDB或PDB、CDB與PDB容器切換Oracle
- Oracle 12c 多租戶專題|12cR2中PDB記憶體資源管理Oracle記憶體
- oracle 12c 多租戶體系結構概念Oracle
- Oracle 12c系列(一)|多租戶容器資料庫Oracle資料庫
- Oracle12c多租戶CDB 與 PDB 引數檔案位置探討、查詢 CDB 與 PDB 不同值的引數Oracle
- 多租戶:防止意外建立可插拔資料庫(PDB)- Lone-PDB資料庫
- Oracle12c多租戶如何啟動關閉CDB或PDB (PDB自動啟動)Oracle
- Oracle 12c多租戶的一些日常簡單維護Oracle
- Oracle12c多租戶資料庫備份與恢復 - 恢復一個PDBOracle資料庫
- Oracle 18c新特性:多租戶艦隊 CDB FleetOracle
- GoldenGate 12.2抽取Oracle 12c多租戶配置過程GoOracle
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 2Oracle資料庫
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 1Oracle資料庫
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 3Oracle資料庫
- Oracle12c多租戶資料庫備份與恢復 - PDB中資料檔案的恢復Oracle資料庫
- 12c多租戶架構下部署GoldenGate 12c架構Go
- Oracle 12c 多租戶專題|CDB後設資料內幕Oracle
- 多租戶
- Oracle12c多租戶資料庫 - PDB資料庫的unplug及plug 參考Oracle資料庫
- ORACLE 12C pdb受限解決思路Oracle
- 關於oracle 12c多租戶可插拔資料庫的啟停分析(一)Oracle資料庫