HardBirch

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

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

如果在删除表的过程中没有实际删除表因而没有释放表空间那么当被删除的对象占用了所有空间时,会发生什么事?

答案很简单:这种情况根本不会出现。当表空间被回收站数据完全占满,以至于必须扩展数据文件来容纳更多数据时,可以说表空间处于空间压力情况下。此时,对象以先进先出的方式从回收站中自动清除。在删除表之前,相关对象(如索引)被删除。

同样,空间压力可能由特定表空间定义的用户限额而引起。表空间可能有足够的空余空间,但用户可能将其在该表空间中所分配的部分用完了。在这种情况下,Oracle 自动清除该表空间中属于该用户的对象。

此外,有几种方法可以手动控制回收站。

创建测试表TEST2

CREATE TABLE TEST2 AS SELECT * FROM TEST;

DROP  TABLE  TEST2;

--drop掉表test2后再次查看当前模式中的所有表

SELECT * FROM TAB;

TNAME                          TABTYPE  CLUSTERID

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

TEST                           TABLE

BIN$ZugeZyQZQYGPau4oeCY4cg==$0 TABLE

再次执行

                       PURGE TABLE TEST2; 

彻底删除表TEST2

或者使用其回收站中的名称,执行  

  PURGE TABLE " BIN$ZugeZyQZQYGPau4oeCY4cg==$0"; 

彻底删除表TEST2

此命令将从回收站中删除表 TEST 及所有相关对象,如索引、约束等,从而节省了空间。但是,如果仅仅是从回收站中永久删除索引,则可以使用以下命令来完成工作:

  PURGE INDEX INDEX_NAME;

创建测试表TEST2

CREATE TABLE TEST2 AS SELECT * FROM TEST;

为表TEST2创建索引IDX_TEST2

CREATE INDEX IDX_TEST2 ON TEST2(ID);

SELECT INDEX_NAME FROM USER_INDEXES;

INDEX_NAME

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

IDX_TEST2

执行删除表TEST2

DROP  TABLE  TEST2;

再次执行如下查询语句:

SELECT INDEX_NAME FROM USER_INDEXES;

未选定行

说明dropTEST2后该表上的索引也自动删除。

现在执行仅仅在回收站中彻底删除该索引的语句:

PURGE INDEX IDX_TEST2;

索引已清除。

下面再做一个测试:

先把表Test2 drop掉然后利用闪回表进行恢复,观察一下表恢复后索引的变化:

依次执行如下语句:

PURGE TABLE TEST2;

CREATE TABLE TEST2 AS SELECT * FROM TEST;

CREATE INDEX IDX_TEST2 ON TEST2(ID);

DROP  TABLE  TEST2;

执行恢复表命令:

FLASHBACK TABLE TEST2 TO BEFORE DROP;

执行查询索引的语句:

SELECT INDEX_NAME FROM USER_INDEXES;

INDEX_NAME

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

BIN$BFl7lTEgRz2ZzK+/xTeNCw==$0

可以发现恢复表TEST2后,该表上的索引已被系统重命名。(不知道有没有在利用闪回表恢复表后,该表上索引名称不改变的方法???)

现在把表TEST2再次drop掉:

DROP  TABLE  TEST2;

然后再次执行仅仅在回收站中彻底删除该索引的语句

PURGE INDEX IDX_TEST2;

还可行吗?

结果为:

SQL> PURGE INDEX IDX_TEST2;

PURGE INDEX IDX_TEST2

*

1 行出现错误:

ORA-38307: 对象不在回收站中

为什么不行了呢?因为在利用闪回表把TEST2恢复时(红色标注的语句),索引IDX_TEST2的名称已经变化为:BIN$BFl7lTEgRz2ZzK+/xTeNCw==$0

现在试一下下面的语句:

QQ群互动

Linux系统与内核学习群:194051772

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

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

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

赞助商广告

热门标签

赞助魔豆博主

最新评论

友荐云推荐