闪回数据库(Flashback Database)模拟测试

Flashback Database命令是为了加快原本很慢的时间点数据库恢复(point in time database recovery)过程。闪回可以取得完整的数据库恢复和使用归档日志的前滚,主要目的是加快从“意外状态“中恢复。闪回数据库基于闪回日志flashback log,闪回日志包含已修改数据块的”前影像“,可用于将数据库恢复到该时间点之前的状态。闪回数据库允许复原整个数据库到具体的时间点,从而撤销该时间点以来的所有数据库的变化 用户误删除表中数据、删除表、truncate表、索引、触发器,表空间等。Dba误操作等。简而言之,所有操作都可以闪回。

闪回数据库能够使你在不恢复数据文件备份的情况下使数据库倒回到先去的某个时间点。
你可以通过RMAN或者SQLPLUS来闪回数据库,替代使用复杂的过程。
使用数据库闪回可撤销导致逻辑数据损坏的变更,如果是介质丢失或者物理损坏,则必须使用传统的恢复方法进行数据库的恢复。闪回数据库不需要恢复数据文件,
以此恢复数据库的数据与所需要恢复的数据条目成正比,和数据库的大小无关。闪回数据库头通过闪回日志来进行数据恢复,数据库会定期将数据快的前影像记录在闪回日志里面。
过程如下:

create table t;
SQL> insert into t values(1,1);
1 row created.
SQL> commit;
Commit complete.
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 2196505
SQL> insert into t values(2,2);
1 row created.
SQL> commit;
Commit complete.
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 2196523
SQL> insert into t values(3,3);
1 row created.
SQL> commit;
Commit complete.
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 2196545
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              75498896 bytes
Database Buffers          234881024 bytes
Redo Buffers                2973696 bytes
Database mounted.
SQL> flashback database to scn 2196505;----闪回到第一次commit的时候
Flashback complete.
SQL> alter database open resetlogs;
Database altered.
SQL> select * from t;  ---闪回数据库测试正常
         A          B
---------- ----------
         1          1
SQL> 
---------------------------------------
TO timestamp---例子
 flashback database to timestamp to_date('2011-07-12 10:20:59','yyyy-mm-dd hh24:mi:ss');
小结:

oracle10g数据库提供了闪回功能,无论对开发人员,还是DBA人员提供了便捷的处理逻辑数据丢失的处理方法,非常实用

Related Posts