Oracle数据库警报opiodr中止进程ORA-609

时间:2014-02-20 17:45:39

标签: java oracle connection-pooling c3p0

我正在运行批处理java应用程序。应用程序在我的Production和UAT环境中每10/20分钟运行一次,我得到如下数据库警报:

2014年2月6日星期四15:15:08 opiodr中止过程未知ospid(28246400)由于ORA-609

在互联网上研究了一下之后,对这些警报的建议修正是将INBOUND_CONNECT_TIMEOUT更改为:

Sqlnet.ora: SQLNET.INBOUND_CONNECT_TIMEOUT=180
Listener.ora: INBOUND_CONNECT_TIMEOUT_listener_name=120

我们已更改数据库服务器端的设置,但不知道客户端应用程序中的更改位置。我们使用c3p0创建连接池,我们只设置这些参数:

dataSource.setAcquireRetryDelay(30000); 
dataSource.setMaxPoolSize(50);
dataSource.setMinPoolSize(20);
dataSource.setInitialPoolSize(10);

我们有其他Web服务在与批处理应用程序相同的服务器上运行,并且它们使用Tomcat的DBCP池,它们似乎不会创建任何警报。同样奇怪的是,我们的批处理应用程序不会在较低的测试环境中生成警报。它们偶尔会发生,但UAT和PROD环境会根据时间表非常频繁地收到这些警报。有什么建议在c3p0池中设置哪些配置,或者我应该尝试更改为另一个池API,如DBCP?

更新:我在数据源中添加了一些参数,警报频率也降低了。我添加了以下内容,警报数量从每小时15小时降至每小时4小时。

dataSource.setLoginTimeout(120);
dataSource.setAcquireRetryAttempts(10);
dataSource.setCheckoutTimeout(60000);

1 个答案:

答案 0 :(得分:1)

我转移到DBCP连接池,它似乎解决了这个问题。我尝试更改上面提到的一些c3p0设置但没有改变。警报减少但没有完全消失。所以我们决定尝试DBCP。我正在使用DBCP中的所有默认值,但池大小除外。我正在使用tomcat的lib文件夹(tomcat-dbcp.jar)中提供的tomcat版本的DBCP。