在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做全备。然后记下时间。
接下来尝试破坏表CUSTOMERS
创建即将用作辅助库的目录/u01/aux
然后就可以进入RMAN开始恢复了,注意:虽然要恢复的是PDB中的数据,但RMAN必须连接到CDB
等到全部完成后,就可以在schema下看到customers_recvr这个表,也可以选择直接恢复到customers,前提是原库中已删除这个表。
补充:如果要恢复多个表,命令如下:
从12c开始,可以通过recover table,只对部分表恢复到早前状态,不影响其他对象。
其工作原理是:先创建一个辅助实例,然后restore表空间SYSTEM, SYSAUX, UNDO和所需恢复对象所在的表空间,recover到指定的时刻。接下来通过Data Pump导出辅助库中的表,导入到主库。最后自动关闭辅助实例。
前提条件:
1)必须有早前的备份,备份时间要早于期望恢复的时刻;
2)必须处于归档模式,且有完整的备份之后的归档日志;
3)备份的对象要包括SYSTEM, SYSAUX, UNDO表空间,PDB的话还需要同时包含CDB的上述3个表空间的备份。一般对CDB做一次全备即可全部包含。
下例中对PDB1里,SH用户下的CUSTOMERS表做恢复测试:
首先,对CDB做全备。然后记下时间。
点击(此处)折叠或打开
- SQL> select sysdate from dual;
-
- SYSDATE
- -------------------
- 2016-07-01 12:08:46
点击(此处)折叠或打开
- SQL> truncate table customers;
然后就可以进入RMAN开始恢复了,注意:虽然要恢复的是PDB中的数据,但RMAN必须连接到CDB
点击(此处)折叠或打开
- recover table sh.customers of pluggable database pdb1
- until time "to_date('2016-07-01 12:08:46','yyyy-mm-dd hh24:mi:ss')"
- auxiliary destination '/u01/aux'
- remap table sh.customers:customers_recvr;
补充:如果要恢复多个表,命令如下:
点击(此处)折叠或打开
- RECOVER TABLE SCOTT.EMP, SCOTT.DEPT
- UNTIL TIME "TO_CHAR('12/23/2012 12:00:00','mm/dd/yyyy hh24:mi:ss')"
- AUXILIARY DESTINATION '/tmp/oracle/recover'
- REMAP TABLESPACE 'EXAMPLE':'MY_TBS';
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22621861/viewspace-2121327/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22621861/viewspace-2121327/