是相同的,例如用户创建了一个test表,使用drop命令删除该表后,又创建了一个test表,这时,如果再次删除该表就会导致向回收站中添加了两个相同的表。
Oracle回收站举例。 SQL> --闪回删除(drop): oracle回收站
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
EMP10 TABLE
EMP20 TABLE
TESTSAVEPOINT TABLE
TESTDELETE TABLE
BIN$91xa7gtoQfiGlzbFlex5HQ==$0 TABLE
TEST3 TABLE
MYPERSON TABLE
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
EMPINCOMEVIEW VIEW
TESTSEQ TABLE
HREMP SYNONYM
MSG1 TABLE
TEST1 TABLE
PM_CI TABLE
PM_STU TABLE
FLASHBACK_TABLE TABLE
SYS_TEMP_FBT TABLE
已选择20行。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
EMPINCOME BIN$91xa7gtoQfiGlzbFlex5HQ==$0 TABLE 2012-03-27:15:34:39
SQL> purge recyclebin;
回收站已清空。
SQL> drop table testseq purge; (不经回收站直接彻底删除)
表已删除。
闪回删除:回收站中对象的命名规则 为了确保添加到回收站中的对象的名称都是唯一的,系统会对这些保存到回收站中的对象进行重命名,重命名的格式如下:
BIN$globalUID$version
?其中: BIN表示RECYCLEBIN;globalUID是一个全局唯一的、24个字非长的对象,该标识与原对象名没有任何关系;version指数据库分配的版本号。
闪回删除举例
闪回使用drop命令删除的表
?使用表名闪回
SQL> select * from test3;
TID TNAME GEND
---------- -------------------- ----
1 Tom 男
SQL> drop table test3;
表已删除。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST3 BIN$vORkLd1GQKKsPs9PO/H8oQ==$0 TABLE 2012-03-29:10:46:20
SQL> flashback table test3 to before drop;
闪回完成。
SQL> show recyclebin
SQL> select * from test3;
TID TNAME GEND
---------- -------------------- ----
1 Tom 男
?使用recyclebin name闪回
SQL> drop table test3;
表已删除。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST3 BIN$V2swGcDdROGeCxvlh9SA3A==$0 TABLE 2012-03-29:10:51:45
SQL> flashback table "BIN$V2swGcDdROGeCxvlh9SA3A==$0" to before drop;
闪回完成。
闪回重名的表
SQL> drop table test3;
表已删除。
SQL> create table test3(tid number);
表已创建。
SQL> drop table test3;
表已删除。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST3 BIN$R5hrMHspQ1GmHWOXKJX1Ig==$0 TABLE 2012-03-29:10:49:03
TEST3 BIN$WO/lCOgSTo6kuIJ/thjM/A==$0 TABLE 2012-03-29:10:48:44
SQL> flashback table test3 to before drop;
闪回完成。
SQL> show recyclebin
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
---------------- ------------------------------ ------------ -------------------
TEST3 BIN$WO/lCOgSTo6kuIJ/thjM/A==$0 TABLE 2012-03-29:10:48:44
SQL> flashback table test3 to before drop;
flashback table test3 to before drop
*
第 1 行出现错误:
ORA-38312: 原始名称已被现有对象使用
SQL> select * from test3;
未选定行
SQL> flashback table test3 to before drop rename to test3new;
闪回完成。
SQL> select * from test3new;
TID TNAME GEND
---------- -------------------- ----
1 Tom 男
闪回删除: 需要考虑的事情
1. Oracle的回收站:管理员没有回收站
2. 执行闪回删除: 一般的闪回删除,闪回重名的表,通过回收站中的名字执行闪回
(加双引号)
3.闪回删除对下列表无效: ?在SYSTEM 表空间内的表 ?用精细审计的数据库或 虚拟的私人数据库 ?属于字典管理的表空间 ?由于空间不足已经被手动或自动删除的表 4.以下依赖不被保护: ?位图索引 ?表之前删掉的索引
闪回版本查询
语法 闪回版本查询,提供了一个审计行改变的查询功能,通过它可以查找到 |