两种原因:

  1. 一致读 ,CR (consistency Read)
    查询修改数据的前镜像时,前景镜像被覆盖。
  2. 块延迟清理
事务工作步骤
Transaction 开始前 回滚段获取一个ITL(事务槽),分配空间, 记录事务信息
Transaction 提交后,redo完成记录,同时还清除回滚段的事务信息 包括行级锁,ITL信息(commit 标志,SCN等)清除这些事务段的信息的过程就叫做 块清除, 在完成块清除时, 我们本事务修改的数据块就会存在两种可能(1) 所有的数据块还保存在 buffer  cache 中, (2)部分数据块或者是全部数据块由于LRU管理已经被刷出了buffer cache。oracle为了考虑到块清除的成本,以及性能,会作以下两种方式的块清除处理:快速块清除(fast block cleanout),  当事务修改的数据库全部保存在buffer cache 并且修改数据块的数据量没有超过 cache buffer  的 10%,快速清除事务信息。 延迟块清除(delayed block cleanout) 当修改的数据块的阀值超过10%  或者本次事务相关的数据块已经被刷出了 buffer cache, oracle 会下次访问此block 时再清除事务信息。

接下来,下一个select(读者)去读延迟块。

  1. 如果select 可以找到回滚段中记录的commit 时的SCN,那么延迟块正常清除,出现select产生redo的情况。
  2. 如果select 找不到commit时的SCN,证明需要清理commit的已经被回收。顺序为:
    需要清理的scn(已被回收) < 能找到的最小事务的scn
    这时候就需要分析现在select的SCN 在哪个位置:
    2.1: select的SCN > 回滚段中最小的scn,及在最小scn之后, 那么完成块清理。
    2.2 :select的SCN < 回滚段中最小的scn, 就是还是小于最小的scn 即还是找不到。就发生ORA-01555. oracle 会做设置需要清理的scn(已被回收) = 能找到的最小事务的scn。

++++++++++++++++++++++++

下面简单讲下ORA-1555的处理方法:

