只是看后笔记
比如说吧删除表时候删除错了必须得马上还原
先看下有什么表
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
最新评论