表空间时间点恢复

表空间时间点恢复

以下部分内容适只用于10g
一、TSPITR简介
   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表空间的备份文件。
 
二、准备TSPITR
  1、确定TSPITR需求
    (1)检查恢复集表空间是否为自包含
       自包含表空间集合是指具有关联关系的表空间集合。假定,表空间A包含表EMP,表空间B包含表EMP的索引IND_EMP;如果要在表空间B上执行TSPITR,则必须同时在表空间A上执行TSPITR,此时表空间A和B为自包含表空间。
       违反自包含表空间集合的常见情况如下:
       1> 表空间集合包含有SYS方案对象
       2> 表空间集合包含了索引所在的表空间,但没有包含索引基表所在的表空间
       3> 表空间集合没有包含分区表的所有分区
       4> 表空间集合包含了表所在的表空间,但没有包含其LOB列所在的表空间
       在执行TSPITR之前,为了确保可以在恢复集上执行TSPITR,必须首先检查恢复集是为自包含的。通过执行包DBMS_TTS的过程TRANSPORT_SET_CHECK可以确定恢复集是否为自包含的表空间集合。当执行了该过程之后,Oracle会将违反自包含表空间集合的信息写入临时表transport_set_violations。通过查询此表,获得违反自包含表空间的详细信息。
    SQL> connect sys/oracle@demo as sysdba
    SQL> execute dbms_tts.transport_set_check('user01',true);
    SQL> Select * From transport_set_violations;
    (2)检查是否存在恢复集表空间的数据文件备份
    注意:其备份文件必须是在TSPITR时间之前备份的数据文件。
    (3)检查是否存在辅助集的数据文件和控制文件备份
    (4)检查TSPITR之后丢失的对象
    注意:执行了TSPITR之后,在恢复时间之后被建立的对象将会丢失。被丢失对象信息的获取。
     SQL> Select owner, name From TS_PITR_OBJECTS_TO_BE_DROPPED Where tablespace_name = 'USER01' And creation_time > to_date( '2004-09-27 11:25:21', 'yyyy-mm-dd hh24:mi:ss' );
  2、准备主数据库
     当执行TSPITR时,无论使用用户管理的TSPITR,还是使用RMAN管理的TSPITR,要求必须存在相应的数据文件和控制文件备份。
    (1)准备USER01表空间、USER02表空间及示例表
    (2)备份主数据库的所有数据文件和控制文件
       SQL> alter databaes begin backup;
       SQL> alter database end backup;
       SQL> alter database backup controlfile to '' reuse;
       SQL> alter system archive log current;
    (3)在主数据库上执行DML操作
    (4)模拟用户误操作及其他正常操作
 
三、实现用户管理的TSPITR
   假定在日至序列号为150时在表空间USER01上执行了误操作删除了CUSTOMERS表,并且当前日至序列号为152。为了确保USER02表空间的数据不会丢失,应该将USER01表空间恢复到日至序列号为150时的状态,而USER02表空间应该保持现在日志序列号为152时刻的状态。
   1、建立辅助例程服务
   2、建立辅助例程参数文件
     从主数据库复制参数文件,再手工编辑相应的初始化参数。
     SQL> create pfile from spfile;
     vi initauxi.ora
        DB_UNIQUE_NAME = _demo
        CONTROL_FILES = d:/auxi/control01.ctl
        DB_FILE_NAME_CONVERT = ( 'd:/demp', 'd:/auxi' )
        LOG_FILE_NAME_CONVERT = ( 'd:/demo', 'd:/auxi' )
   3、复制恢复集数据文件和辅助集文件
      SQL> host copy d:/backup/system01.dbf d:/auxi
   4、启动辅助例程并装载辅助数据库
      注意,当装载辅助数据库时,必须指定CLONE关键字
      set oracle_sid = auxi
      sqlplus sys/oracle as sysdba
      SQL> startup nomount pfile=initauxi.ora
      SQL> alter database mount clone database;
   5、使恢复集和辅助集数据文件联机
      当装载了辅助数据库之后,恢复集合辅助集的数据文件全部处于OFFLINE状态。
      SQL> alter database datafile 'd:/auxi/system01.dbf' online;
   6、恢复辅助数据库到TRPITR时间点
      在使恢复集和辅助集的数据文件联机之后,就可以将辅助数据库恢复到TSPITR时间点。在恢复辅助数据库时,使用recover database的until cancel、until time以及until change等选项。
      SQL> recover database until time '2004-09-27 11:25:21' using backup controlfile;
   7、用RESETLOGS选项打开辅助数据库,并检查恢复结果
      SQL> alter database open resetlogs;
   8、在辅助数据库上建立临时表空间
   9、导出辅助数据库的恢复表空间
      exp 'sys/oracle as sysdba' point_in_time_recover = y tablespaces = user01 file = user01.dmp
   10、使主数据库的恢复集表空间脱机
      为了将辅助数据库的恢复集表空间导入到主数据库,必须首先使主数据库的恢复集表空间脱机,并使用辅助数据库的恢复集数据文件覆盖主数据库的原有数据文件
      SQL> connect sys/oracle@demo as sysdba
      SQL> alter tablespace user01 offline;
      SQL> host copy '' '';
   11、导入恢复集表空间到主数据库
      将辅助数据库的恢复数据文件复制到主数据库的相应位置之后,就可以将恢复集表空间的数据文件导入到主数据库
      SQL> host imp 'sys/oracle@demo as sysdba' point_in_time_recover = y datafile = d:/demo/user01.dbf file = user01.dmp
   12、使恢复集表空间联机,并检查恢复结果
      在导入恢复集数据文件之后,为了访问恢复集表空间,需要使该表空间联机。在使恢复集表空间联机之后,就完成了TSPIPR的全部过程
      SQL> alter tablespace user01 online;
   13、删除辅助例程
 
