视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
OraclePurge和drop的区别
2020-11-09 11:42:58 责编:小采
文档


Oracle 10g提供的flashback drop 新特性为了加快用户错误操作的恢复,Oracle10g提供了flashback drop的功能。而在以前的版本中,

Purge和drop的区别:

Oracle 10g提供的flashback drop 新特性为了加快用户错误操作的恢复,Oracle10g提供了flashback drop的功能。而在以前的版本中,除了不完全恢复,通常没有一个好的解决办法。

Oracle 10g的flashback drop功能,允许你从当前数据库中恢复一个被drop了的对象,在执行drop操作时,现在Oracle不是真正删除它,而是将该对象自动将放入回收站。对于一个对象的删除,其实仅仅就是简单的重令名操作。

所谓的回收站,是一个虚拟的容器,,用于存放所有被删除的对象。在回收站中,被删除的对象将占用创建时的同样的空间,你甚至还可以对已经删除的表查询,也可以利用flashback功能来恢复它,这个就是flashback drop功能。

回收站内的相关信息可以从recyclebin/user_recyclebin/dba_recyclebin等视图中获取,或者通过SQL*Plus的show recyclebin 命令查看。

C:\>sqlplus /nolog

SQL*Plus: Release 10.1.0.2.0 - Production on 星期三 6月 1 10:09:32 2005

Copyright (c) 1982, 2004, Oracle. All rights reserved.

SQL> conn tiger/tiger@xe

已连接。

SQL> select count(*) from goodsinfo1;

COUNT(*)

----------

397

SQL> drop table goodsinfo1;

表已删除。

SQL> commit;

提交完成。

SQL> select count(*) from goodsinfo1;

select count(*) from goodsinfo1

*

第 1 行出现错误:

ORA-00942: table or view does not exist

啊!天啊!我删错了表,怎么办好呢?啊!将数据库闪回到刚才删除表前的时间就可以啦。

不行!那其它的操作也会一齐闪回。现在可以用flashback drop的功能了。

SQL> show recyclebin;

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

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

GOODSINFO1 BIN$RFG58GsfRheKlVKnWw8KKQ==$0 TABLE 2005-06-01:10:11:03

SQL> FLASHBACK TABLE goodsinfo1 TO BEFORE DROP;

闪回完成。

SQL> select count(*) from goodsinfo1;

COUNT(*)

----------

397

看看已删除的表回来了。真的谢天谢地啊!

SQL> show recyclebin;

如果想要彻底清除这些对象,可以使用Purge命令,如:

SQL> select count(*) from goodsinfo2;

COUNT(*)

----------

397

SQL> drop table goodsinfo2;

表已删除。

SQL> commit;

提交完成。

SQL> show recyclebin;

ORIGINAL NAME RECYCLEBIN NAME OBJECT TYPE DROP TIME

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

GOODSINFO2 BIN$BgSuEWMOSLOGZPcIc97O8w==$0 TABLE 2005-06-01:10:13:18

SQL> purge table goodsinfo2;

表已清除。

SQL> show recyclebin;

SQL>

使用 purge recyclebin可以清除回收站中的所有对象。

类似的我们可以通过purge user_recyclebin或者是purge dba_recyclebin来清除不同的回收站对象。

通过PURGE TABLESPACE TSNAME,PURGE TABLESPACE TSNAME USER USERNAME命令来选择清除回收站。

ps:用户drop后不进recycle bin,所以不用purge

下载本文
显示全文
专题