在磁盘空间不充足,可以调整undo_retention
SELECT d.undo_size/(1024*1024) "ACTUAL UNDO SIZE [MByte]",SUBSTR(e.value,1,25) "UNDO RETENTION [Sec]",ROUND((d.undo_size / (to_number(f.value) *g.undo_block_per_sec))) "OPTIMAL UNDO RETENTION [Sec]"FROM (SELECT SUM(a.bytes) undo_sizeFROM v$datafile a,v$tablespace b,dba_tablespaces cWHERE c.contents = 'UNDO'AND c.status = 'ONLINE'AND b.name = c.tablespace_nameAND a.ts# = b.ts#) d,v$parameter e,v$parameter f,(SELECT MAX(undoblks/((end_time-begin_time)*3600*24))undo_block_per_secFROM v$undostat) g
WHERE e.name = 'undo_retention'AND f.name = 'db_block_size';在磁盘充足,保证undo_retention不变,调整undo_size
SELECT d.undo_size/(1024*1024) "ACTUAL UNDO SIZE [MByte]",SUBSTR(e.value,1,25) "UNDO RETENTION [Sec]",(TO_NUMBER(e.value) * TO_NUMBER(f.value) *g.undo_block_per_sec) / (1024*1024) "NEEDED UNDO SIZE [MByte]"FROM (SELECT SUM(a.bytes) undo_sizeFROM v$datafile a,v$tablespace b,dba_tablespaces cWHERE c.contents = 'UNDO'AND c.status = 'ONLINE'AND b.name = c.tablespace_nameAND a.ts# = b.ts#) d,v$parameter e,v$parameter f,(SELECT MAX(undoblks/((end_time-begin_time)*3600*24))undo_block_per_secFROM v$undostat) gWHERE e.name = 'undo_retention'AND f.name = 'db_block_size'

深度解析 ORA-01555 原因及解决方法相关推荐

  1. ORA-00911错误及解决方法(另附所有ora错误原因及解决方法 网址)

    今天在项目中遇到一个头疼的问题,Oracle数据库报告:ORA-00911错误.问题如下: 但是我在PL/SQL Developer中执行明明没有问题!!! 问题出在哪里??? 纠结了我很久,后来发现 ...

  2. 使用Fastjson解析List对象时出现:{“$ref“:“$.data[0].task.OBJECTS[0]“}的问题原因及解决方法

    使用Fastjson解析List对象时出现:{"$ref":"$.data[0].task.OBJECTS[0]"}的问题原因及解决方法 参考文章: (1)使用 ...

  3. python内核死亡的原因_Kernel Panic常见原因以及解决方法

    Technorati 标签: Kernel Panic 出现原因 1. Linux在中断处理程序中,它不处于任何一个进程上下文,如果使用可能睡眠的函数,则系统调度会被破坏,导致kernel panic ...

  4. 电脑浏览器打不开html文档,win7浏览器打不开本地html文件的原因及解决方法

    今天小编和大家分享深度技术win7系统浏览器打不开本地html文件的原因及解决方法,相信大家都有遇到过html文件打不开,一直显示主页而不是html页面,其实很大部分是浏览器设置问题.有什么办法可以解 ...

  5. oracle错误号大全(查询ora错误号以及解决方法技巧)

    oracle 查询ora错误号以及解决方法技巧 racle 错误号以及解决方法技巧 经常有朋友问我ORACLE 类似ora-00109 错误的信息,其实我们的ORACLE系统本身已经为我们详细的说明了 ...

  6. MySQL局域网内访问慢的原因及解决方法

    转载自 http://blog.csdn.net/tiantang_1986/article/details/76890178 MySQL局域网内访问慢的原因及解决方法. 出现原因:主要是因为DNS服 ...

  7. NoSuchMethodError 常见原因及解决方法

    当应用程序试图调用类(静态或实例)的指定方法,而该类已不再具有该方法的定义时,就会抛出 java.lang.NoSuchMethodError 错误.简单地说,就是同一个 Class 有多个版本的实现 ...

  8. oracle服务没有了 原因,一例oracle服务无法启动的原因及解决方法

    摘要 腾兴网为您分享:一例oracle服务无法启动的原因及解决方法,智慧农业,月星家居,余额宝,万达普惠等软件知识,以及企鹅精灵,滴滴专车司机版,c4d导入3dmax,阿纯优品,小飞兔,我没有表情包, ...

  9. html不兼容的原因,浏览器不兼容的原因和解决方法

    浏览器之间不兼容的原因和解决方案网页设计中最大的麻烦之一是网页与不同浏览器的兼容性,这是因为主流浏览器(例如IE 6.0 / IE 7.0 / firefox 2 / Opera 9)无法进行CSS解 ...

  10. 无法删除文件或文件夹的原因和解决方法(转)

    无法删除文件或文件夹的原因和解决方法(转)[@more@] 概要 您可能无法删除 NTFS 文件系统卷上的文件或文件夹.本文介绍以下两方面内容:为什么您可能无法删除 NTFS 卷上的文件或文件夹,以及 ...

最新文章

  1. Tungsten Fabric SDN — 社区贡献
  2. AdvFlow:一种基于标准化流的黑盒攻击新方法,产生更难被发觉的对抗样本 | NeurIPS‘20
  3. finallshell堡垒机_用lshell+脚本实现堡垒机(跳转机)功能
  4. 测试无数据_fpc柔性线路板压合辅材的测试方法
  5. Web Storage 与cookies
  6. java web 路径 .html,java web 路径(java web 路径).doc
  7. 深入浅出ObjC之消息
  8. python—range() 函数—步长为正,左闭右开;步长为负,左开右闭
  9. ai人工智能操控什么意思_为什么AI会(永远)接管
  10. C语言程序设计—01基础知识
  11. 如何撰写软件详细设计内容?
  12. 黑群晖XPEnoboot for DSM 5.2-5967.1
  13. 2020牛客寒假算法基础集训营4 G - 音乐鉴赏(概率与期望)
  14. 【Python • 图片识别】pytesseract快速识别提取图片中的文字
  15. QClub:Ruby网站架构案例分享──财帮子FreeWheel(10.19 北京)
  16. notablilty笔记本模板_notability实测,让你上天的笔记软件
  17. CCF考试——201312-5I’m stuck!
  18. 装出一个好的WIN2000最经典的步骤
  19. IDEA绝对好用的十大插件,不接受反驳
  20. 数据的力量 驰援疫情丨对抗新型肺炎,志愿者招募

热门文章

  1. Netkeeper联网时报pppoe拨号模块损坏
  2. CODESOFT6 二维码中追加回车
  3. Android 相机教程,Android 相机教程
  4. 计算机控制不恒定性,计算机控制-习题答题.doc
  5. web页面之响应式布局
  6. Fedora12 编译s3c2416 U-Boot1.3.4的Makefile和头文件
  7. 爱创课堂vue视频资料
  8. 【Unity 3D 从入门到实战】Unity 3D 组件总结
  9. error pulling image configuration
  10. docker logs 参数解释