oracle 12c rman备份与恢复,12C RMAN备份恢复
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?'';
}
總結
以上是生活随笔為你收集整理的oracle 12c rman备份与恢复,12C RMAN备份恢复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用RMAN备份与恢复数据库(1)——R
- 下一篇: 解析IP代理软件市场上的发展现状