四、实现RMAN管理的TSPITR
  1、全自动TSPITR
    是指由RMAN完成表空间时间点恢复的全部过程。当使用全自动TSPITR时,RMAN会自动建立辅助例程,自动建立辅助数据库的数据文件、控制文件和重做日至,在恢复完成之后会自动删除辅助例程和辅助数据库的物理文件。当执行全自动TSPITR时,只要使用Auxiliary Destination选项指定辅助数据库的文件存放位置即可。
    rman target sys/oracle@demo nocatalog
    RMAN> recover tablespace user01 until logseq 19 auxiliary destination 'd:/auxiliary';
    执行了上述命令之后,RMAN会自动建立辅助例程和辅助数据库,将恢复集表空间USER01恢复到日志序列号为19时的状态,使目标数据库的user01表空间脱机,最后删除辅助例程和辅助数据库。因为在恢复完成后user01表空间处于offline状态,必须将其转变为online状态。
    RMAN> sql 'alter tablespace user01 online';
    RMAN> backup tablespace user01 format = 'd:/backup/%s_%d.bak';
  2、用自动辅助例程定制TSPITR
    (1)改变恢复集数据文件的位置和名称
       RMAN> run {
               set newname for datafile 5 to 'c:/demo/user01.dbf';
               recover tablespace user01 until logseq 25 auxiliary destination 'd:/auxiliary';
             }
       RMAN> sql 'alter tablespace user01 online';
       RMAN> backup tablespace user01 format = 'd:/backup/%s_%d.bak';
       上述命令会在'c:/demo'目录下建立恢复集数据文件user01.dbf,会在'd:/auxiliary'目录下建立所有辅助集数据文件,并将恢复集表空间user01恢复到日志序列号为25时的状态。
    (2)改变辅助集数据文件的位置和名称
       RMAN> run {
               set newname for datafile 1 to 'c:/aux/system.dbf';
               set newname for datafile 2 to 'c:/aux/undo.dbf';
               recover tablespace user01 until logseq 37 auxiliary destination 'd:/auxiliary';
             }
       RMAN> sql 'alter tablespace user01 online';
       RMAN> backup tablespace user01 format = 'd:/backup/%s_%d.bak';
       上述命令会在'c:/aux'目录下建立辅助集数据文件system.dbf和undo.dbf,并将恢复集表空间user01恢复到日志序列号为37时的状态。
    (3)使用映像副本提高TSIPTR性能
       如果目标数据库数据文件存在映像副本,那么当执行表空间时间点恢复时,通过使恢复集数据文件和辅助数据文件直接使用映像副本,可以避免转储数据文件,从而提高TSPITR的性能。
       RMAN> configure auxname for datafile 1 to 'd:/backup/df1.bak';
       RMAN> configure auxname for datafile 2 to 'd:/backup/df2.bak';
       RMAN> recover tablespace user01 until logseq 30 auxiliary destination 'd:/auxiliary';
       RMAN> configure auxname for datafile 1 clear;
       RMAN> configure auxname for datafile 2 clear;
       上述命令会直接使用映像副本df1.bak和df2.bak作为辅助集数据文件,并将恢复集表空间user01恢复到日志序列号30时的状态。
  3、手工辅助例程实现TSPITR
    (1)建立辅助例程服务
    (2)建立辅助例程参数文件
    (3)启动辅助例程
    (4)执行TSPITR
       rman target sys/oracle@demo auxiliary sys/oracle
       RMAN> run {
               allocate auxiliary channel c1 device type disk;
               recover tablespace user02 until logseq 9;
             }
    (5)恢复集表空间联机,然后备份该表空间
       RMAN> sql 'alter tablespace user01 online';
       RMAN> backup tablespace user01 format = 'd:/backup/%s_%d.bak';
    (6)删除辅助例程以及相关文件
  http://blog.sina.com.cn/u/539c889801000dsw

 

 

from:http://digifish.bokee.com/viewdiary.16746188.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值