自动执行TSPITR
使用RMAN执行TSPITR很简单--但是在此之前和之后要执行几个步骤以确保成功的操作。
1.验证表空间的依赖性
其他表空间中的对象可能会依赖于要恢复的表空间中的对象。TSPITR的规则指明要恢复的表空间必须是自包含
的,不依赖于不予恢复的其他表空间中的对象。例如,如果一个表含有索引,它们也必须予以恢复。可以使用
数据字典ts_pitr_check来确定任何依赖性,如下所示:它检查名为rmancat的表空间中的对象是否依赖其他表
空间中的任何对象以及其他表空间中的对象是否依赖rmancat表空间中的对象:
SQL> desc ts_pitr_check
名称 是否为空? 类型
----------------------------------------- -------- -----------------
OBJ1_OWNER VARCHAR2(30)
OBJ1_NAME VARCHAR2(30)
OBJ1_SUBNAME VARCHAR2(30)
OBJ1_TYPE VARCHAR2(16)
TS1_NAME VARCHAR2(30)
OBJ2_NAME VARCHAR2(30)
OBJ2_SUBNAME VARCHAR2(30)
OBJ2_TYPE VARCHAR2(15)
OBJ2_OWNER VARCHAR2(30)
TS2_NAME VARCHAR2(30)
CONSTRAINT_NAME VARCHAR2(30)
REASON VARCHAR2(81)
SQL> select obj1_owner,obj1_name,ts1_name,obj2_owner,obj2_name,ts2_name from
2 ts_pitr_check
3 where
4 ts1_name='RMANCAT' and ts2_name!='RMANCAT' or
5 (ts1_name!='RMANCAT' and ts2_name='RMANCAT');
未选定行
该视图填充了定义为1对一关系的行,其中表空间ts1_name中的一个对象依赖于表空间ts2_name中的一个对象
。该视图还列出了不会包含在时间点恢复中的对象,如高级队列表,这在ts2_name列中通过值'-1'来指示.
要解决发现的任何问题,可以临时删除依赖关系,或者将包含依赖对象的表空间添加到恢复集中。
2.执行TSPITR后后确定丢失的对象
除了需要解决与要恢复的表空间的依赖问题之外,还需要确定恢复表空间后将要丢失的在目标时间之后创
建的任何对象。可以查看数据字典视图ts_pitr_objects_to_be_dropped来确定在目标恢复时间之后将要丢失
的对象。如下:
select owner,name,to_char(creation_time,'yyyy-mm-dd:hh24:mi:ss') create_time from
ts_pitr_objects_to_be_dropped
where
tablespace_name='RMANCAT'
and creation_time>to_date('2008-07-19:21:55:00','yyyy-mm-dd:hh24:mi:ss')
OWNER NAME CREATE_TIME
---------- ------------------------------ -------------------
RMAN CDF_U1 2013-08-06:16:04:08
RMAN CDF_I_DF_KEY 2013-08-06:16:04:08
RMAN CDF_I_FNAME_STATUS 2013-08-06:16:04:08
RMAN BRL 2013-08-06:16:04:08
RMAN BRL_P 2013-08-06:16:04:08
RMAN BRL_U2 2013-08-06:16:04:08
RMAN BRL_I_BS_KEY 2013-08-06:16:04:08
RMAN BRL_I_DTS 2013-08-06:16:04:08
RMAN SCR 2013-08-06:16:04:08
RMAN SCR_P 2013-08-06:16:04:08
RMAN SCR_U1 2013-08-06:16:04:08
为解决这些问题,可以在执行恢复操作前导出各个对象,然后在完成恢复后再次导入它们。
3.使用RMAN自动执行TSPITR
运行TSPITR最简单的方法是通过RMAN自动执行,尽管也可以手动执行。连接到目标数据库并执行如下的命令:
RMAN> recover tablespace rmancat until time '07-08-13 09:00:00'
2> auxiliary destination '/u01/app/oracle/oradata/auxdata';
此命令将使用存储区的指定辅助目标,在表空间rmancat上执行到指定时间的不完全恢复。表空间将会处于脱
机状态,因此为了完成此过程,需要将表空间联机。
如下:
在sql*plus:
SQL>alter tablespace rmancat online;
使用rman:
RMAN>sql 'alter tablespace rmancat online';