Oracle之闪回操作 (二)

2014-11-24 09:48:23 · 作者: · 浏览: 6

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