使用Oracle11g的闪回查询技术解决了一个误DELETE表数据的问题



转载自:http://blog.csdn.net/haofeifei6/article/details/36185065


使用Oracle11g的闪回查询技术解决了一个误DELETE表数据的问题

一、环境:

数据库版本:Oracle11.2.0.3

操作系统版本:Redhat Linux 企业版5.5

二、问题症状:

今天上午大约10:30左右,业务人员在做业务时,突然发现操作界面中的菜单名称莫名其妙的没有了,后来通知后台数据库维护人员后,查询相关菜单表T_MENU与T_ROLE_MENU表,发现表里面的数据都没了

三、问题分析:

由于菜单表里的数据没有才导致如上问题,初步怀疑有人误操作删除数据后,并提交了,目前还没有时间来查明是谁删除的,恢复数据优先,这里想到了两种方法,由于有RMAN备份,但是由于只是两个表的数据,RMAN为物理备份,恢复起来比较麻烦,由于是Oracle11.2.0.3版本,所以考虑使用闪回查询技术来恢复。

四、解决方案:

由于发现的较为及时,可以考虑使用闪回查询技术来恢复数据,闪回查询技术主要是利用UNDO表空间里的数据来查询出某个表某个时间点之前的数据,取决于UNDO表空间的大小,以及Undo_retention等参数的设置,简单一点说就是如果故障时间长,可能里面的数据就没了,再查询就会报ORA-01555错误,如下所示:

ORA-01555: snapshot too old: rollback segment number 5 with name "_SYSSMUS 4011504098$"

具体的处理方法为如下:

1.利用闪回查询技术查询删除时间点之前的表中数据,下面语句需要根据实际情况来调整时间:

select * from t as of timestamp to_timestamp('2014-07-01 09:35:00', 'yyyy-mm-dd hh24:mi:ss');

2.如果数据都正确后,将数据插入到表中:

insert into t select * from t as of timestamp to_timestamp('2014-07-01 09:35:00', 'yyyy-mm-dd hh24:mi:ss');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值