Oracle 如何从被drop表中恢复数据

如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!

诗檀软件专业数据库修复团队

服务热线 : 13764045638 QQ号:47079569 邮箱:[email protected]

目的

本文档解释了一些从有错误的数据库中从表中被drop数据的一些方法。

 

范围 & 应用

管理用户;要求访问Export dump 文件,Archivelogs 或SQL*Loader batch文件。

 

相关文档

参见Oracle Server Administration Guide获取如何执行基于时间恢复的方法。

 

 

如何从被drop表中恢复数据:

=========================================

 

如果当前有表的EXPORT刚执行了一个该表的IMPORT。

则重建从EXPORT起添加的数据。

 

如果当前没有EXPORT,那么问题就变得有点复杂。

 

一定会有一些问题:

– 表是否通过一个像SQL*Loader的批量加载填充?

 

– 自从可以简易重新手动输入加载,是否有对表的任何更改?

 

如果这些问题的答案是肯定的,则重新加载并重新输入数据。

 

如果这些问题的答案是否定的,则考虑以下:

 

– 最近是否有数据库的好的备份?

 

– 数据库是否在归档日志模式?如果没有且没有当前的表EXPORT,则唯一资源是从最近冷备份还原。这会导致从备份创建起数据库中所有数据的丢失。

 

如果数据库在ARCHIVELOG 模式,则:

 

– 是否有包含被drop表的表空间的最近的好备份?

 

如果答案是肯定的,则可以执行基于时间的恢复,但该表空间中的所有数据会被还原到在备份时的状态。

请注意该方法仅适用于Oracle RDBMS 08.00.XX 或以上,从Oracle 8中引入了TSPITR (表空间时间点恢复)起。

 

如果恢复的时间不那么关键,则可以执行以下:

 

– 在还原数据文件之前,EXPORT表空间中所有对象。确保在导出的总结没有显示任何警告。

 

– 从备份中还原包含被drop表的表空间文件。

 

注:不能替换当前控制文件。

不能替换重做日志文件:

 

– 执行基于时间的恢复到表被drop的时间之前。

 

– 然后drop表空间中所有其他对象。只留下被还原的表。

 

– 将其他表重新导入数据库。这些表是当前的,而被还原的表仍包含备份时的数据。

 

注:在非常大的数据库,EXPORT然后IMPORT对象所需的时间可能非常久。

 

 

说明:

============

 

Drop表后无法轻易恢复数据的问题是因为Oracle代码是作用于数据定义语言(DDL)命令,而不是解释操作符的意图。当发出了DELETE命令后,Oracke保存旧数据的副本,直到发出COMMIT或ROLLBACK命令。

 

当处理一个DDL命令时,Oracle首先提交事务,执行请求并最终提交完成的行为。在重做日志中唯一记录是DDL命令本身,而不是受影响的数据。

 

 

搜索词:

=============

 

DROP TABLE RECOVER DATA TIME BASED RECOVERY


Posted

in

by

Tags:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *