iteye_13980
2011-04-18 10:07 阅读 362

[oracle] ORA-01555错误的过程以及影响

ORA-01555, 快照太旧, 这个错误应该是一个很经典的Oracle错误了, 我能在网上找到的原因: 是说查询太长时间, 有insert/update动作时就会容易造成这种错误. 然而我对其中的细节到现在也不明白, 还请iteye的大侠, 高手们指点.

  1. 发生ORA-01555, 会整体影响Oracle Server, 进而对其他session的响应也会变慢吗?

  2. 在一个session中的query语句执行后, 直到发生ORA-01555之前,是否有部分数据返回到client?

  3. ORA-01555对本session的影响是一个长时间的过程, 还是仅仅是一个瞬间错误的影响?
    也就是说: query过程中, 返回结果越来越慢, 直到发生ORA-01555, 还是在发生ORA-01555之前query的速度一直是正常的?

  4. 如果一处程序不断地在update/insert自己查询范围内的数据, 我想理论上更容易造成ORA-01555错误.
    这种情况下: update/insert和query的session是分开好, 还是共用好?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    czmmiao czmmiao 2011-04-18 12:42
    1. 发生ORA-01555, 会整体影响Oracle Server, 进而对其他session的响应也会变慢吗? 答:长查询需要耗费较多的内存,如果内存不够大,会影响到其他session,使其相应较慢!当然undo数据的回收和使用也会在一定程度下影响性能。
    2. 在一个session中的query语句执行后, 直到发生ORA-01555之前,是否有部分数据返回到client? 答:有部分数据返回
    3. ORA-01555对本session的影响是一个长时间的过程, 还是仅仅是一个瞬间错误的影响? 也就是说: query过程中, 返回结果越来越慢, 直到发生ORA-01555, 还是在发生ORA-01555之前query的速度一直是正常的? 答:01555影响的是瞬间的过程,当undo数据不存在的时候且查询需要用到该undo数据的时候立即发生。其他请参见解答1。
    4. 如果一处程序不断地在update/insert自己查询范围内的数据, 我想理论上更容易造成ORA-01555错误.这种情况下: update/insert和query的session是分开好, 还是共用好? 答:容易造成01555是undo表空间设置不合理造成的,可以通过增大undo表空间大小,设置undo_guarantee,undo_retention来减少发生01555的次数
    点赞 评论 复制链接分享

相关推荐