2 xiaoshilangzi xiaoshilangzi 于 2016.04.09 16:35 提问

oracle 恢复数据 报错 ora-01555,请各位帮忙看看 怎么解决

oracle 恢复数据 两天前的数据,数据量不大,执行下面语句

--开启行移动功能
alter table 表名 enable row movement;
--恢复表数据
flashback table 表名 to timestamp to_timestamp('2016-04-07 17:40:00','yyyy-mm-dd hh24:mi:ss');

报错 :

ORA-01555: snapshot too old: rollback segment number 11 with name "_SYSSMU11$" too small

1个回答

u011330180
u011330180   2016.04.11 10:12

1、扩大回滚段: 因为回滚段是循环使用的,如果回滚段足够大,那么那些被提交的数据信息就能保存足够长的时间是那些大事务完成一致性读取。

2、增加undo_retention时间:在undo_retention规定的时间内,任何其他事务都不能覆盖这些数据。

3、优化相关查询语句,减少一致性读:减少查询语句的一致性读,就降低读取不到回滚段数据的风险。这一点非常重要!

4、减少不必要的事务提交:提交的事务越少,产生的回滚段信息就越少。

5、对大事务指定回滚段,通过以下语句可以指定事务的回滚段:SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment; 给大事务指定回滚段,即降低大事务回滚信息覆盖其他事务的回滚信息的几率,又降低了他自身的回滚信息被覆盖的几率。大事务的存在,往往是1555错误产生的诱因。

6、使用游标时尽量使用显式游标,并且只在需要的时候打开游标,同时将所有可以在游标外做的操作从游标循环中拿出。当游标打开时,查询就开始了,直到游标关闭。减少游标的打开时间,就减少了1555错误发生的几率。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
闪回归档(11G新功能)远离ORA-01555错误
1.1.1.1    闪回归档 前面闪回都是基于undo来实现的闪回,由于我们的闪回都是不确定时间的,所以就会导致ORA-01555(快照太旧或者被覆盖)、ORA-01466(表定义被改)、ORA-08180(没有快照)等错误。 1.1.1.1.1       创建表空间,默认大小500M SQL> CREATE TABLESPACEhis_data_1 data
ORA-01555: snapshot too old错误
注意 ORA-01555 与数据破坏或数据丢失毫无关系。在这方面,这是一个“安全”的错误;惟一的影响是:接收到这个错误的查询无法继续处理。 这个错误实际上很直接,其实只有两个原因,但是其中之一有一个特例,而且这种特例情况发生得如此频繁,所以我要说存在3 个原因:
ora-01555出现的原因
Oracle在什么情况下会产生ORA-01555错误: 假设有一张6000万行数据的testdb表,预计testdb全表扫描1次需要2个小时,参考过程如下: 1、在1点钟,用户A发出了select * from testdb;此时不管将来testdb怎么变化,正确的结果应该是用户A会看到在1点钟这个时刻的内容。 2、在1点30分,用户B执行了update命令,更新了testdb表中的第4100万行
ora-01555,ORA-22924解决
用户逻辑导出数据的时候,在检验图像结果这张表,报ora-01555错误提示,检验图像结果有lob对象,所以产生该问题,解决如下; create table corrupt_lobs (corrupt_rowid rowid); declare error_1578 exception; error_1555 exception; error_22922 exception; p
sqoop使用时 Oracle ORA-01555快照过旧的错误
关于Oracle ORA-01555快照过旧的错误 首先了解Oracle在什么情况下会产生ORA-01555错误:   假设有一张6000万行数据的testdb表,预计testdb全表扫描1次需要2个小时,参考过程如下: 1、在1点钟,用户A发出了select * from testdb;此时不管将来testdb怎么变化,正确的结果应该是用户A会看到在1点钟这个时刻的内容。 2、在1点
使用Oracle11g的闪回查询技术解决了一个误DELETE表数据的问题
使用Oracle11g的闪回查询技术解决了一个误DELETE表数据的问题 一、问题zheng
数据库open报错ORA-01555: snapshot too old
原文博客链接地址:数据库open报错ORA-01555: snapshot too old 今天正在东莞蜜月的时候,一个学生说他管理的测试库出问题了,无法open,我们先来看看是什么问题: Recovery of Online Redo Log: Thread 1 Group 4 Seq 4 Reading mem 0 Mem# 0: /onlinelog/shr/re
oracle11g ORA-01555 ON ACTIVE DATA GUARD
author:skate time:2011/10/12   在oracle11g的active dataguard中,在备库运行一段时间,一般为几天,然后查询数据视图,数据库就hang很长时间,然后抛出错误: ORA-00604: error occurred at
已解决:expdp导出带有lob字段的表,报ORA-01555错误的问题
expdp导出带有lob字段的表,报ORA-01555错误的问题   1、情况描述 某数据库一直用expdp备份导出,但某天巡检发现expdp导出报错,是ORA-01555快照过旧,具体报错如下: ORA-39126: Workerunexpected fatal error in KUPW$WORKER.FETCH_XML_OBJECTS[INDEX:"SAPSR3"."LXE_OB
ORA-1555经典的错误
现象:应用的夜维从夜里00:00开始执行,但因为hang的原因(暂时猜测为夜维处理的某条数据和当前应用正常处理的某条数据相同,出现前后等待同一资源锁的现象),直到第二天白天09:25左右才继续执行,但此时应用日志记录: snapshot too old: rollback segment number 29 with name "_SYSSMU29$" too small 原因分析: