使用闪回删除来回退DROP TABLE操作

--闪回
SELECT * FROM AA AS OF TIMESTAMP(sysdate-1/24/60)  --查看2个小时以前的数据
1/2就是12小时
1/24就是1小时
1/24/60就是1分钟

alter table tableName enable row movement; 
   这个命令的作用是,允许修改ORACLE分配给行的ROWID,在oracle中,插入一行数据
就会给它分配一个rowid,这行永远拥有这个ROWID,闪回表处理会对EMP完成DELETE操作
并添加新行,这样就会对新行分配一个新的ROWID; 否则会报 ora-08189错误。 
flashback table tableName to scn timestamp_to_scn(sysdate-1/12);--利用时间转换成SCN号,进行数据恢复.
SCN: 
   SCN(System ChangeNumber):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动
增加,他是系统中维持数据的一致性和顺序恢复的重要标志。

--恢复删除的表
DROP TABLE AA; 
1.用如下语句查询到这个表还在Oracle回收站中: 
SELECT * FROM user_recyclebin WHERE original_name='AA'; 


2.用以下语句进行恢复: 
FLASHBACK TABLE AA TO BEFORE DROP;
ORACLE10G增加了回收站(recycle bin)的功能,从原理来说就是一个数据字典,保存被DROP对象的信息,]
实际上被DROP的对象,并没有被数据库删除,任然占有空间。除非用户手工purge和数据空间不够被清除掉.

3.清除回收站的数据
purge table tableName
purge recyclebin;--全部清除

使用闪回删除来回退DROP TABLE操作

这部分解释了如何使用FLASHBACK TABLE…TO BEFORE DROP语句从回收站获取对象。

关于闪回删除

闪回删除可以回退DROP TABLE操作的影响

闪回删除要比可应用于该场景的其它恢复技术要快,例如基于时间点的恢复,不会导致停机或最近的事务的丢失。


当你删除一个表的时候,数据库不会立即移除与这个表相关的空间。

相反,这个表被改名了,并与其它相关的对象一起,被放入了回收站

系统产生的回收站对象的名称是唯一的。可以像查询其它对象一样,查询在回收站中的对象。


FLAHSBACK操作从收回站获取对象,当获取被删除的表的时候,

可以指定这个表的原始的由用户指定的名称,也可以指定系统产生的名称。


当你删除一个表,这个表和所有它依赖的对象都进入到了回收站。

因此当执行闪回删除的时候,所有的对象通常都是一起被获取。

当从回收站还原表时,依赖的对象,例如索引,不会得到它们原始的名字,保留系统产生的回收站中的名称。

Oracle会获取定义在该表上的所有的索引(位图连接索引除外)、触发器和约束(引用其它表的引用完整性约束除外)


一些依赖的对象,例如索引,可以会儿因为空间压力而被回收。这种情况下被回收的对象不会从回收站获取。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29050044/viewspace-2144725/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29050044/viewspace-2144725/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值