一、引言:

[oracle@yft yft]$ oerr ora 01555
01555, 00000, "snapshot too old: rollback segment number %s with name \"%s\" too small" // *Cause: rollback records needed by a reader for consistent read are // overwritten by other writers // *Action: If in Automatic Undo Management mode, increase undo_retention // setting. Otherwise, use larger rollback segments

ORA-01555 快照过旧,是数据库中很常见的一个错误,比如当我们的事务需要使用undo来构建CR块的时候,而此时对应的undo已经不存在了,这个时候就会报ORA-01555的错误。
    ORA-01555错误在Oracle 8i及之前的版本最多。从9i开始的undo自动管理,至现在的10g、11g中的undo auto tuning,使得ORA-01555的错误越来越少。但是这个错误,仍然不可避免。

二、出现ORA-01555错误,通常有2中情况:

(1)、SQL语句执行时间太长,或者undo表空间过小,或者事务量过大,或者过于频繁的提交,导致执行SQL过程中进行一致性读时,SQL执行后修改的前镜像(既UNDO数据)在UNDO表空间中已经被覆盖,不能构造一致性读块(CR blocks)。这种情况最多。

(2)、SQL语句执行过程中,访问到的块,在进行延迟块清除时,不能确定该块的事务提交时间与SQL执行开始时间的先后次序。这种情况很少。

三、模拟ORA-01555场景:

 1 SQL> create table jack (id int,name varchar2(10));  2  3 Table created.  4  5 SQL> insert into jack values(1,'a');  6  7 1 row created.  8  9 SQL> insert into jack values(2,'b'); 10 11 1 row created. 12 13 SQL> commit; 14 15 Commit complete. 16 17 SQL> show parameter undo 18 19 NAME TYPE VALUE 20 -------------------- ----------- -------------- 21 undo_management string AUTO 22 undo_retention integer 900 23 undo_tablespace string UNDO2 24 SQL> create undo tablespace undo1 datafile '/u01/app/oracle/oradata/yft/undo01.dbf' size 1m; 25 26 Tablespace created. 27 28 SQL> alter system set undo_retention=1; 29 30 System altered. 31 32 SQL> var x refcursor 33 SQL> begin 34 2 open :x for select * from jack; 35 3 end; 36 4 / 37 38 PL/SQL procedure successfully completed. 39 40 SQL> begin 41 2 for i in 1 .. 20000 loop 42 3 update jack set id=id+1; 43 4 commit; 44 5 end loop; 45 6 end; 46 7 / 47 48 PL/SQL procedure successfully completed. 49 50 SQL> print :x 51 ERROR: 52 ORA-01555: snapshot too old: rollback segment number 17 with name 53 "_SYSSMU17_2039231318$" too small 54 55 56 57 no rows selected

四、第1种情况解决的办法:
    (1)、增加UNDO表空间大小;

(2)、增加undo_retention时间,默认只有15分钟;

(3)、优化出错的SQL,减少查询的时间,首选方法;

(4)、避免频繁的提交。

转载于:https://www.cnblogs.com/lcword/p/6004939.html

