数据库
首页 > 数据库> > Oracle Temp undo 遇到的问题

Oracle Temp undo 遇到的问题

作者:互联网

参考

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

 

1、描述

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;

 

标签:12c,Temp,临时,Undo,undo,EBS,Oracle
来源: https://www.cnblogs.com/jmjun/p/15785602.html