閱讀512 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Oracle 12c多租戶特性詳解:PDB 的備份與恢複

640?wx_fmt=jpeg&tp=webp&wxfrom=5&wx_lazy

(題圖來自Oracle VP , Sally Piao的攝影佳作,感謝攝影師授權)

編輯手記:這一節我們將介紹多租戶中的備份與恢複,這篇文章來自<深入解析Oracle>一書的摘錄。


由於 PDB 的引入,Oracle 數據庫的備份和恢複也發生了很多變化,基於 PDB 級別的表空間、庫備份同時被支持。以下通過實際測試介紹一下12c中關於 PDB 的備份恢複過程。



⑴ 啟動歸檔模式

 

首先啟動數據庫的歸檔模式(需要以IMMEDIATE方式關閉數據庫,執行模式更改):


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

根據數據庫的實際情況,設置閃回恢複區(注意在生產環境中設置合理的閃回區非常重要):

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

嚐試使用RMAN連接到數據庫,注意12c中增加了新的用戶SYSBACKUP用於備份管理,並且RMAN中開始支持簡單的SQL查詢語句:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

通過reportschema的命令,可以列出數據庫中的表空間和文件信息等,在12c的輸出中,臨時表空間作為一個獨立的信息部分被顯示出來:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


⑵ 對 PDB 執行備份

 

在12c中支持對單個或多個PDB執行獨立的備份操作,如類似如下命令示範備份多個或單個PDB:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

RECOVER操作也響應的可以針對PDB級別來進行:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下命令對CDB$ROOT進行備份:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下是對單個常規PDB進行備份的執行過程:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

可以通過指定PDB名稱和表空間名稱的方式,對PDB中的表空間進行獨立備份,以下命令備份了名稱為ENMOPDB內部的ENMO表空間文件:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

同樣在備份時可以指定PLUS ARCHIVELOG參數,對歸檔日誌進行同時備份,以下是常規的命令示範:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


⑶ 對PDB及PDB文件執行恢複

 

在執行恢複時,可以針對PDB或者PDB中的表空間進行,以下範例通過對於PDB ENMO中的係統表空間恢複,演示PDB的恢複過程:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下測試演示了對PDB中的單個表空間進行在線恢複的過程。如果某個表空間受損,可以執行緊急的離線操作:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

然後可以通過RMAN執行基於單個表空間進行恢複:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

恢複完成之後可以將表空間在線,這就完成了恢複:

640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


⑷ 對 PDB 執行不完全恢複

 

在12c中,Oracle 還支持基於單個 PDB 的不完全恢複,以下是一個示範的測試過程。


首先連接到 PDB,創建一個測試用戶:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


接下來執行對於全庫的基礎的全庫備份:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

接下來我們在數據庫中執行一個係列的數據操作,創建測試表,插入數據,然後刪除部分數據,記錄刪除前的 SCN 信息:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

現在嚐試通過備份恢複數據庫至 SCN 3254957,也就是刪除數據之前的時間點。

 

在恢複之前需要首先關閉 PDB,執行 PDB 級別的 Restore 操作:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

檢查數據表,數據已經恢複到刪除前的記錄數量:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

注意在不完全恢複過程中,需要產生輔助實例,在後台會生成相應的日誌等目錄結構.以下是完成不完全恢複遺留在輔助目錄中的部分文件:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

在輔助恢複中,生成了大量的臨時目錄和文件,以下是在我的測試環境中遺留的文件目錄:


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=

以下是恢複過程中輔助實例告警日誌記錄的內容(保留部分重要內容供讀者參考):


640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=
640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=


文章轉自數據和雲公眾號,原文鏈接

最後更新:2017-07-18 11:33:11

  上一篇:go  Oracle 12c多租戶特性詳解:PDB 的創建、克隆與維護
  下一篇:go  學習Oracle的三重境界