purge index in_test1_01;
此命令将仅仅删除索引,而将表的拷贝留在回收站中。
有时在更高级别上进行清除可能会有用。例如,您可能希望清除表空间
USERS 的回收
站中的所有对象。可以执行:
PURGE TABLESPACE USERS;
您也许希望只为该表空间中特定用户清空回收站。在数据仓库类型的环境中,用户创建
和删除许多临时表,此时这种方法可能会有用。您可以更改上述命令,限定只清除特定的用
户:
PURGE TABLESPACE USERS USER SCOTT;
诸如
SCOTT 等用户可以使用以下命令来清空自己的回收站
PURGE RECYCLEBIN;
DBA 可以使用以下命令清除任何表空间中的所有对象
PURGE DBA_RECYCLEBIN;
可以看到,可以通过多种不同方法来管理回收站,以满足特定的需要。
3、表版本和闪回功能
用户可能会经常多次创建和删除同一个表,如:
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (1);
commit;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (2);
commit;
DROP TABLE TEST;
CREATE TABLE TEST (COL1 NUMBER);
INSERT INTO TEST VALUES (3);
commit;
DROP TABLE TEST;
此时,如果您要对表
TEST
执行闪回操作,那么列
COL1
的值应该是什么 常规想法可
能认为从回收站取回表的第一个版本,列
COL1
的值是
1。实际上,取回的是表的第三个版
本,而不是第一个。因此列
COL1
的值为
3
,而不是
1。
此时您还可以取回被删除表的其他版本。但是,表
TEST 的存在不允许出现这种情况。
您有两种选择:
使用重命名选项:
FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST2;
FLASHBACK TABLE TEST TO BEFORE DROP RENAME TO TEST1;
这些语句将表的第一个版本恢复到
TEST1
,将第二个版本恢复到
TEST2
。
TEST1 和
TEST2
中的列
COL1
的值将分别是
1
和
2。或者,