关于flashback drop 特性
2008-04-25 00:02
316 查看
oracle 10g 提供了很多很好的特性,flashback drop 就是其中的一个。flashback drop 其实就是10g 的“回收站”功能,当你像往常一样drop 一个table 时,不再是一下字table 就不见了,而是,此时 被drop 的table 被放到了 10g 的回收站 recyclebin 中,你可以再从该回收站中flashback 回被drop 的表.
1.例子说明:
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------TEST
TEST3
SQL> select * from test3;
BILL_MONTH DAY_NUMBER MSISDN
-------------------- ---------- --------------------
200803 1 13800
200803 2 13800
200803 3 13800
200803 2 13801
200803 3 13801
200803 1 13803
200803 5 13804
200803 6 13804
200803 7 13804
200803 8 13804
10 rows selected
SQL> drop table test3;
Table dropped
SQL> select * from test3;
select * from test3
ORA-00942: 表或视图不存在
SQL> select * from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE TS_NAME CREATETIME DROPTIME DROPSCN PARTITION_NAME CAN_UNDROP CAN_PURGE RELATED BASE_OBJECT PURGE_OBJECT SPACE
------------------------------ -------------------------------- --------- ------------------------- ------------------------------ ------------------- ------------------- ---------- -------------------------------- ---------- --------- ---------- ----------- ------------ ----------
BIN$VPoTvxPtQZuDABiSoxR8Mg==$0 TEST3 DROP TABLE USERS 2008-04-22:00:05:40 2008-04-24:23:19:28 793107 YES YES 52568 52568 52568 8
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
TEST
SQL> flashback table test3 to before drop;
Done
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
TEST
TEST3
SQL> select * from test3;
BILL_MONTH DAY_NUMBER MSISDN
-------------------- ---------- --------------------
200803 1 13800
200803 2 13800
200803 3 13800
200803 2 13801
200803 3 13801
200803 1 13803
200803 5 13804
200803 6 13804
200803 7 13804
200803 8 13804
10 rows selected
SQL>
2.功能说明:
a.回收站的特性不过是把要drop 的table rename 个名称,让原对象失踪,造成删除的假象而已。你可以通过10046 抓取 10g 中drop table 的操作,就可以很明显的看出来 rename 的递归操作。
b.回收站中的对象其实也是一般的对象,只是它的信息要在recyclebin ,user_recyclebin ,dba_recyclebin 中去检索,它的生命周期也是一般对象一样的,oracle 不会自己去清理掉所谓ide回收站;
对于清理回收站,你可以 purge recyclebin ,这是清理当前用户下所有的回收站对象;
如果是仅仅清理一个被回收站容纳的table,你可以 purge table "BIN$VPoTvxPtQZuDABiSoxR8Mg==$0" ;
如果在drop 某个table 时你确认不要,你也可以直接在后面指定 purge,这可以将对象彻底删除,不让它进入回收站, drop table test3 purge ;
c.table 对drop 后进入回收站的时候,oracle 给了它一个怪怪的名字,一长串,并且小写字母,$符号等也有的,在后面调用这个对象时,需要给它加上"". (实际上oracle 在 rename 的时候也是加""的。
d.如果相同名称的两个表或多个表被先后drop,那么在recyclebin 中就有多个版本,此时在flashback drop 时,不能 使用原表名,否则只是恢复出最后一个被删除的表,而是要使用recyclebin 中的那个名称。举例如下:
SQL> select * from test;
ID
----------
SQL> insert into test values ( 1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
ID
----------
1
SQL> drop table test;
Table dropped
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
--------------------------------------------------------------
BIN$+/XXzBw+SIaez1H8dAHMmA==$0 TEST
SQL> create table test ( id number);
Table created
SQL> insert into test values ( 1);
1 row inserted
SQL> insert into test values ( 2);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
ID
----------
1
2
SQL> drop table test;
Table dropped
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
--------------------------------------------------------------
BIN$+/XXzBw+SIaez1H8dAHMmA==$0 TEST
BIN$VorJamfKSzKrA7ZIKHClEQ==$0 TEST
SQL> flashback table test to before drop;
Done
SQL> select * from test;
ID----------
1
2
SQL> drop table test;
Table dropped
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
--------------------------------------------------------------
BIN$+/XXzBw+SIaez1H8dAHMmA==$0TEST
BIN$8SE+MjPXRL66QZSFOB322Q==$0 TEST
SQL> flashback table "BIN$+/XXzBw+SIaez1H8dAHMmA==$0" to before drop;
Done
SQL> select * from test;
ID
----------
1
SQL>
1.例子说明:
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------TEST
TEST3
SQL> select * from test3;
BILL_MONTH DAY_NUMBER MSISDN
-------------------- ---------- --------------------
200803 1 13800
200803 2 13800
200803 3 13800
200803 2 13801
200803 3 13801
200803 1 13803
200803 5 13804
200803 6 13804
200803 7 13804
200803 8 13804
10 rows selected
SQL> drop table test3;
Table dropped
SQL> select * from test3;
select * from test3
ORA-00942: 表或视图不存在
SQL> select * from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION TYPE TS_NAME CREATETIME DROPTIME DROPSCN PARTITION_NAME CAN_UNDROP CAN_PURGE RELATED BASE_OBJECT PURGE_OBJECT SPACE
------------------------------ -------------------------------- --------- ------------------------- ------------------------------ ------------------- ------------------- ---------- -------------------------------- ---------- --------- ---------- ----------- ------------ ----------
BIN$VPoTvxPtQZuDABiSoxR8Mg==$0 TEST3 DROP TABLE USERS 2008-04-22:00:05:40 2008-04-24:23:19:28 793107 YES YES 52568 52568 52568 8
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
TEST
SQL> flashback table test3 to before drop;
Done
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
TEST
TEST3
SQL> select * from test3;
BILL_MONTH DAY_NUMBER MSISDN
-------------------- ---------- --------------------
200803 1 13800
200803 2 13800
200803 3 13800
200803 2 13801
200803 3 13801
200803 1 13803
200803 5 13804
200803 6 13804
200803 7 13804
200803 8 13804
10 rows selected
SQL>
2.功能说明:
a.回收站的特性不过是把要drop 的table rename 个名称,让原对象失踪,造成删除的假象而已。你可以通过10046 抓取 10g 中drop table 的操作,就可以很明显的看出来 rename 的递归操作。
b.回收站中的对象其实也是一般的对象,只是它的信息要在recyclebin ,user_recyclebin ,dba_recyclebin 中去检索,它的生命周期也是一般对象一样的,oracle 不会自己去清理掉所谓ide回收站;
对于清理回收站,你可以 purge recyclebin ,这是清理当前用户下所有的回收站对象;
如果是仅仅清理一个被回收站容纳的table,你可以 purge table "BIN$VPoTvxPtQZuDABiSoxR8Mg==$0" ;
如果在drop 某个table 时你确认不要,你也可以直接在后面指定 purge,这可以将对象彻底删除,不让它进入回收站, drop table test3 purge ;
c.table 对drop 后进入回收站的时候,oracle 给了它一个怪怪的名字,一长串,并且小写字母,$符号等也有的,在后面调用这个对象时,需要给它加上"". (实际上oracle 在 rename 的时候也是加""的。
d.如果相同名称的两个表或多个表被先后drop,那么在recyclebin 中就有多个版本,此时在flashback drop 时,不能 使用原表名,否则只是恢复出最后一个被删除的表,而是要使用recyclebin 中的那个名称。举例如下:
SQL> select * from test;
ID
----------
SQL> insert into test values ( 1);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
ID
----------
1
SQL> drop table test;
Table dropped
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
--------------------------------------------------------------
BIN$+/XXzBw+SIaez1H8dAHMmA==$0 TEST
SQL> create table test ( id number);
Table created
SQL> insert into test values ( 1);
1 row inserted
SQL> insert into test values ( 2);
1 row inserted
SQL> commit;
Commit complete
SQL> select * from test;
ID
----------
1
2
SQL> drop table test;
Table dropped
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
--------------------------------------------------------------
BIN$+/XXzBw+SIaez1H8dAHMmA==$0 TEST
BIN$VorJamfKSzKrA7ZIKHClEQ==$0 TEST
SQL> flashback table test to before drop;
Done
SQL> select * from test;
ID----------
1
2
SQL> drop table test;
Table dropped
SQL> select object_name,original_name from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME
--------------------------------------------------------------
BIN$+/XXzBw+SIaez1H8dAHMmA==$0TEST
BIN$8SE+MjPXRL66QZSFOB322Q==$0 TEST
SQL> flashback table "BIN$+/XXzBw+SIaez1H8dAHMmA==$0" to before drop;
Done
SQL> select * from test;
ID
----------
1
SQL>
相关文章推荐
- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
- oracle闪回特性之flashback drop
- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
- 关于flashback table tablename to before drop的应用—恢复drop掉的表
- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
- 关于Flashback table tablename to before drop的应用—恢复drop掉的表
- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
- 关于flashback versions query 和flashback transaction query 特性
- 关于flashback versions query 和flashback transaction query 特性
- 使用Oracle10g提供的flashback drop 新特性
- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
- 关于flashback versions query 和flashback transaction query 特性 - kongkongye的专栏 - CSDNBlog
- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)
- 关于AngularJS学习整理---核心特性
- 关于文件流的模拟上传——人人网首页拖拽上传详解(HTML5 Drag&Drop、FileReader API、formdata) | 彬Go
- Oracle 闪回特性(Flashback Query、Flashback Table)
- SQL Server 2016新特性:DROP IF EXISTS
- Oracle 12C 新特性之表分区带异步全局索引异步维护(一次add、truncate、drop、spilt、merge多个分区)
- 关于C3P0容错和自动重连特性的研究