客户叫我删除掉一条记录,说因为流程走错了,给我发过来一串很长的中文,说把这个名称的记录删掉。
我直接用PL/SQL操作数据库,根据名字相等搜索,没有记录。因为这些记录的名称都是很相似的,都是类似于“关于 下发2012年第一季度“畅享移动福生活”数据业务整合营销活动细则的通知……”之类,于是用like搜索,才出来一条记录,我也没注意看,直接就删了。
然后我登陆系统,进行查询,发现那条记录还在,把正常的记录给删了,而且被删的这条记录关联的流程还在审批中的。心里大惊!有过一次更新系统,误删了服务器上的附件,被客户骂得不行,后果很严重,已经向客户保证过不再发生类似的事情!
马上想到数据恢复,Google一下Oracle数据恢复的,找到了OracleFlashback。网上资料说Oracle 10g以上的版本支持Flashback,心里有了希望,因为我的系统用的就是Oracle 10g。
不多说,立马按照教程操作。
1、执行 alter table table_name enable row movement;
2、执行 FlashBack table table_name to timestamp to_timestamp('2012-05-24 14:59:36','yyyy-mm-dd hh24:mi:ss');
看着这两条语句执行完毕,立马进行搜索!Thanks,刚被删除的那条记录恢复了!
写下此文,加深印象,以后操作数据库更加要小心翼翼了!
关于Oracle Flashback的相关知识以后时间再研究一下。上述SQL语句中的table_name是指要恢复数据的表,timestamp to_timestamp('2012-05-24 14:59:36','yyyy-mm-dd hh24:mi:ss')这个应该是指要恢复到某个时间。