我在我的应用程序中遇到了可重现的 Oracle 死锁。对代码的初步调查没有发现任何明显的原因,所以我想在记录正在运行的 SQL 以及最重要的是它们正在发生的事务时重新创建这种情况。
我开始添加我自己的调试语句,但这似乎是我在重新发明轮子并且已经证明容易出错(我最初错过了我的一个 EJB 方法被定义为“RequiresNew”)
是否有工具可以做到这一点?我看过:
log4jdbc,但从我看到的文档中不清楚 将记录单独的事务,而且它不支持 数据源,所以我需要解决这个问题。
jdbcslog - 也不清楚它是否会记录事务
还是我错过了一些更明显的方法来做到这一点?
最佳答案
解决了几次类似的情况。仅从您的 session 日志记录中很难(我称之为幸运)在复杂的应用程序中找到解决方案。 (Oracle 杀死其中一个 session 。一个被杀死,另一个快乐地活着)
最好的解决方案是询问您的 DBA(或者如果您有权访问您的 oracle 安装,您可以谷歌然后自己获取它们,这并不复杂)以获取跟踪文件(该文件在终止 session 的异常(exception)情况下被提及,所以搜索您的警报日志),将会出现死锁图。 (只是死锁的全文跟踪文件)
只需在此处查看有关如何查看跟踪文件的确切信息。 LINK
关于java - 如何监控多线程 EJB2 JBoss 应用程序中的数据库事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12638966/