微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oracle – 什么可以导致间歇性的ORA-12519(TNS:没有找到适当的处理程序)错误

我们在Oracle 10数据库(使用Hudson作为持续集成服务器)前面,针对Weblogic 9运行Junit 4测试套件,有时候我们会在脚本拆卸期间遇到ORA-12519崩溃。但是,错误是非常间歇的:

>它通常发生在相同的Test类
>它不总是发生在相同的测试用例(有时它们通过)
>它不会发生相同数量的测试用例(从3-9任何地方)
>有时它不会发生,一切都通过

虽然我不能保证这不会发生在本地(当运行对同一个数据库,当然),我已经运行同一套的类多次没有问题。

有任何想法吗?

不知道这是否会是每个人的答案,但在一些挖掘之后,这是我们想出的。

错误明显是由于事实,监听器不接受连接,但为什么我们会得到那个错误,当其他测试可以连接好(我们也可以通过sqlplus连接没有问题)?问题的关键不是我们不能连接,而是间歇性

经过一番调查,我们发现在类安装过程中创建了一些静态数据,这将在测试类的生命周期保持开放连接,创建新的连接。现在,即使所有的资源正确地释放,当这个类超出范围(通过一个finally {}块,当然),在运行时,有一些情况下,这个类将吞下所有可用的连接(好,坏练习警报 – 这是单元测试代码,直接连接,而不是使用池,所以同样的问题不会发生在生产)。

修复是不让类静态并在类设置中运行,而是在每个方法的setUp和tearDown方法中使用它。

所以如果你在你自己的应用程序中收到这个错误,在那个坏男孩上拍一个分析器,看看你是否可能有连接泄漏。希望有帮助。

原文地址:https://www.jb51.cc/oracle/206778.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