Java Spring MVC/Oracle/Tomcat上的ORA-02067错误
我的Spring MVC/Oracle 11G/Tomcat 7应用程序随机抛出以下错误:“ORA-02067:需要事务或保存点回滚” 一旦出现该错误,通过Tomcat使用相同连接的数据库的所有后续操作都将失败,并抛出ORA-02067错误 例如:Java Spring MVC/Oracle/Tomcat上的ORA-02067错误,java,spring,oracle,transactions,tomcat7,Java,Spring,Oracle,Transactions,Tomcat7,我的Spring MVC/Oracle 11G/Tomcat 7应用程序随机抛出以下错误:“ORA-02067:需要事务或保存点回滚” 一旦出现该错误,通过Tomcat使用相同连接的数据库的所有后续操作都将失败,并抛出ORA-02067错误 例如: "detailErrorInfo": "CallableStatementCallback; uncategorized SQLException for SQL [{call SCHEMAX.[PACKAGEX].PROCEDUREX()}];
"detailErrorInfo": "CallableStatementCallback;
uncategorized SQLException for SQL
[{call SCHEMAX.[PACKAGEX].PROCEDUREX()}]; SQL state [60000];
error code [604];
ORA-00604: error occurred at recursive SQL level 1
ORA-02067: transaction or savepoint rollback required;
nested exception is java.sql.SQLException:
ORA-00604: error occurred at recursive SQL level 1
ORA-02067: transaction or savepoint rollback required",
奇怪的是,如果我从其他连接或应用程序调用同一个Oracle包/过程,它就会工作
该错误仅在管理员重新启动Tomcat时在Spring应用程序上停止
我的理论是,有一个事务正在失败,并且没有进行回滚。因为Tomcat使用的是JDBC连接池,所以错误仍然存在于应用程序上
我无法在开发环境中重现这一点
Oracle是否提供工具来查明交易的罪魁祸首?是否有任何视图显示挂起回滚的事务
谢谢您能分享一下程序代码吗?包含
SCHEMAX.[PACKAGEX].PROCEDUREX()
任何数据库链接调用?您的理论是正确的。因为您使用的是Spring,所以可以使用p6spy包装您的数据源并查找PLSQL调用。您还应该将PLSQL生产代码编译到您的开发环境中,可能编译的过程不同。您可以共享过程代码吗?包含SCHEMAX.[PACKAGEX].PROCEDUREX()
任何数据库链接调用?您的理论是正确的。因为您使用的是Spring,所以可以使用p6spy包装您的数据源并查找PLSQL调用。您还应该将PLSQL生产代码编译到您的开发环境中,可能编译过程有所不同。