12C RMAN备份恢复
12C 重做日志文件处于共享状态,所以只能在CDB级别设置ARCHIVELOG模式,不能在PDB级别设置。
RMAN可以比较好的操作cdb和pdb备份,同时pdb的备份和恢复可以通过cdb来完成。
=备份=
backup备份的内容取决于连接到rman的方式,可以连接到cdb$root,也可以连接到相关的pdb里进行备份。
如果连接到cdb,那么该命令对所有的pdb和cdb$root进行备份。
如果连接到pdb,那么该命令只对连接到的pdb进行备份。
只对部分的pdb进行备份:
rman>backuppluggabledatabasePDBPROD1;
只备份pdb的部分表空间:
rman>backuptablespacePDBPROD1:USERS;rman>backuptablespacesystem,PDBPROD1:sysaux,pdbprod2:users;
如果在备份命令后不加format参数,那么备份的文件默认放在闪回恢复区中
rman>backuppluggabledatabasepdbprod2format'/home/oracle/back/%d_%U.full';
=恢复=
临时文件的恢复
PDB可以在缺少临时文件的情况下打开。如果在打开PDB时有任何临时文件不存在,系统会自动重新创建这些临时文件。
还会在CDB启动时自动重新创建这些临时文件。也可以在连接到PDB时执行手动重新创建:
SQL>ALTERTABLESPACEtempADDTEMPFILE'/u01/app/oracle/oradata/CDB1/PROD2/temp1_02.dbf'SIZE50M;SQL>ALTERTABLESPACEtempDROPTEMPFILE'/u01/app/oracle/oradata/CDB1/PROD2/temp1_01.dbf';
控制文件的恢复
如果控制文件缺少或损坏,由于控制文件属于CDB,因此实例很快就会崩溃,并需要进行整个CDB介质恢复。
•首先启动CDB实例。
•然后从备份中还原控制文件。
•装载CDB。
•然后在重置日志中恢复和打开CDB。
SQL>STARTUPnomountSQL>restorecontrolfilefromautobackup;SQL>alterdatabasemount;SQL>ALTERDATABASEOPENRESETLOGS;
重做日志文件丢失
Redo日志文件分为在线Redo日志文件和归档Redo日志文件。
rman只会备份归档Redo日志文件,不会备份在线Redo日志文件。
如果在线Redo日志损坏,那么需要分情况进行恢复:
1、inactive redo异常ORA-00316 ORA-00327
ALTERDATABASECLEARLOGFILEGROUP2;
2、正常关闭数据库ACTIVE、current redo异常ORA-00316 ORA-01623
ALTERDATABASECLEARUNARCHIVEDLOGFILEGROUP1;或:--ALTERDATABASECLEARLOGFILEGROUP1;recoverdatabaseuntilcancel;#输入具体的在线Redo文件alterdatabaseopenresetlogs;
3、数据库异常关闭current/active redo异常ORA-00316 ORA-01624 ORA-01194
sql>altersystemset"_allow_resetlogs_corruption"=truescope=spfile;sql>recoverdatabaseuntilcancel;--cancelsql>alterdatabaseopenresetlogs;sql>startupforcemountsql>alterdatabaseopenresetlogs;sql>altersystemset"_allow_resetlogs_corruption"=falsescope=spfile;sql>altersystemreset"_allow_resetlogs_corruption"scope=spfilesid='*';sql>shutdownimmediatesql>startup##使用隐藏参数,跳过数据库一致性检查##最好通过expdp进行逻辑的导出再导入##当然,rman备份也是不可少的
4、恢复全库
startupnomountrestorecontrolfilefrom'';alterdatabasemount;restoredatabase;recoverdatabase;alterdatabaseopenresetlogs;
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>LISTINCARNATION;--CDB执行PITR--startupforcemountRUN{SETUNTILSCN=1712839;RESTOREDATABASE;RECOVERDATABASE;alterdatabaseopenresetlogs;}--CDB执行TSPITR(表空间不完全恢复)--rmantarget/RMAN>RECOVERTABLESPACETESTUNTILSCN1756899AUXILIARYDESTINATION'/u01/app/oracle/oradata';RMAN>ALTERTABLESPACETESTONLINE;--PDB执行PITR--RMAN>ALTERPLUGGABLEDATABASEPDBPROD2CLOSE;RMAN>RUN{SETUNTILSCN=1851648;RESTOREpluggableDATABASEPDBPROD2;RECOVERpluggableDATABASEPDBPROD2AUXILIARYDESTINATION='/u01/app/oracle/oradata';ALTERPLUGGABLEDATABASEPDBPROD2OPENRESETLOGS;}--PDB表空间PITR--TSPITR--rmantarget/RMAN>RECOVERTABLESPACEPDBPROD2:testUNTILSCN88888AUXILIARYDESTINATION'/u01/app/oracle/oradata';RMAN>ALTERTABLESPACEPDBPROD2:testONLINE;
注意:
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{backupdatabaseformat'';sql'altersystemarchivelogcurrent';backuparchivelogallformat'';backupcurrentcontrolfileformat'';}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。