Oracle ORA-01555(快照过旧)相关推荐

  1. Oracle数据库 ORA-01555 快照过旧 (undo表空间:撤销表空间)

    UNDO表空间用于存放UNDO数据,当执行DML操作时,oracle会将这些操作的旧数据写入到UNDO段,以保证可以回滚或者一致读等,而临时表空间主要用来做查询和存放一些缓冲区数据.你听说UNDO也是 ...

  2. oracle 删除旧数据,Oracle 删除海量数据下避免Ora-01555快照过旧错误的执行脚本

    1.将某大表的数据保留周期减少至90天内,但因此表数据量十分庞大,故此使用该方法处理,提高删除数据的性能以及避免Ora-01555快照过旧的问题 DECLARE CNT NUMBER(10):=0; ...

  3. Oracle加索引的时候快照过久,【Oracle 11g】ORA-01555: snapshot too old(快照过旧)错误

    这个错误会导致:接收到这个错误的查询无法继续处理. 引起这个错误的原因有3个: undo段太小,不足以在系统上执行工作. 你的程序跨COMMIT获取(实际上这是前一点的一个变体). 块清除. 适当地设 ...

  4. oracle 快照过旧:回退段号,ORA-01555: 快照过旧: 回退段号 39 (名称为 _SYSSMU39_3029844184$) 过小...

    Error: WMS_STOCK源 无法处理这些数据.ORA-01555:快照过旧:回退段号39 (名称为"_SYSSMU39_3029844184$")过小 DG上DB的aler ...

  5. ORACLE ORA错误码大全 (备忘)

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出 ...

  6. Oracle ORA

    ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 OR ...

  7. Oracle学习笔记 --- Oracle ORA错误解决方案

    今天在Debug的时候报错了如下信息: 后来综合了网上的东西,总结如下: ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常. ORA-000 ...

  8. oracle全库快照,Oracle数据库快照的使用

    正在看的ORACLE教程是:Oracle数据库快照的使用.oracle数据库的快照是一个表,它包含有对一个本地或远程数据库上一个或多个表或视图的查询的结果.正因为快照是一个主表的查询子集,使用快照可以 ...

  9. Oracle Ora 错误解决方案合集

    Oracle Ora 错误解决方案合集 参考文章: (1)Oracle Ora 错误解决方案合集 (2)https://www.cnblogs.com/ios9/p/8627643.html 备忘一下 ...

  10. oracle快照太旧含义,全解ORA-1555快照太旧错误原理及解决方案

    作者: |[转载时请以超链接形式标明文章和信息] 链接: 回滚机制的深入研究: 如果大家有兴趣深入了解一下回滚段的机制,那么请跟随我将前面的例子进一步深化. 1. 从DML更新事务开始: 重新来看这个 ...

最新文章

  1. Web请求响应简单整理
  2. python中计算1到_如何在Python中计算-1 /(-343)^(1/3)为1/7?
  3. IROS 2017上,这些厂商将会给我们展示什么样的黑科技?
  4. 华南理工网络计算机基础知识,2019年华南理工大学网络教育计算机基础随堂练习题第一章.docx...
  5. $Android连续按返回键两次实现退出程序
  6. 从Tom说JSP原理
  7. Srping MVC入门推荐
  8. HTML5大气外贸鞋子在线商城网站源码
  9. 理解typedef(转)
  10. 追加docker已运行容器添加或修改端口映射方法
  11. 学会这4个表达「万能公式」,下次向领导汇报时不再语无伦次
  12. 使用alias简化命令输入
  13. 数字表达_英语数字表达方法大全,内含数字/分数/时间/序数词/日期/小数等
  14. tomcat的url-pattern的源码分析
  15. android 文件md5校验失败怎么办,更新包md5校验失败的4个原因和解决方法!游戏lol更新md5验证失败...
  16. iPhone6和iPhone6 Plus和iPhone5s屏幕尺寸,分辨率,密度 对比
  17. linux cp指令报错:cp: -r not specified; cp: omitting directory ‘xxx‘(需要加-r递归拷贝)
  18. 期货什么情况下会强制平仓
  19. 02 SVN 与 Git 的优缺点
  20. 如何让绩效管理公平公正的进行

热门文章

  1. Markdown语言调整图片居中、大小
  2. java 获取mac地址_java入门知识点和环境准备
  3. Cause: java.sql.SQLException: Connection is read-only. Queries leading to data使用MySQL的时候遇到的问题,后续继续解决
  4. oracle删除redo 未重启,恢复误删数据文件(数据库未重启,无备份)
  5. 8.4完成服务(Completion Services)
  6. [渝粤教育] 广东-国家-开放大学 21秋期末考试市场营销10256k2
  7. 【渝粤教育】国家开放大学2018年秋季 0169-22T工程制图基础 参考试题
  8. 思科接入层交换机故障
  9. 【转】关于DLL的一点介绍
  10. vs code安装使用ESLint,typescript