zoukankan      html  css  js  c++  java
  • Oracle 9

    什么操作会生成undo

    INSERT生成的UNDO最少,只要记录新的rowid

    UPDATE生成的undo多一点,它要记录修改前的数据中的那部分。

    DELETE生成最多的undo, 因为它要记录整行被删除的数据。

    如果修改的数据上带有index,那么讲生成更多的undo。

    ORA-01555: snpashot too old错误

    什么原因导致这个错误?

    undo段太小

    提交过于频繁

    查询时间太长

    出现snapshot too old错误详解

    (1) 比如undo设置15MB,假设基于这个数据库的事物每分钟生成3.5MB的undo,那么大约3~4分钟,undo段就会被循环重用一次undo段空间。 再这种环境下设置undo段为15MB应该是没有问题的。

    (2) 这个时候又新开发了以个报表,其中一个查询要执行5分钟。

    (3) 由于undo段有可能会在这个查询执行期间被覆盖, 而被覆盖的数据正是这个查询命中的一个块,那么就会收到一个snapshot too old错误。

    解决办法

    适当调整 UNDO_RETENTION

    增大undo段

    调优查询,减少查询时间

  • 相关阅读:
    SEO
    Hack写法
    文学漫步
    [BZOJ4565] [Haoi2016] 字符合并
    [bzoj 3123][Sdoi2013]森林
    [UVA 12633] Super Rooks on Chessboard FFT+计数
    [HDU4609] 3-idiots FFT+计数
    [bzoj4554] [Tjoi2016&Heoi2016]游戏
    [bzoj4556] [Tjoi2016&Heoi2016]字符串
    [bzoj4552][Tjoi2016&Heoi2016]排序
  • 原文地址:https://www.cnblogs.com/xzpp/p/3417065.html
Copyright © 2011-2022 走看看