您好,登錄后才能下訂單哦!
12C 重做日志文件處于共享狀態,所以只能在CDB級別設置ARCHIVELOG模式,不能在PDB級別設置。
RMAN可以比較好的操作cdb和pdb備份,同時pdb的備份和恢復可以通過cdb來完成。
=備份=
backup備份的內容取決于連接到rman的方式,可以連接到cdb$root,也可以連接到相關的pdb里進行備份。
如果連接到cdb,那么該命令對所有的pdb和cdb$root進行備份。
如果連接到pdb,那么該命令只對連接到的pdb進行備份。
只對部分的pdb進行備份:
rman>backup pluggable database PDBPROD1;
只備份pdb的部分表空間:
rman>backup tablespace PDBPROD1:USERS; rman>backup tablespace system, PDBPROD1:sysaux, pdbprod2:users;
如果在備份命令后不加format參數,那么備份的文件默認放在閃回恢復區中
rman>backup pluggable database pdbprod2 format '/home/oracle/back/%d_%U.full';
=恢復=
臨時文件的恢復
PDB可以在缺少臨時文件的情況下打開。如果在打開PDB時有任何臨時文件不存在,系統會自動重新創建這些臨時文件。
還會在CDB啟動時自動重新創建這些臨時文件。也可以在連接到PDB時執行手動重新創建:
SQL> ALTER TABLESPACE temp ADD TEMPFILE '/u01/app/oracle/oradata/CDB1/PROD2/temp1_02.dbf' SIZE 50M; SQL> ALTER TABLESPACE temp DROP TEMPFILE '/u01/app/oracle/oradata/CDB1/PROD2/temp1_01.dbf';
控制文件的恢復
如果控制文件缺少或損壞,由于控制文件屬于CDB,因此實例很快就會崩潰,并需要進行整個CDB介質恢復。
?首先啟動CDB實例。
?然后從備份中還原控制文件。
?裝載CDB。
?然后在重置日志中恢復和打開CDB。
SQL>STARTUP nomount SQL>restore controlfile from autobackup ; SQL>alter database mount; SQL>ALTER DATABASE OPEN RESETLOGS;
重做日志文件丟失
Redo日志文件分為在線Redo日志文件和歸檔Redo日志文件。
rman只會備份歸檔Redo日志文件,不會備份在線Redo日志文件。
如果在線Redo日志損壞,那么需要分情況進行恢復:
1、inactive redo異常ORA-00316 ORA-00327
ALTER DATABASE CLEAR LOGFILE GROUP 2;
2、正常關閉數據庫ACTIVE、current redo異常ORA-00316 ORA-01623
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1; 或: --ALTER DATABASE CLEAR LOGFILE GROUP 1; recover database until cancel; #輸入具體的在線Redo文件 alter database open resetlogs;
3、數據庫異常關閉current/active redo異常ORA-00316 ORA-01624 ORA-01194
sql>alter system set "_allow_resetlogs_corruption"=true scope=spfile; sql>recover database until cancel; --cancel sql>alter database open resetlogs; sql>startup force mount sql>alter database open resetlogs; sql>alter system set "_allow_resetlogs_corruption"=false scope=spfile; sql>alter system reset "_allow_resetlogs_corruption" scope=spfile sid='*'; sql>shutdown immediate sql>startup ## 使用隱藏參數,跳過數據庫一致性檢查 ## 最好通過expdp進行邏輯的導出再導入 ## 當然,rman備份也是不可少的
4、 恢復全庫
startup nomount restore controlfile from ''; alter database mount; restore database; recover database; alter database open resetlogs;
5、不完全恢復 -- 數據庫基于時間點恢復(Point-in-Time Recovery,PITR)
不完全恢復是一種與完全恢復相反的恢復方式,是一種丟失數據的恢復方式,也稱為數據庫基于時間點恢復
(Point-in-Time Recovery,PITR),是將整個數據庫恢復到之前的某個時間點、日志序列號或者SCN號。
PDB原型是CDB的子原型。例如,如果CDB為原型5,PDB為原型3,則PDB的完全指定原型編號為(5,3)。
PDB的初始原型為0。要查看PDB的原型,請查詢V$PDB_INCARNATION視圖。
RMAN> LIST INCARNATION; --CDB執行PITR-- startup force mount RUN { SET UNTIL SCN = 1712839 ; RESTORE DATABASE ; RECOVER DATABASE ; alter database open resetlogs; } --CDB執行TSPITR(表空間不完全恢復)-- rman target / RMAN> RECOVER TABLESPACE TEST UNTIL SCN 1756899 AUXILIARY DESTINATION '/u01/app/oracle/oradata'; RMAN> ALTER TABLESPACE TEST ONLINE; --PDB執行PITR-- RMAN> ALTER PLUGGABLE DATABASE PDBPROD2 CLOSE; RMAN> RUN { SET UNTIL SCN = 1851648 ; RESTORE pluggable DATABASE PDBPROD2; RECOVER pluggable DATABASE PDBPROD2 AUXILIARY DESTINATION='/u01/app/oracle/oradata'; ALTER PLUGGABLE DATABASE PDBPROD2 OPEN RESETLOGS; } --PDB表空間PITR--TSPITR-- rman target / RMAN> RECOVER TABLESPACE PDBPROD2:test UNTIL SCN 88888 AUXILIARY DESTINATION '/u01/app/oracle/oradata'; RMAN> ALTER TABLESPACE PDBPROD2:test ONLINE;
注意:
1、執行TSPITR的表空間不能是數據庫的默認永久表空間,否則會報錯。
2、做該實驗別用12.2.0.1,因為有bug會報錯。ORA-65254: invalid path specified for the directory,需要打打patch 25074866。
Datapatch Fails With "ORA-65254: invalid path specified for the directory" on PDB Where PATH_PREFIX is set (文檔 ID 2296226.1)
全備的腳本 :
run{ backup database format ''; sql 'alter system archive log current'; backup archivelog all format ''; backup current controlfile format ''; }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。