HardBirch

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

时间:09-06-10 栏目:iOS移动应用开发技术 作者:张飞不张,文采横飞 评论:0 点击: 1,453 次

在测试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

 

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

 

【误删数据不要慌,Oracle闪回表来帮忙】之四:等您坐沙发呢!

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