数据库中如何使用闪回删除来回退DROP TABLE操作
这篇文章主要为大家展示了"数据库中如何使用闪回删除来回退DROP TABLE操作",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"数据库中如何使用闪回删除来回退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会获取定义在该表上的所有的索引(位图连接索引除外)、触发器和约束(引用其它表的引用完整性约束除外)
一些依赖的对象,例如索引,可以会儿因为空间压力而被回收。这种情况下被回收的对象不会从回收站获取。
以上是"数据库中如何使用闪回删除来回退DROP TABLE操作"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!