误操作经历,truncate导致闪回查询失败

开发人员向我反映由于误操作删除了表里的一些数据,要求我恢复。
咨询了误操作的时间点后,我用闪回查询试了一下,被误删的数据还在回滚段,可以挽救回来。
我先备份了现在表里的数据。
create table a as select * from 业务表。

然后我做了一件愚蠢的事
truncate table 业务表
insert into 业务表 select * from 业务表 as of timestamp to_timestamp('2014-06-18 13:30:01','yyyy-mm-dd hh24:mi:ss');

ERROR at line 1:
ORA-01466: unable to read data - table definition has changed

结果提示了错误,说表的定义已经改变。因为ORACLE的闪回要求你的表结构从你误操作的时间点起到执行闪回查询的时间点,表定义是不能改变的。

刚刚闪回查询还可以,怎么短短一分钟不到,谁就把表结构给改了呢?

奥,我明白了,是我自己犯了错误,truncate操作也被闪回查询认为是改变表结构定义的操作。是我自己做的孽。

怎么办?

还好,truncate之前,我是备份了 开发误操作后的数据的,这部分数据我可以找回。

那么开发误操作的数据如何找回呢?闪回是不行了
LOGMINER要登场了。庆幸的是,所有的数据库我都开启了辅助日志。
最终通过LOGMINIER,解析了那段时间的误操作日志,通过SQL_UNDO字段的内容,成功恢复出了数据,有惊无险。

这个事件给我提了个大醒。DBA要了解ORACLE特性的细节,基础知识要扎实,尽量避免使用TRUNCATE操作。删除数据前要做备份。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-1187959/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22034023/viewspace-1187959/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值