首先了解Oracle在什么情况下会产生ORA-01555错误:
假设有张table1的表,里面有6000万行数据,假设预计全表扫描1次需要2个小时,从过程来看:
1、在1点钟,用户A发出了select * from table1;此时不管将来table1怎么变化,正确的结果应该是用户A会看到在1点钟这个时刻的内容。
2、在1点30分,用户B执行了update命令,更新了table1表中的第4000万行的这条记录,这时,用户A的全表扫描还没有到达第4000万条。毫无疑问,这个时候,第4000万行的这条记录是被写入了回滚段,假设是回滚段UNDOTS1,如果用户A的全表扫描到达了第4000万行,是应该会正确的从回滚段UNDOTS1中读取出1点钟时刻的内容的。
3、这时,用户B将他刚才做的操作提交了,但是这时,系统仍然可以给用户A提供正确的数据,因为那第4000万行记录的内容仍然还在回滚段UNDOTS1里,系统可以根据SCN到回滚段里找到正确的数据,但要注意到,这时记录在UNDOTS1里的第4000万行记录已经发生了重大的改变:就是第4000万行在回滚段UNDOTS1里的数据有可能随时被覆盖掉,因为这条记录已经被提交了!
4、由于用户A的查询时间漫长,而业务在一直不断的进行,UNDOTS1回滚段在被多个不同的transaction使用着,这个回滚段里的extent循环到了第4000万行数据所在的extent,由于这条记录已经被标记提交了,所以这个extent是可以被其他transaction覆盖掉的!
5、到了1点45分,用户A的查询终于到了第4000万行,而这时已经出现了第4条说的
情况,需要到回滚段UNDOTS1去找数据,但是已经被覆盖掉了,于是就出现了ORA-01555错误。
解决办法:
1. 扩大回滚段,因为回滚段是循环使用的,如果回滚段足够大,那么那些被提交的数据就能保存足够长的时间,使那些大事务完成一致性读取。UNDO表空间设的足够大
2. 增加undo_retention时间,因为UNDO回滚段是循环使用,里面的数据可能随时被循环覆盖掉,如果设置undo_retention时间更长,那么在retention规定的时间内,任何其他事务都不能覆盖这些数据。
3. 最重要的一点就是优化程序相关查询语句,减少查询语句的一致性读,降低读取不到回滚段数据的风险。所有的出错信息都会纪录到数据库日志alert_PROD.log文件中,检查log文件找到相应的SQL词句,把这条语句提供给开发人员来分析和优化程序代码。比如把一个大的查询分解成几个小的查询等
更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6

转载于:https://blog.51cto.com/19880614/1168960

Oracle教程之管理UNDO(九)--如何解决Oracle ORA-01555错误相关推荐

  1. Oracle教程之管理表(六)--Oracle外部表的管理

    外部表是表结构被存放在数据字典,而表数据被存放在OS文件的表.通过使用外部表,不仅可以在数据库中查询OS文件的数据,还可以使用INSERT方式将OS文件数据装载到数据库中,从而实现SQL*Loader ...

  2. Oracle教程之管理索引(一)--Oracle管理索引

    1.索引的创建语法: CREATE UNIUQE | BITMAP INDEX <schema>.<index_name> ON <schema>.<tabl ...

  3. oracle簇和簇表的创建,Oracle教程之管理表(七)--Oracle分区表及簇表的建立

    1.分区表:(>2G)对大表进行优化   (Range Partitioning,List PartitioningHash Partitioning,Composite Partitionin ...

  4. oracle中如何修改索引,Oracle教程之管理索引(四)--Oracle修改索引

    1.修改索引段存储参数 03:31:28 SQL> alter index scott.indx_ename deallocate unused; Index altered. 03:31:36 ...

  5. oracle设置会计科目管理器,系列之四:ORACLE EBS基础设置要点简介(E) - season的日志 - 网易博客...

    ORACLE EBS 基础设置要点简介 九.结语 (注:网站批量发图有问题,上传后显示不清楚.点击图片打开后,质量尚可. 七.工作流 系统关于工作流的设置工作包含两部分工作,一是基于企业的特殊需要,使 ...

  6. oracle数据库path,利用Path环境变量解决oracle数据库和owb工具不兼容问题!

    利用Path环境变量解决oracle数据库和owb工具不兼容问题! 2009年5月4日 现象: 安装了oracle9i和owb10后往往会出现各自工具不能启动的现象,比如安装完oracle9i后再安装 ...

  7. oracle跨表空间报错ORA00942,解决oracle报错ora-00704 ora-00604 ora-00942 启动不了数据库...

    使用conn / as sysdba登录oracle,使用start mount出现此错误 SQL> conn / as sysdba Connected to an idle instance ...

  8. django oracle clob,记一次clob字段损坏导致的01555错误

    这个专题讲一些日常运维的异常处理 1. 现象 开发人员找说应用连接不上,报ORA-01555错误 2. 原因查找 2.1 查看undo使用率等情况 第一反应当然是查询是否undo表空间不足 通过如下命 ...

  9. oracle如果为0显示为1,解决Oracle的数值0.1只显示成.1问题

    Oracle对数值0.n转换成char类型的时候会自动忽略前面的0(原因好像是为了节省空间0.1保存到数据库为.1).例如: [sql] view plain copy 01.SQL> SELE ...

最新文章

  1. webpack 项目使用 html-webpack-plugin(3)
  2. Spring in Action 4 读书笔记之使用标签创建 AOP
  3. mysql数据库同步xtrab_热备份的实现方式
  4. Linux加固(转)
  5. 第二篇:Dos下运行java程序
  6. Hibernate Search v.4.2.0.CR1 发布
  7. Nutch1.2二次开发详细攻略(一)【图文】------Windows平台下Cygwin环境的搭建
  8. Flink 执行引擎:流批一体的融合之路
  9. 云南昭通暴雨强度公式_玉溪市中心城区暴雨强度公式(修订)
  10. Web基础配置篇(四): Mysql的配置及使用
  11. 书摘:别做正常的傻瓜
  12. C#进阶(一)——TXT文件处理:以导线网近似平差为例
  13. Unity3D的3D音效的实现
  14. 拆弹专家(密码BFS)
  15. JS中的attribute和property的区别和联系
  16. excel股票今日走势计算机,有没有可以在excel上自动显示股票实时数据的方法
  17. Java中 [I@4554617c 问题解决
  18. css背景图做水印,css给图片添加水印的方法
  19. Ubuntu 16.04 系统 gflags glog 安装
  20. opencv学习-011-图像像素归一化(normalize)

热门文章

  1. 华为双前置摄像头_vivo双摄像头为何前置?华为为何是后置?
  2. MySQL基础一些概念一些用法
  3. java 向下转型运行时错误_java多态和向下转型问题。
  4. java历史记录怎么写_我想知道像这样的历史记录查询界面,用java swing来做,应该怎么做?...
  5. centos mysql-dev_CentOS7 安装 mysql
  6. oracle离线文档查dbms_Oracle日志文件管理与查看
  7. linux nslookup 解析不到dns_网络工程师之nslookup命令
  8. datatable的数据进行组内排序_Spark实现分组Top-k排序的四种方案(scala语言)
  9. vbreport8.wpf.viewer 个别电脑不显示_【电脑手机小技巧】新买的电脑,第一次开机最好要这样设置...
  10. springmvc jsp java_java-jsp springmvc-controller 传值到页面的方法