C/C++教程

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;

 

这篇关于Oracle Temp undo 遇到的问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!