【征文】应用oracle flashback(2.1)--Flashback Table之RECYCLEBIN

简单来讲,如果我们把flashback query看做是恢复记录,则flashback table就是用来恢复表的(由于记录是以表为载体存储,因此flashback table也应该看做是恢复记录,只不过相对于flashback query而言,其粒度更大一些),同时呢,在Oracle10g中又新引入了一个叫做Recycle Bin的功能(主要针对表及其关联的对象,比如索引约束啥的),被删除的表并非真正删除,而是先通过修改数据字典的方式,将其改名并放入recyclebin,如果要恢复recycle bin中对象的话,借助flashback table是最简便的方式。除此之外,flashback table也提供了类似flashback query中as of scn/timestamp的方式,借助undo数据,直接将现有的表恢复到某个指定的时间点或scn时的状态。

下面分别举例:

2.1、从RECYCLEBIN中恢复

要恢复recyclebin中的表,注意语句如下:Flashback table [objName] to before drop,这个obj_name即可以是表名,也可以是recyclebin中的对象表(支持同时操作多个表,表名之间以逗号分隔即可),由于该项功能是恢复被删除表,因此官方对其还有另外一称谓:flashback drop。

下面举个例子,从recyclebin中恢复一个被删除的表:

JSSWEB> select object_name,original_name from recyclebin;

OBJECT_NAME                    ORIGINAL_NAME

------------------------------ --------------------------------

BIN$u/7I62WxS12jMVO358SFgw==$0 JSS_TB3

JSSWEB> select object_name,original_name from recyclebin;

OBJECT_NAME                    ORIGINAL_NAME

------------------------------ --------------------------------

BIN$u/7I62WxS12jMVO358SFgw==$0 JSS_TB3

JSSWEB> flashback table jss_tb3 to before drop;

闪回完成。

JSSWEB> select object_name,original_name from recyclebin;

未选定行

Flashback table语句同时提示了一个rename to [newTBname]的子句,如果要恢复的表在当前schema中已经存在同名的表,建议你在恢复时通过rename to 子句为待恢复的表指定一个新的表名,不然数据库会报ORA-38312错误,再举个例子:

JSSWEB> drop table jss_tb3;

表已删除。

JSSWEB> create table jss_tb3 as select *from jss_tb1;

表已创建。

JSSWEB> flashback table jss_tb3 to before drop;

flashback table jss_tb3 to before drop

*

第 1 行出现错误:

ORA-38312: 原始名称已被现有对象使用

你看,正如其提示的那样,该表被删除之后,又执行过创建同名表的操作,因此恢复的时候就会报错,怎么办呢,用rename to.....

JSSWEB> flashback table jss_tb3 to before drop rename to jss_tb3_bak;

闪回完成。

===================================

查看前面的连载:

(1.5)--闪回查询之制约因素

(1.4)--闪回查询之Transaction query

(1.3)--闪回查询之Versions between

(1.2)--闪回查询之As of scn

(1.1)--闪回查询之As of timestamp

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7607759/viewspace-368973/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7607759/viewspace-368973/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值