转载请注明:来自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
可以得出结论:当删除位图索引时,它们并不放置在回收站中 — 因此无法检索它们。约束名称也无法从视图中检索(具体不再测试)。