**· Oracle数据库11g如何恢复表数据 ·**
**生产环境误(Oracle 11g)删除表数据之后怎么办,冷静对应,不需要跑路!**
**首先要看删除数据的方式,是delete还是truncate。**
** 区别点 ** | ** truncate ** | ** delete **
---|---|---
** 执行速度 ** | ** 极快 ** | ** 慢 **
** 命令分类 ** | ** DDL(数据定义语言) ** | ** DML(数据操作语言) **
** 删除对象 ** | ** 表数据 ** | ** 表数据 **
** where句 ** | ** 不可使用 ** | ** 可使用 **
**回滚** | ** 不可回滚 ** | ** 可回滚 **
** 恢复方法 ** | ** Fy_recover_data工具包 ** | ** 使用flashback命令回滚 **
** 恢复限制 ** | ** 如果truncate后又有新数据写入则彻底无法恢复, ** **
** ** 表数据文件块被覆盖则无法恢复完整数据。 ** | ** DB参数DB_FLASHBACK_RETENTION_TARGET控制恢复时间范围,默认值24小时。 **
**Delete的对应较为简单,使用flashback命令可以恢复到24小时之内任何时间点的状态。**
alter table xla.xla_ae_lines enable row movement
2.使用flashback恢复表数据到某一时间点,通常24小时之前的数据将无法恢复
flashback table xla.xla_ae_lines TO TIMESTAMP to_timestamp ('2013-09-10
14:00:00','yyyy-mm-dd hh24:mi:ss')
Truncate的对应则较为麻烦。
1.首先要导入Fy_recover_data工具包,这个包是oracle内部人员使用,未正式公开。
下载地址: http://www.hellodba.com/Download/FY_Recover
**创建测试表,将其truncate掉**
导入下载的FY_Recover_Data.pck包
**开始执行恢复,输入参数schema,table_name**
**从上面的记录中,可以看到表被恢复为sys.test$$**
**之后将恢复出来的数据插入test表中即可**
**总结,尽量不要使用truncate删除数据,生产环境更新数据时规范的作业流程必不可少。**
**END**
作者 / 章硕吉
审核 / 陈 兴
编辑 / 王 锐