网站首页 > 技术文章 正文
概述
因之前业务设计时很多接口都是在凌晨执行,所以凌晨undo都会急剧增加,而最近考虑到闪回问题,在增加undo_retention后接口报错快照过旧,这是什么问题呢?下面一起来看看吧~
报错内容
ORA-01555 快照过旧 回退段号 10 (名称为 _SYSSMU10_3452551959$ ) 过小 ORA-06512 在 RFUSER.SPLIT_OTM_OM_NEW , line 343 ORA-06512 在 line 1 ======= at System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) at System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor& rowidDescriptor, ArrayList& resultParameterOrdinals) at System.Data.OracleClient.OracleCommand.ExecuteNonQueryInternal(Boolean needRowid, OciRowidDescriptor& rowidDescriptor) at System.Data.OracleClient.OracleCommand.ExecuteNonQuery() at FSL.Business.SP_OtmShipmentDataInOut.RF_SQL_Handle_MoreThan.Start(Int32 ioID, String ConnectionName) in d \IT_SVN\SourceCode\RF系统\RF_ReConstruction\FSL.Business.SP_OtmShipmentDataInOut\RF_SQL_Handle_MoreThan.cs line 43
思路
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执行开始时间的先后次序。这种情况很少。
解决的办法:
针对第一种情况解决办法
(1)、增加UNDO表空间大小;
(2)、增加undo_retention时间,默认只有15分钟;
(3)、优化出错的SQL,减少查询的时间,首选方法;
(4)、避免频繁的提交
这里在增加undo表空间后问题得到解决。
后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~
猜你喜欢
- 2024-10-17 ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务
- 2024-10-17 mybatis中oracle模糊查询like concat报错
- 2024-10-17 如何高效进行Oracle巡检?顺序方法缺一不可
- 2024-10-17 Kettle 连接Oracle rac报ORA-12505错误解决方法
- 2024-10-17 centos7.4安装oracle11GR2报错解决办法
- 2024-10-17 centos安装oracle 11.2.0.1报错的处理方法
- 2024-10-17 详解Oracle数据库如何有效处理失效对象
- 2024-10-17 Oracle常见问题 IMPDP导入时报错:IMP-00034
- 2024-10-17 Java中常见的20个错误及解决方案 java: 错误: 不支持发行版本 6
- 2024-10-17 oracle数据恢复—Oracle数据库文件损坏,打开报错的数据恢复案例
你 发表评论:
欢迎- 586℃几个Oracle空值处理函数 oracle处理null值的函数
- 580℃Oracle分析函数之Lag和Lead()使用
- 567℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 564℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 560℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 553℃【数据统计分析】详解Oracle分组函数之CUBE
- 539℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 533℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端懒加载 (49)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)