【误删数据不要慌,Oracle闪回表来帮忙】之四

转载请注明:来自http://blog.csdn.net/M_ChangGong/ 作者:张燕广

在测试PURGE INDEX INDEX_NAME; 使用时时曾提到利用闪回表恢复表后,该表上的索引(也包括触发器)等相关对象并没有恢复原始名称,它们仍然使用回收站的名称。在表上定义的源(如视图和过程)没有重新编译,仍然保持无效状态。必须手动得到这些原有名称并应用到闪回表。

       依次执行如下语句:

CREATE TABLE TEST2 AS SELECT * FROM TEST ;

CREATE INDEX IDX_TEST2 ON TEST2(ID);

DROP TABLE TEST2;

信息保留在名为 USER_RECYCLEBIN 的视图中。在对表进行闪回操作前,可以使用以下查询来检索原有名称。

SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE

 from USER_RECYCLEBIN; 

结果为:

SQL> SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE from USER_RECYCLEBIN;

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

OBJECT_NAME                    ORIGINAL_NAME           TYPE

BIN$zTYTcd0GTFqGcuc5q3hr/A==$0 IDX_TEST2               INDEX

BIN$GGO77ZCFQW6jeRDp1PACGw==$0 TEST2                   TABLE

 

   查询出原有名称后进行手工修改(再次发出之前发出过的疑问:不知道有没有在利用闪回表恢复表后,该表上索引名称不改变的方法???)。

下面再做一个测试:

先把表TEST2彻底删除。

SQL> purge table test2;

 

表已清除。

依次执行如下语句:

CREATE TABLE TEST2 AS SELECT * FROM TEST ;

CREATE BITMAPINDEX IDX_TEST2 ON TEST2(ID);

DROP TABLE TEST2;

再次执行如下语句进行查询:

SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE

                 from USER_RECYCLEBIN;

结果为:

SQL> SELECT OBJECT_NAME, ORIGINAL_NAME, TYPE from USER_RECYCLEBIN;

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

OBJECT_NAME                    ORIGINAL_NAME           TYPE

BIN$mSM75pY5SBi+pauVpOv/Kg==$0  TEST2                   TABLE

 

可以得出结论:当删除位图索引时,它们并不放置在回收站中因此无法检索它们。约束名称也无法从视图中检索(具体不再测试)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值