zoukankan      html  css  js  c++  java
  • Oracle的flashback特性之三:Flashback Database

    应用flashback database先决条件:

    1、数据库必须启用了flashback database

    SQL> select flashback_on, force_logging from v$database;
    
    FLASHBACK_ON                         FORCE_
    ------------------------------------ ------
    YES                                  YES
    

    2、数据库必须打开flash recovery area

    SQL> show parameter db_recovery_file;
    NAME                                 TYPE                   VALUE
    ------------------------------------ ---------------------- ------------------------------
    db_recovery_file_dest                string                 /u01/app/oracle/flash_recovery
                                                                _area
    db_recovery_file_dest_size           big integer            2G

    3、数据库必须处于archivelog模式

    SQL> archive log list;
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /u01/app/oracle/oradata/archive
    Oldest online log sequence     15
    Next log sequence to archive   17
    Current log sequence           17

    限制条件:

    1、非介质恢复,不能恢复被删除的数据文件。

    2、控制文件重建,日志失效,不能闪回到控制文件重建前。

    3、nologging模式下插入数据恢复不了,建议forece logging模式。


    (1)查询当前scn

    SQL> select current_scn from v$database;
    
    CURRENT_SCN
    -----------
         520463

    (2)模拟故障

    SQL> drop table test1;
    
    Table dropped.
    SQL> delete from new_test1 where id > 6;
    
    2 rows deleted.
    
    SQL> commit;
    
    Commit complete.

    (3)启动到mount,执行恢复

    SQL> shutdown immediate
    startup mount;
    SQL> flashback database to scn 520463;
    
    Flashback complete.

    恢复完有两种方式修复数据库:

    1、直接alter database open resetlogs打开数据库,但指定scn或timestamp时间点之后的数据丢失。

    2、alter database open read only,以read-only打开数据库,立刻逻辑导出方式将误操作涉及表导出,再执行recover database以重新应用redo,修改数据库到闪回到的状态,然后再逻辑导入方式将误操作表导入,这样不会丢失数据。


    这里演示第一种:

    SQL> alter database open resetlogs;
    
    Database altered.
    
    SQL> select * from test1;
    
            ID NAME
    ---------- --------------------
             6 ff
             7 gg
             6 dd
             7 ee
    
    SQL> select * from new_test1;
    
            ID NAME
    ---------- --------------------
             6 ff
             7 gg
             6 dd
             7 ee
  • 相关阅读:
    添加鼠标右键菜单项(EditPlus为例)
    spring 定时器Quartz
    python脚本基础总结
    python2.7.9基础学习
    Vagrant+virtualBox+pycham+python环境的安装及配置
    python
    spring资料
    Java四种线程池的使用
    echarts学习网站
    hashmap两种遍历方法
  • 原文地址:https://www.cnblogs.com/guarder/p/3472050.html
Copyright © 2011-2022 走看看