【RECO_ORACLE】Oracle 12c之CDB與PDB的備份與恢復(四)PDB的幾種恢復方式

Attack_on_Jager發表於2021-09-30

說明

相關文章連線:

Oracle 12c之CDB與PDB的備份與恢復(一)什麼是CDB與PDB?: http://blog.itpub.net/69992972/viewspace-2793217/

Oracle 12c之CDB與PDB的備份與恢復(二)備份恢復之前你需要知道的: http://blog.itpub.net/69992972/viewspace-2794508/

Oracle 12c之CDB與PDB的備份與恢復(三)CDB與PDB的備份方式: http://blog.itpub.net/69992972/viewspace-2794518/

Oracle 12c之CDB與PDB的備份與恢復(四)PDB的幾種恢復方式: http://blog.itpub.net/69992972/viewspace-2794540/


PDB的幾種恢復方式

1. PDB庫TESTPDB1的system表空間的資料檔案丟失

如果PDB的system丟失,會導致該PDB崩潰,但是CDB和其他PDB不會被影響到。這種情況下,必須先從CDB開始恢復!方法如下:

$ rman target sys/sys@test_cdb

RMAN> RESTORE DATAFILE 7;

RMAN> RECOVER DATAFILE 7;

RMAN> ALTER PLUGGABLE DATABASE TESTPDB1 OPEN;


注:

目前髮型的版本,某個PDB的system資料檔案丟失有機率造成CDB和其他PDB崩潰,此時需要將CDB啟動到mount 狀態,才能恢復PDB的system資料檔案。這個問題Oracle官方表明會在以後的版本修復這個問題。


2. PDB的非系統資料檔案丟失

假如USER表空間的9號資料檔案丟失。根據實際情況, 丟失的資料檔案可能已經是 offline 狀態,如果沒有,必須先 offline

$ rman target sys/sys@test_pdb  

RMAN> ALTER DATABASE DATAFILE 10 OFFLINE;    --先離線

RMAN> RESTORE DATAFILE 9;

RMAN> RECOVER DATAFILE 9;

RMAN> ALTER DATABASE DATAFILE 10 ONLINE;    --恢復後再聯機

 

3. PDB的某個表空間的所有資料檔案都丟失

某個表空間丟失(比如USERS表空間),但是該PDB還處於開啟狀態。

$ rman target sys/oracle@ test_pdb

RMAN> ALTER TABLESPACE USERS OFFLINE;    --先離線

RMAN> RESTORE TABLESPACE USERS;

RMAN> RECOVER TABLESPACE USERS;

RMAN> ALTER TABLESPACE USERS ONLINE;    --恢復後再聯機

 

4: 可插拔資料庫的所有資料檔案都丟失

$ rman target sys/sys@ test_cdb

RMAN> RESTORE PLUGGABLE DATABASE TESTPDB1;

RMAN> RECOVER PLUGGABLE DATABASE TESTPDB1;

RMAN> ALTER PLUGGABLE DATABASE TESTPDB1 open;

 

注:

1. 可能會混淆的一個地方是:如果某個PDB如果丟失了,並不等同於刪除了該PDB。因為PDB的丟失可能是指因為一些意外情況下的資料庫以及檔案的誤刪除或者損壞, 但是它的metadata資料還是存在的。在這種metadata還存在的情況下,從備份中恢復出來是可行的。

但如果是刪除了可插拔資料庫,這樣同樣會把metadata從repository中刪除。這種情況下做restore就會遇到錯誤:

RMAN-06813: could not translate pluggable database TESTPDB1


2. 最重要的一點是:如果我們只對單個PDB備份進行備份,是不能夠恢復不同伺服器中的單個可插拔資料庫或執行時間點恢復,必須要同時擁有PDB和對應的CDB的備份!

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69992972/viewspace-2794540/,如需轉載,請註明出處,否則將追究法律責任。

相關文章