Oracle 12c PDB的数据备份恢复(r12笔记第84天)

作者: admin 分类: 公众号存档            0 次浏览 发布时间: 2017-06-03 23:36

公众号:杨建荣的学习笔记 · 作者:杨建荣 · 发布:2017-06-03 23:36:23 · 原文链接

今天测试了一下12c中的PDB还原恢复,里面还是有不少的差别。

我就简单模拟了一个破坏场景,是在一个未打开的PDB tcymob0从中删除了数据文件usres01.dbf,然后尝试备份恢复。

当然在这个操作前,我们使用RMAN来备份,使用命令backup database即可备份整个数据库。

手工破坏的语句如下:

$ rm /U01/app/oracle/oradata/test12cs/tcymob0/pdbseed/users01.dbf这个时候的还原工作就很清晰了,直接还原对应的表空间或者数据文件都可以。比如表空间是users,则需要指定PDB的名字。

RMAN> restore tablespace tcymob0:users;
RMAN> recovertablespace tcymob0:users;
Starting recover at 2017-06-03 22:58:31
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 2017-06-03 22:58:31

整个恢复工作做好之后,留下来的任务就是直接启库了,但是奇怪的是却报了下面的错误。

SQL> alter pluggable database tcymob0 open;
alter pluggable database tcymob0 open
*
ERROR at line 1:
ORA-65086: cannot open/close the pluggable database

Oracle对这个错误的解释如下:

oerr ora 65086
65086, 00000, "cannot open/close the pluggable database"
// *Cause:  The pluggable database has been unplugged.
// *Action: The pluggable database can only be dropped.
//

这下我还真想起来了,之前测试的时候,我使用RMAN模拟跨平台的PDB备份恢复,使用了unplug的方式,根据这个错误,对于这个问题也有了思路。

之前unplug的语句如下:

ALTER PLUGGABLE DATABASE tcymob0 UNPLUG INTO '/tmp/tcymob0.xml';

在这个基础上,我们可以使用plugging的方式重新挂载即可。

drop pluggable database tcymob0;
CREATE pluggable DATABASE tcymob0 USING '/tmp/tcymob0.xml' NOCOPY;
alter pluggable database tcymob0 open;   

而在这个时候,需要做的第一件事情,就是重新备份了。因为有了drop pluggable database的操作之后,容器的设置会发生变化,比如con_id,原来的备份就识别不了了。

RMAN> restore tablespace tcymob0:system;
Starting restore at 2017-06-03 23:29:49
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 137 found to restore

个人微信公众号,欢迎扫码关注。

admin

杨建荣,《Oracle DBA工作笔记》《MySQL DBA工作笔记》作者,dbaplus社群发起人之一,腾讯云TVP,现任竞技世界系统部经理,拥有十多年数据库开发和运维经验,目前专注于开源技术、运维自动化和性能调优

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注