我正在使用Java经验不足的oracle DB。 AM试图了解异常(重复发生)以及如何避免这种情况
有一个每月工作,它调用java程序,并且该Java程序与Oracle DB进行交互。每个月该程序都会中断,并出现“对等连接重置”异常。我对Java程序的了解仅是它有20个线程,它会命中数据库以获取/插入数据。
我将数据从产品复制到测试环境,并运行相同的过程。没有问题。
Prod和Dev中的配置是否可能不同?
我在生产环境和测试环境中检查了open_cursor限制,它们是相同的。
在较低的环境中,我将open_cursor从10k减少到5k,然后得到了最大的open_cursor异常。 我发现几乎没有建立与数据库的连接。我们已在代码中对其进行了修复,并在测试环境(open_cursor为5K)中成功运行了该代码。
我想知道,
答案 0 :(得分:1)
当应用程序建立数据库连接但没有任何事务发生时,会发生这种情况。 由于您的数据库操作间隔是每月一次。 如果使用的是c3p0连接池,则它具有在background.background中运行测试查询的功能,该功能可从池中删除废弃的数据库连接。
如果您正在使用其他连接池,它将具有这种功能。或者,对于黑客,您可以编写一个轮询线程,该线程将在配置的时间间隔(在MySQL情况下为9小时)内执行随机的db操作。因此,数据库连接将始终处于活动状态。