12C 重做日志文件處于共享狀態(tài),所以只能在CDB級(jí)別設(shè)置ARCHIVELOG模式,不能在PDB級(jí)別設(shè)置。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的振興網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!RMAN可以比較好的操作cdb和pdb備份,同時(shí)pdb的備份和恢復(fù)可以通過(guò)cdb來(lái)完成。
=備份=
backup備份的內(nèi)容取決于連接到rman的方式,可以連接到cdb$root,也可以連接到相關(guān)的pdb里進(jìn)行備份。
如果連接到cdb,那么該命令對(duì)所有的pdb和cdb$root進(jìn)行備份。
如果連接到pdb,那么該命令只對(duì)連接到的pdb進(jìn)行備份。
只對(duì)部分的pdb進(jìn)行備份:
rman>backup pluggable database PDBPROD1;
只備份pdb的部分表空間:
rman>backup tablespace PDBPROD1:USERS; rman>backup tablespace system, PDBPROD1:sysaux, pdbprod2:users;
如果在備份命令后不加format參數(shù),那么備份的文件默認(rèn)放在閃回恢復(fù)區(qū)中
rman>backup pluggable database pdbprod2 format '/home/oracle/back/%d_%U.full';
=恢復(fù)=
臨時(shí)文件的恢復(fù)
PDB可以在缺少臨時(shí)文件的情況下打開(kāi)。如果在打開(kāi)PDB時(shí)有任何臨時(shí)文件不存在,系統(tǒng)會(huì)自動(dòng)重新創(chuàng)建這些臨時(shí)文件。
還會(huì)在CDB啟動(dòng)時(shí)自動(dòng)重新創(chuàng)建這些臨時(shí)文件。也可以在連接到PDB時(shí)執(zhí)行手動(dòng)重新創(chuàng)建:
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';
控制文件的恢復(fù)
如果控制文件缺少或損壞,由于控制文件屬于CDB,因此實(shí)例很快就會(huì)崩潰,并需要進(jìn)行整個(gè)CDB介質(zhì)恢復(fù)。
?首先啟動(dòng)CDB實(shí)例。
?然后從備份中還原控制文件。
?裝載CDB。
?然后在重置日志中恢復(fù)和打開(kāi)CDB。
SQL>STARTUP nomount SQL>restore controlfile from autobackup ; SQL>alter database mount; SQL>ALTER DATABASE OPEN RESETLOGS;
重做日志文件丟失
Redo日志文件分為在線(xiàn)Redo日志文件和歸檔Redo日志文件。
rman只會(huì)備份歸檔Redo日志文件,不會(huì)備份在線(xiàn)Redo日志文件。
如果在線(xiàn)Redo日志損壞,那么需要分情況進(jìn)行恢復(fù):
1、inactive redo異常ORA-00316 ORA-00327
ALTER DATABASE CLEAR LOGFILE GROUP 2;
2、正常關(guān)閉數(shù)據(jù)庫(kù)ACTIVE、current redo異常ORA-00316 ORA-01623
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1; 或: --ALTER DATABASE CLEAR LOGFILE GROUP 1; recover database until cancel; #輸入具體的在線(xiàn)Redo文件 alter database open resetlogs;
3、數(shù)據(jù)庫(kù)異常關(guān)閉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 ## 使用隱藏參數(shù),跳過(guò)數(shù)據(jù)庫(kù)一致性檢查 ## 最好通過(guò)expdp進(jìn)行邏輯的導(dǎo)出再導(dǎo)入 ## 當(dāng)然,rman備份也是不可少的
4、 恢復(fù)全庫(kù)
startup nomount restore controlfile from ''; alter database mount; restore database; recover database; alter database open resetlogs;
5、不完全恢復(fù) -- 數(shù)據(jù)庫(kù)基于時(shí)間點(diǎn)恢復(fù)(Point-in-Time Recovery,PITR)
不完全恢復(fù)是一種與完全恢復(fù)相反的恢復(fù)方式,是一種丟失數(shù)據(jù)的恢復(fù)方式,也稱(chēng)為數(shù)據(jù)庫(kù)基于時(shí)間點(diǎn)恢復(fù)
(Point-in-Time Recovery,PITR),是將整個(gè)數(shù)據(jù)庫(kù)恢復(fù)到之前的某個(gè)時(shí)間點(diǎn)、日志序列號(hào)或者SCN號(hào)。
PDB原型是CDB的子原型。例如,如果CDB為原型5,PDB為原型3,則PDB的完全指定原型編號(hào)為(5,3)。
PDB的初始原型為0。要查看PDB的原型,請(qǐng)查詢(xún)V$PDB_INCARNATION視圖。
RMAN> LIST INCARNATION; --CDB執(zhí)行PITR-- startup force mount RUN { SET UNTIL SCN = 1712839 ; RESTORE DATABASE ; RECOVER DATABASE ; alter database open resetlogs; } --CDB執(zhí)行TSPITR(表空間不完全恢復(fù))-- rman target / RMAN> RECOVER TABLESPACE TEST UNTIL SCN 1756899 AUXILIARY DESTINATION '/u01/app/oracle/oradata'; RMAN> ALTER TABLESPACE TEST ONLINE; --PDB執(zhí)行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、執(zhí)行TSPITR的表空間不能是數(shù)據(jù)庫(kù)的默認(rèn)永久表空間,否則會(huì)報(bào)錯(cuò)。
2、做該實(shí)驗(yàn)別用12.2.0.1,因?yàn)橛衎ug會(huì)報(bào)錯(cuò)。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 ''; }