java.sql.SQLException: ORA01555: 快照过旧: 回退段号 4 过小

2023-11-06

首先了解Oracle在什么情况下会产生ORA-01555错误:

假设有一张6000万行数据的testdb表,预计testdb全表扫描1次需要2个小时,参考过程如下:

1、在1点钟,用户A发出了select * from testdb;此时不管将来testdb怎么变化,正确的结果应该是用户A会看到在1点钟这个时刻的内容。

2、在1点30分,用户B执行了update命令,更新了testdb表中的第4100万行的这条记录,这时,用户A的全表扫描还没有到达第4100万条。毫无疑问,这个时候,第4100万行的这条记录是被写入了回滚段,假设是回滚段UNDOTS1,如果用户A的全表扫描到达了第4100万行,是应该会正确的从回滚段UNDOTS1中读取出1点钟时刻的内容的。

3、这时,用户B将他刚才做的操作提交了,但是这时,系统仍然可以给用户A提供正确的数据,因为那第4100万行记录的内容仍然还在回滚段UNDOTS1里,系统可以根据SCN到回滚段里找到正确的数据,但要注意到,这时记录在UNDOTS1里的第4100万行记录已经发生了重大的改变:就是第4100万行在回滚段UNDOTS1里的数据有可能随时被覆盖掉,因为这条记录已经被提交了!

4、由于用户A的查询时间漫长,而业务在一直不断的进行,UNDOTS1回滚段在被多个不同的transaction使用着,这个回滚段里的extent循环到了第4100万行数据所在的extent,由于这条记录已经被标记提交了,所以这个extent是可以被其他transaction覆盖掉的!

5、到了1点45分,用户A的查询终于到了第4100万行,而这时已经出现了第4条说的情况,需要到回滚段UNDOTS1去找数据,但是已经被覆盖掉了,这时就出现了ORA-01555错误。

原因分析:”报表”程序执行时间漫长,在程序查询的过程中其他用户对”报表”进行了更新,被更新的数据写入了回滚段,当程序到回滚段找数据时,发现数据已经被覆盖掉,于是就出现了ORA-01555错误。另外”报表”程序执行效率不高也会造成ORA-01555错误。

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

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

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

(1)、增加UNDO表空间大小;

(2)、增加undo_retention时间,默认只有15分钟;
    修改undo保留时间为3小时。

    ALTER SYSTEM SET undo_retention=10800 SCOPE=BOTH; 
(3)、优化出错的SQL,减少查询的时间,首选方法;

(4)、避免频繁的提交。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.sql.SQLException: ORA01555: 快照过旧: 回退段号 4 过小 的相关文章

  • 一次完整的渗透测试流程,网站渗透存在哪些漏洞和隐藏的风险?

    渗透测试 渗透测试就是利用我们所掌握的渗透知识 对网站进行一步一步的渗透 发现其中存在的漏洞和隐藏的风险 然后撰写一篇测试报告 提供给我们的客户 客户根据我们撰写的测试报告 对网站进行漏洞修补 以防止黑客的入侵 渗透测试的前提是我们得经过用
  • LNK2005: _DllMain@12 already defined in LIBCMTD.lib(dllmain.obj)

    今天使用VS2003创建一个MFC 的dll工程时 出现以下错误 VPR error LNK2005 DllMain 12 already defined in LIBCMTD lib dllmain obj VPR error LNK20
  • 安全形势不容乐观 信息安全调查揭露五大误区

    日前 信息周刊 研究部和国际商业机器公司 IBM 合作进行了2008年 中国信息安全调查 这也是 信息周刊 以 11 年全球信息安全调查为基础 在中国开展的第四次安全调查 调查结果全面揭示了当前不容乐观的安全形势 对首席信息官 CIO 而言
  • Arthas 常用命令

    官方文档 Arthas Install Arthas 3 5 5 文档 安装 Arthas 是阿里开源的一款 linux mac 上性能问题排查工具 文档链接 Arthas 用户文档 Arthas 3 5 5 文档 这个里边具体步骤和指令讲
  • 数据链路层:ARP协议详解(绝对经典)

    ARP协议定义 地址解析协议 工作在数据链路层 在本层和硬件接口联系 同时向上层提供服务 IP数据包常通过以太网发送 以太网设备不识别32位IP地址 他们是以48位以太网地址传输以太网数据包的 因此需要IP转化为以太网目的地址 ARP协议用
  • Thread Pool 线程池

    Thread Pool 本文基于经典的99行代码 稍加修改使其支持C 20 并增加了wait与join功能 pragma once include

