12c恢复表到指定时刻

在12c之前, TSPITR 只能恢复表空间,对于其中的schema对象则无能为力。比如一个表空间中有多个schema,如果想还原其中一个schema到之前的状态,则整个表空间内的其他schema也要还原到以前的状态。

从12c开始,可以通过recover table,只对部分表恢复到早前状态,不影响其他对象。

其工作原理是:先创建一个辅助实例,然后restore表空间SYSTEM, SYSAUX, UNDO和所需恢复对象所在的表空间,recover到指定的时刻。接下来通过Data Pump导出辅助库中的表,导入到主库。最后自动关闭辅助实例。

前提条件:
1)必须有早前的备份,备份时间要早于期望恢复的时刻;
2)必须处于归档模式,且有完整的备份之后的归档日志;
3)备份的对象要包括SYSTEM, SYSAUX, UNDO表空间,PDB的话还需要同时包含CDB的上述3个表空间的备份。一般对CDB做一次全备即可全部包含。

下例中对PDB1里,SH用户下的CUSTOMERS表做恢复测试:

首先,对CDB做全备。然后记下时间。

点击(此处)折叠或打开

  1. SQL> select sysdate from dual;

  2. SYSDATE
  3. -------------------
  4. 2016-07-01 12:08:46
接下来尝试破坏表CUSTOMERS

点击(此处)折叠或打开

  1. SQL> truncate table customers;
创建即将用作辅助库的目录/u01/aux

然后就可以进入RMAN开始恢复了,注意:虽然要恢复的是PDB中的数据,但RMAN必须连接到CDB

点击(此处)折叠或打开

  1. recover table sh.customers of pluggable database pdb1
  2. until time "to_date('2016-07-01 12:08:46','yyyy-mm-dd hh24:mi:ss')"
  3. auxiliary destination '/u01/aux'
  4. remap table sh.customers:customers_recvr;
等到全部完成后,就可以在schema下看到customers_recvr这个表,也可以选择直接恢复到customers,前提是原库中已删除这个表。

补充:如果要恢复多个表,命令如下:

点击(此处)折叠或打开

  1. RECOVER TABLE SCOTT.EMP, SCOTT.DEPT
  2.       UNTIL TIME "TO_CHAR('12/23/2012 12:00:00','mm/dd/yyyy hh24:mi:ss')"
  3.       AUXILIARY DESTINATION '/tmp/oracle/recover'
  4.       REMAP TABLESPACE 'EXAMPLE':'MY_TBS';


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-2121327/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22621861/viewspace-2121327/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值