background image

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 

 

的值将分别是

 

2。或者,