R12: AP: Create Accounting Concurrent Program is Failing with ORA-01555: Snapshot Too Old (Doc ID 2742619.1)
https://blog.csdn.net/cpongo3/article/details/88798102
SR
Oracle 从12c开始,引入了临时undo的特性,在 Oracle 12c 之前,临时表生成的 Undo 记录是存储在 Undo 表空间 和 Redo 日志文件中 的,
通用表和持久表的 undo 记录也是 存储在 Undo 表空间中的,从 Oracle 12c 开始 ,临时 Undo 记录可以存储在 临时表空间中,且不再记录到 Redo 日志文件中,
这样做的主要好处在于: 减少 Undo 表空间 的使用 , 且 减少了 Redo 数据的生成 。可以在会话级别或者数据库级别来启用临时 Undo 选项。
相关的数据库参数是temp_undo_enabled,默认值为true,此特性虽然带来了一些好处,但是目前从使用体验来看,还存在一些问题。
在2个EBS项目中都遇到了此参数引起的问题。
XXX EBS项目:
环境:Redhat7.9 + EBS R12.2.9 + OracleDB 19.11
使用过程中,遇到了数据库莫名崩溃的事件,提SR确认为是开启临时UNDO引起的问题,关闭之后,问题不再发生。
XXX EBS项目:
环境:Redhat6.9 + EBS R12.2.10 + OracleDB 19.11
使用过程中,未遇到数据库崩溃问题,遇到请求报错的问题,增加undo表空间,和增加undo_retention参数都不起作用:
create accounting 请求报错 ORA-01555: snapshot too old: rollback segment number 18 with name "$TEMPUNDOSEG" too small
参考文档 Doc ID 2742619.1 ,也是开启临时undo引发的问题,关闭之后,请求正常运行。
关闭临时UNDO
alter system set temp_undo_enabled =False scope=both;