AAANh7AAEAAAAGnAAA 1 Tom
AAANh7AAEAAAAGnAAC 3 Mike
SQL> --开启行移动功能
SQL> alter table flashback_table1 enable row movement;
表已更改。
SQL> flashback table flashback_table1 to scn 4354761;
闪回完成。
SQL> select rowid,fid,fname fromflashback_table1;
ROWID FID FNAME
------------------ --------------------
AAANh7AAEAAAAGnAAB 1 Tom
AAANh7AAEAAAAGnAAD 2 Mary
AAANh7AAEAAAAGnAAE 3 Mike
闪回表语法:
FLASHBACK TABLE [schema.]
TO
{[BEFORE DROP [RENAME TO table]]
[SCN|TIMESTAMP]expr
[ENABLE|DISABLE]TRIGGERS}
lschema:模式名,一般为用户名。
lTO TIMESTAMP:系统邮戳,包含年、月、日、时、分、秒。
lTO SCN:系统更改号,
lENABLE TRIGGERS:表示触发器恢复以后为enable状态,而默认为disable状态。
lTO BEFORE DROP:表示恢复到删除之前。
lRENAME TO table:表示更换表名。
SQL> --闪回表的思想:将表回退到过去的一个时间上
SQL> --问题:不知道过去时间,怎么办?
SQL> host cls
SQL> --闪回删除
SQL> --Oracle的回收站
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
DEPT TABLE
EMP TABLE
BONUS TABLE
SALGRADE TABLE
FLASHBACK_TABLE TABLE
FLASHBACK_TABLE1 TABLE
SYS_TEMP_FBT TABLE
已选择7行。
删除表。
drop table FLASHBACK_TABLE;
查看回收站
show recyclebin;
清空回收站
purge recyclebin;
彻底删除
drop table FLASHBACK_TABLE1 purge;
回收站只对普通用户有效
删除表
drop table test123;
show recyclebin;
ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME
TEST123 BIN$w6NYaQ1jSZ6uzO2jUQ/ALw==$0 TABLE 2011-09-21:10:35:32
SQL> --闪回删除:从回收站中取回表
SQL> flashback table test123 to before drop;
闪回完成。
SQL> --通过回收站中的名称闪回删除
SQL> flashback table"BIN$9JMrb6kbRCON287lDV+5dA==$0" to before drop;
闪回完成。
SQL> host cls
闪回删除:回收站(recyclebin)简介
l回收站是所有被删除对象及其相依对象的逻辑存储容器,例如当一个表被删除(drop)时,该表及其相依对象并不会马上被数据库彻底删除,而是被保存到回收站中。
l
l回收站将用户执行的drop操作记录在一个系统表中,也就是将被删除的对象写到一个数据字典中。如果确定不再需要该对象,可以使用purge命令对回收站进行清空。
l
l被删除的对象的名字可能是相同的,例如用户创建了一个test表,使用drop命令删除该表后,又创建了一个test表,这时,如果再次删除该表就会导致向回收站中添加了两个相同的表。
l
回收站中对象的命名规则
l为了确保添加到回收站中的对象的名称都是唯一的,系统会对这些保存到回收站中的对象进行重命名,重命名的格式如下:
l
BIN$globalUID$version
l
其中: BIN表示RECYCLEBIN;globalUID是一个全局唯一的、24个字节长的对象,该标识与原对象名没有任何关系;version指数据库分配的版本号。
SQL> -- 闪回重名的表
SQL> select * from tab;
TNAME TABTYPE CLUSTERID
------------------------------ -----------------
DEPT