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
原文地址:https://www.cnblogs.com/guarder/p/3472050.html