说明
相关文章连接:
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博客 ” ,链接:https://blog.itpub.net/69992972/viewspace-2794540/ ,如需转载,请注明出处,否则将追究法律责任。