xiaoshilangzi 2016-04-09 08:35 采纳率: 0%
浏览 3266

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条回答

  • 青城远梦 2016-04-11 02:12
    关注

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

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

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

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

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

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

    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站