oracle 闪回技术

oracle默认不启动闪回数据库

如果需要启动闪回数据库,数据库需要设置为归档模式,并启用恢复区。

1、查看是否启动闪回删除

SQL> show parameter recyclebin;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
recyclebin string on

启动闪回

2、测试闪回删除的表:

创建两个一样的表,然后都删除,进行恢复。

SQL> create table edu.test_flash(id number(12),name varchar2(20));

Table created

SQL> insert into edu.test_flash values(1,'');

1 row inserted

SQL> commit;

Commit complete

SQL> drop table edu.test_flash;

Table dropped

SQL> create table edu.test_flash(id number(12),name varchar2(20));

Table created

SQL> insert into edu.test_flash values(2,'');

1 row inserted

SQL> commit;

Commit complete

SQL> drop table edu.test_flash;

Table dropped

查看回收站

SQL> select owner,original_name,object_name,ts_name,droptime from dba_recyclebin where owner='EDU';

OWNER                          ORIGINAL_NAME                    OBJECT_NAME                    TS_NAME                        DROPTIME
------------------------------ -------------------------------- ------------------------------ ------------------------------ -------------------
EDU TEST_FLASH BIN$MFwmGr6PC/LgUwEAAH94lA==$0 USERS 2016-04-13:18:22:02
EDU TEST_FLASH BIN$MFwmGr6QC/LgUwEAAH94lA==$0 USERS 2016-04-13:18:22:31

恢复删除的表

SQL> flashback table edu.test_flash to before drop;

Done

再次查看回收站

SQL> select owner,original_name,object_name,ts_name,droptime from dba_recyclebin where owner='EDU';

OWNER                          ORIGINAL_NAME                    OBJECT_NAME                    TS_NAME                        DROPTIME
------------------------------ -------------------------------- ------------------------------ ------------------------------ -------------------
EDU TEST_FLASH BIN$MFwmGr6PC/LgUwEAAH94lA==$0 USERS 2016-04-13:18:22:02

发现直接按照名字进行闪回,闪回的是最后删除的表

如果需要指定闪回哪个表还可以执行:

flashback table "BIN$MFwmGr6PC/LgUwEAAH94lA==$0" to before drop rename to test_flash_2;
上一篇:jQuery 源码解析二:jQuery.fn.extend=jQuery.extend 方法探究


下一篇:JSON字符串转换为JSON对象