TSPITR(基于时间点的表空间恢复)

TSPITR(Tablespace Point-In-TIme Recovery)介绍


   TSPITR(表空间时间点恢复)用于将一个或多个表空间恢复到过去某个时间点的状态,而其他表空间仍然保持现有状态。
   (1) TSPITR(Tablespace Point-In-Time Recovery),只适用于ARCHIVELOG模式。
   (2) TSPITR实现方法,建议使用RMAN实现表空间时间点恢复。
   (3) DBPITR(Database Point-In-TIme Recovery),数据库时间点恢复;表示将数据库的所有表空间恢复到过去时间颠倒俄状态,只适用于ARCHIVELOG模式。
   (4) 主数据库(Primary Database),用于存放应用系统数据的Oracle数据库。当执行TSPITR时,主数据库是指包含有被恢复表空间的数据库。
   (5) 恢复集(Recovery Set),是指在主数据库上需要执行TSPITR的表空间集合。注意,当在恢复集的表空间上执行TSPITR时,要求这些表空间必须是自包含的.
   (6) 辅助数据库(Auxiliary Database),是主数据库的一个副本数据库。当执行TSPITR时,辅助数据库用于将恢复集表空间恢复到过去时间点。注意,辅助数据库的所有物理文件都是从主数据库备份中取得,并且辅助数据库必须包含SYSTEM表空间、UNDO表空间、恢复集表空间的备份文件。
   (7) 辅助集(Auxiliary Set),是指辅助数据库所需要的、除了恢复集表空间文件之外地饿其他文件集合。当执行TSPITR时,辅助数据库除了需要恢复表空间的备份文件之外,还需要备份控制文件、SYSTEM表空间的备份文件、UNDO表空间的备份文件。

注意:恢复集表空间必须为自包含,违反自包含表空间集合的常见情况如下:
       1,表空间集合包含有SYS方案对象
       2,表空间集合包含了索引所在的表空间,但没有包含索引基表所在的表空间
       3,表空间集合没有包含分区表的所有分区
       4,表空间集合包含了表所在的表空间,但没有包含其LOB列所在的表空间


下面是具体的实验步骤:

创建auxiliary destination
[oracle@even ~]$ mkdir /u01/tspitr

创建测试表空间tspitr_tbs
SQL> create tablespace tspitr_tbs datafile '/u01/app/oracle/oradata/test/tspitr_tbs01.dbf' size 10M;

Tablespace created.

测试表空间创建一个表
SQL> conn hr/hr
Connected.
SQL> create table tspitr tablespace tspitr_tbs as select * from dba_objects;

Table created.

SQL> select count(*)from tspitr;

  COUNT(*)
----------
     50324

确定要不完全恢复到的时间点:
SQL> select sysdate from dual;

SYSDATE
-------------------
2013-01-01 10:42:25

切换日志:
SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

SQL> alter system switch logfile;

System altered.

测试把tspitr表truncate掉
SQL> truncate table tspitr;

Table truncated.

数据记录为空了
SQL> select count(*)from tspitr;

  COUNT(*)
----------
         0

 

检查表空间是否为自我包含:
注意:只有自包含的表空间,才能基于单独不完全恢复。所谓自包含,是指该表空间中的对象不依赖于其它表空间中的对象,如该表空间中索引的基本在其它表

空间,该表中某些表的lob列放在其它表空间。

SQL> conn / as sysdba
Connected.
SQL> exec DBMS_TTS.TRANSPORT_SET_CHECK('tspitr_tbs',true,true);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TRANSPORT_SET_VIOLATIONS;

no rows selected
说明tspitr是自包含表空间。

确定不完全恢复以后所丢失的对象:
SELECT OWNER, NAME, TABLESPACE_NAME,TO_CHAR(CREATION_TIME, 'YYYY-MM-DD:HH24:MI:SS')
FROM TS_PITR_OBJECTS_TO_BE_DROPPED WHERE TABLESPACE_NAME IN ('TSPITR_TBS') 
AND CREATION_TIME > TO_DATE('2013-01-01 10:42:25','yyyy-mm-dd HH24:MI:SS')
ORDER BY TABLESPACE_NAME, CREATION_TIME;

no rows selected
开始进行TSPITR:


RMAN> run {
recover tablespace TSPITR_TBS until time "to_date('2013-01-01 10:42:25','yyyy-mm-dd hh24:mi:ss')" auxiliary destination '/u01/tspitr';
 }

.....
.....
.....
Automatic instance removed
auxiliary instance file /u01/tspitr/cntrl_tspitr_TEST_xDfa.f deleted
auxiliary instance file /u01/tspitr/TSPITR_TEST_XDFA/datafile/o1_mf_system_8g4n4xw3_.dbf deleted
auxiliary instance file /u01/tspitr/TSPITR_TEST_XDFA/datafile/o1_mf_undotbs1_8g4n4y78_.dbf deleted
auxiliary instance file /u01/tspitr/TSPITR_TEST_XDFA/datafile/o1_mf_temp_8g4nccog_.tmp deleted
auxiliary instance file /u01/tspitr/TSPITR_TEST_XDFA/onlinelog/o1_mf_1_8g4nbywr_.log deleted
auxiliary instance file /u01/tspitr/TSPITR_TEST_XDFA/onlinelog/o1_mf_2_8g4nc1q3_.log deleted
auxiliary instance file /u01/tspitr/TSPITR_TEST_XDFA/onlinelog/o1_mf_3_8g4nc49y_.log deleted
Finished recover at 2013-01-01 11:02:10


将表空间tspitr online, 检查表tspitr的数据是否找回来.
SQL> alter tablespace TSPITR_TBS online;

Tablespace altered.

SQL> select count(*) from tspitr;

  COUNT(*)
----------
     50324
记录一条也没有丢的回来了。表明顺利成功!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值