oracle闪回:ORACLE 10G 利用闪回还原表

刚才看到感觉挺好拿 来和不知道人分享

只是看后笔记

 

比如说吧删除表时候删除错了必须得马上还原

先看下有什么表

select * from tab;

结果会在最后边地方出现在TNAME那块

比如我这就是USERS表

误删操作

SQL> drop table USERS;

Table dropped.

现在在看看表状态

select  * from tab;

BIN$j66enz4vQxit/PrhOLym1A$0 TABLE

表 users 已不存在但是请注意出现新表 BIN$j66enz4vQxit/PrhOLym1A$0 这就是所发生事情:被删除表 users并没有完全消失而是重命名为个由系统定义名称它存在于同个表空间中具有和原始表相同结构如果在该表上定义了索引或触发器则它们也被重命名使用和表相同命名规则任何相关源(如过程)都失效;原始表触发器和索引被改为放置在重命名表 BIN$j66enz4vQxit/PrhOLym1A$0 上保持被删除表完整对象结构
表及其相关对象被放置在个称为“回收站”逻辑容器中它类似于您 PC 机中回收站但是对象并没有从它们原先所在表空间中删除;它们仍然占用那里空间,

在 SQL*Plus 提示符处使用以下命令来查看回收站中内容;

SQL> show recyclebin;
ORIGINAL NAME    RECYCLEBIN NAME                OBJECT TYPE  DROP TIME
---------------- ------------------------------ ------------ -------------------
USERS            BIN$j66enz4vQxit/PrhOLym1A$0 TABLE        2009-04-30:14:12:17

 

结果显示了表原始名称USERS并显示了回收站中新名称该名称和我们看到删除后所创建新表名称相同(注意:确切名称可能因平台区别而区别)为恢复该表您所需要做就是使用 FLASHBACK TABLE 命令:

 

SQL> flashback table USERS to before drop;

Flashback complete.

 

SQL> select * from tab;

TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
MVIEW$_ADV_OWB                 TABLE
USER_ACCOUNTS                  TABLE
VENDOR_ACCOUNTS                TABLE
DYNEWS                         TABLE
USERS                          TABLE


 

这样表就恢复了

记住将表放在回收站里并不在原始表空间中释放空间要释放空间您需要使用以下命令清空回收站:

purge recyclebin;

但是如果您希望完全删除该表而不需要使用闪回特性该如何办?在这种情况下可以使用以下命令永久删除该表:

drop table USERS purge;

此命令不会将表重命名为回收站中名称而是永久删除该表就象 10g 的前版本



TAG: oracle Oracle ORACLE

Tags:  oracle还原教程 oracle还原数据库 oracle还原 oracle闪回

延伸阅读

最新评论

发表评论