· 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小时之内任何时间点的状态。
1.赋予要恢复的表恢复权限
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
作者 / 章硕吉
审核 / 陈 兴
编辑 / 王 锐