使用Oracle11g的闪回查询技术解决了一个误DELETE表数据的问题
2014-07-01 14:16
513 查看
使用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错误,如下所示:
具体的处理方法为如下:
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');
一、环境:
数据库版本: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错误,如下所示:
具体的处理方法为如下:
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');
相关文章推荐
- 在使用Hibernate时,因为一个查询需要更多的表连接而要使用SQL来解决性能问题。然而返回的结果集中包含了没有映射的Entity类中的表字段,在这个SQL中还有使用如何将层次关系的父子结点显示为横行
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题(非原创,摘自书中)
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
- 使用wxsqlite3后多表联合查询无数据的问题解决方法
- 关于ASP.NET“操作必须使用一个可更新的查询”问题的解决方法
- Hibernate使用原生SQL多表查询时字段名相同导致查询数据覆盖问题解决办法
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题
- oracle11g分页优化,rowid和rownum的性能比较,解决越往后数据查询越慢的问题
- 解决查询重复数据问题的一个特列
- 初学Flex,在使用Webservice时遇到Xml数据绑定的一个问题,试了N个方案,均没解决。
- 数据值为NULL,导致条件查询不到正确结果,ISNULL函数的使用解决问题
- ajax与java前后台传值及数据表查询解决一个bug的问题
- 解决mysqldb查询大量数据导致内存使用过高的问题
- 执行SQL语句时出现问题操作必须使用一个可更新的查询错误的解决方法
- ASP“操作必须使用一个可更新的查询”问题的解决办法
- 如何解决ADO.NET访问Access数据库出现"操作必须使用一个可更新的查询"的问题
- [原]用c#做了一个桌面程序用来分离excel文件里的数据时出现“操作必须使用一个可更新的查询”错误的解决
- 解决在mybatis中使用CTE进行oracle查询数据类型为long的字段出现流关闭问题