如果自己搞不定可以找诗檀软件专业ORACLE数据库修复团队成员帮您恢复!
诗檀软件专业数据库修复团队
服务热线 : 13764045638 QQ号:47079569 邮箱:service@parnassusdata.com
目的
本文档解释了一些从有错误的数据库中从表中被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
Comment