ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 【备份与恢复】使用Flashback Database(不完全恢复)

【备份与恢复】使用Flashback Database(不完全恢复)

原创 Linux操作系统 作者:ljm0211 时间:2012-06-25 16:42:29 0 删除 编辑
使用SQL*Plus进行闪回:
       SQL*Plus闪回语法可以接受一个时间标记或一个系统改变号实参,与RMAN不同的是,这种语法不接受日期或日志切换序列号实参。
       如果不能确定需要返回的时间点,那么就可能通过组合闪回与恢复进行多次尝试。以下面给出的场景为例。
       在2004年12月20日的10:00左右,某位初级的DBA误以为自己登录了测试数据库,因而在其实际登录的产品数据库上删除了一个重要的模式。我们会在十分钟之内注意到这个错误,不过呼叫中心使用这个大型且繁忙的数据库来接手指令和计算每秒钟的处理数。在这种情况下,第一个步骤应当是关闭数据库:
    SQL> shutdown abort;

       这里不需要使用其他类型的关闭,其原因在于所有正在进行中的工作都将丢失,并且需要最小化停机时间。随后,将数据库返回至10:00:
    SQL> startup mount;
    SQL> flashback database to timestamp to _timestamp('20-12-04 10:00:00','dd-mm-yy hh24:mi:ss');
    SQL> alter database open read only;
      
       须要注意的是,上面的命令对用于时间标记格式的NLS设置十分敏感,这与RECOVER DATABASE UNTIL TIME命令不同。因为数据库位于只读模式中,所以我们能够运行一个针对被删除模式的查询。如果发现仍然存在这个模式,那么可能需要再恢复一些用户数据。
    SQL> shutdown abort;
    SQL> startup mount;
    SQL> recover database until time '2004-12-20:10:02:00';
    SQL> alter database open read only;

       再次运行测试查询,就会发现又经过两分钟的恢复后指定的模式消失:这个模式肯定是在10:00到10:02之间被删除的。因此,我们采用了折中的方法:
    SQL> shutdown abort;
    SQL> startup mount;
    SQL> flashback database to timestamp to _timestamp('20-12-04 10:01:00','dd-mm-yy hh24:mi:ss');
    SQL> alter database open read only;
      
       如果指定模式已不存在,那么可以再闪回几秒钟。如果指定模式仍然存在,那么可以再执行几秒钟的恢复。通过在指定模式中运行查询所进行的测试,我们就可以重复地执行闪回和恢复命令,直至查找到所期望的时间点。到达满足要求的某个时间点时,进行最终的关闭,然后再使用RESETLOGS命令创建一个能够正常使用的已打开的新数据库场景:
    SQL> shutdown abort;
    SQL> startup mount;
    SQL> alter database open resetlogs;

使用RMAN进行闪回:
       在RMAN环境内,我们可以选择将数据库闪回之某个时间点、某个SCN或某个日志切换序列号:
    RMAN> flashback database to time = to_date('20-12-04 10:00:00','yy-mm-dd hh24:mi:ss');
    RMAN> flashback database to scn=2728665;
    RMAN> flashback database to sequence=2123 thread=1;
       除了语法中的细微变化之外,RMAN闪回与SQL*Plus闪回是相同的,特别是能够使用重复应用闪回和恢复的相同方法查找到打开数据库的最优化时间点。

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

请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    437185