随机推荐

  • vue中使用drag事件左右拖动div,改变宽高大小

    实现思路 1 使用上左 top left 上 top 上右 top right 等6个小点实现拖动效果 2 拖动时记录起始点 结束点 startPoint x 0 y 0 开始坐标 拖动改变定位 endPoint x 0 y 0 结束坐标
  • 面试题 08.10. 颜色填充

    面试题 08 10 颜色填充 https leetcode cn com problems color fill lcci 难度简单12收藏分享切换为英文关注反馈 编写函数 实现许多图片编辑软件都支持的 颜色填充 功能 待填充的图像用二维数
  • Java多线程之间的通信

    重点 等待 gt 执行业务 gt 通知其他线程 package com liu pc 线程之间通讯问题 等待唤醒 通知唤醒 线程交替执行 A B操作同一个变量 A 1 B 1 public class A public static voi
  • virtual channels 虚拟通道——mipi协议

    1 虚拟通道ID字段 最多可以支持4个外设 2 需要 DSI Hub 无法将多个显示器连接到同一总线 3 或者某个显示设备支持使用虚拟通道 设备本身由多个物理驱动器控制显示面板的不同区域 这个显示器就可以使用虚拟通道将数据发送到各个驱动器
  • 【数据库原理及应用教程(第4版

    文章目录 一 选择题 二 填空题 三 设计题 四 简答题 Reference 一 选择题 1 2 3 4 5 6 7 8 9 10 B C C A C B C B D C 11 12 13 14 15 16 17 18 19 20 D B
  • bzoj1110 [POI2007]砝码Odw 贪心+进制拆分

    题意就不说了 一开始居然在想直接dp 看到是整数倍我的内心居然毫无波动 真是傻的不行了 因为是整数倍 那我们可以把一个容器用砝码的重量做为进制拆分 然后从小到大一个个填就可以了 贪心策略肯定是最优的 具体如何拆分看hzwer www htt
  • LSP和Hooks拦截

    分层服务提供者 英语 Layered Service Provider 缩写LSP 是一项已被弃用的Microsoft Windows中Winsock 2服务提供者接口 SPI 的特性 它也被称为分层服务提供商或分层服务提供程序 分层服务提
  • Mybatis-plus中操作JSON字段

    1 实体类上要加上自动映射 TableName value school autoResultMap true 2 json字段上加上json处理器 TableField value cover url typeHandler Jackso
  • 使用nmcli命令配置虚拟机网络

    简述 什么是nmcli Description nmcli is a command line tool for controlling NetworkManager and reporting network status It can
  • Mybatis 获取当前序列和下一个序列值 以及在一个方法中写多条SQL 语句

    目录 1 Mybatis 获取当前序列和下一个序列值 2 Mybatis 在一个方法中写多条SQL 语句 1 Mybatis 获取当前序列和下一个序列值 获取当前序列值 select XXX sequence currval from du
  • 电子信息工程毕设题目选题大全

    文章目录 1前言 2 如何选题 3 选题方向 3 1 嵌入式开发方向 3 2 物联网方向 3 3 移动通信方向 3 4 人工智能方向 3 5 算法研究方向 3 6 移动应用开发方向 3 7 网络通信方向 3 8 学长作品展示 4 最后 1前
  • Jetpack-Compose之一基础使用

    一 命令式UI和申明式UI 如果之前有了解或者使用果Flutter 应该会对命令式UI这种架构不陌生 目前申明式UI确实是很火包含Flutter SwiftUI JetpackCompose都使用了该种方式 2021年7月底 Google
  • mysql数据库容量规划_MySQL数据库服务器整体规划(方法论)

    我们在搭建MySQL数据库服务器的开始阶段就合理的规划 可以避免以后的很多问题的产生 大大节省我们的时间和精力 在一定幅度上降低成本 当然 这会涉及很多方面 比如机器的选型 业务评估和系统规划等 所有的设计都是跟具体的需求相关的 我们首先要
  • 什么是 DNS ANAME 解析?

    本人使用谷歌搜索了简中互联网 完全没有找到任何有关 ANAME 的文章 本文该不会是头一份吧 相信大家对于 DNS 的解析方式都不陌生 常见的有 A CNAME MX TXT 记录等等 其中 网站常用的是 A 记录和 CNAME 记录 A
  • [贪心入门]完美字符串

    约翰认为字符串的完美度等于它里面所有字母的完美度之和 每个字母的完美度可以由你来分配 不同字母的完美度不同 分别对应一个1 26之间的整数 约翰不在乎字母大小写 也就是说字母F和f 的完美度相同 给定一个字符串 输出它的最大可能的完美度 例
  • spyglass的waiver使用问题总结-工具(八)

    spyglass使用过程中waiver warning及error过程中总会出现生效不成功的问题 总结使用步骤供参考 实践出真知 解决问题就是好方法 1 在spyglass的prj中设置默认waiver文件 2 如何waiver 3 查看已
  • SpringBoot集成ZipKin实现链路跟踪

    SpringBoot集成ZipKin实现链路跟踪 1 我们要做什么 当我们的服务器成千上万 当我们的模块上万成千 当我们的调用链路复杂如蜘蛛网时 我们突然发现一个小小的性能问题却不能快速定位到点 千万不要以为自己是神 当年那个觉得ELK日志
  • stm32f10x中GPIOA理解(二)

    一 要理解固定库操作GPIOx的寄存器 首先固定库通过 void GPIO Init GPIO TypeDef GPIOx GPIO InitTypeDef GPIO InitStruct 函数来实现的 这函数 操作寄存器CRL和CRH 二
  • Qt 6: 1-9 信号和槽

    文章目录 概念 声明 手动关联 自动关联 断开关联 概念 作用 改变一个部件时 其他部件也能了解到 槽 一个函数 在信号发射后被调用 关系 信号和槽是一对多 多对一或者多对多关系 多个槽关联一个信号时 多个槽按关联顺序执行 拥有槽的累必须拥
  • java.sql.SQLException: ORA01555: 快照过旧: 回退段号 4 过小

    首先了解Oracle在什么情况下会产生ORA 01555错误 假设有一张6000万行数据的testdb表 预计testdb全表扫描1次需要2个小时 参考过程如下 1 在1点钟 用户A发出了select from testdb 此时不管将来t