我在我的应用程序中遇到了可重现的Oracle死锁。对代码的初步调查没有引起任何明显的原因,所以我想在记录正在运行的SQL时重新创建这种情况,最重要的是,它们发生在它们内部的事务。
我开始添加自己的调试语句,但这似乎是我重新发明轮子并且已经证明容易出错(我最初错过了我的一个EJB方法被定义为“RequiresNew”)
是否有工具可以做到这一点?我看了看:
log4jdbc,但从文档中我不清楚我已经看到它了 将记录单独的事务,加上它不支持 数据源,所以我需要解决这个问题。
jdbcslog - 也不清楚它是否会记录交易
或者我错过了一些更明显的方法来做到这一点?
答案 0 :(得分:0)
解决了类似的案例几次。很难(我称之为幸运)在会话日志记录中找到复杂应用程序中的解决方案。 (甲骨文杀死其中一个会话。一个被杀,另一个幸福地生活)
最佳解决方案是询问您的DBA(或者如果您可以访问您的oracle安装,您可以谷歌,然后自己获取它们,这不是很复杂)的跟踪文件(除了被杀死的会话,这个文件被提及,所以搜索你的警报日志),会有死锁图。 (只是DEADLOCK的全文跟踪文件)
请在此处查看有关如何查看跟踪文件的确切信息。 LINK