Java 数据库连接重置是因为Oracle数据库中的参数?
我在oracle DB工作,在Java方面没有太多经验。我试图了解一个重复出现的异常以及如何避免它 有一个每月一次的作业,它调用java程序,该java程序与Oracle DB交互。每个月,该程序都会因对等端的异常连接重置而中断。关于Java程序,我所知道的只是它有20个线程,它点击DB来获取/插入数据 我将数据从prod复制到测试环境,并运行相同的过程。没有问题 Prod和Dev中的配置是否可能不同 我检查了两种环境中的空闲时间和连接时间,它们被设置为无限制 我检查了open_游标限制,它们在prod和testenv中是相同的 在较低的环境中,我将open_游标从10k减少到5k,然后得到了最大open_游标异常。 我发现与数据库的连接很少没有正确关闭。我们在代码中修复了这个问题,并在测试环境中成功运行了它,open_游标为5K 我想知道 我是否应该检查使其在测试环境中运行的配置/参数? 放弃连接会导致对等异常重置连接吗? testenv使用最少,prod DB被许多作业使用。这有区别吗?Java 数据库连接重置是因为Oracle数据库中的参数?,java,oracle,exception,database-connection,Java,Oracle,Exception,Database Connection,我在oracle DB工作,在Java方面没有太多经验。我试图了解一个重复出现的异常以及如何避免它 有一个每月一次的作业,它调用java程序,该java程序与Oracle DB交互。每个月,该程序都会因对等端的异常连接重置而中断。关于Java程序,我所知道的只是它有20个线程,它点击DB来获取/插入数据 我将数据从prod复制到测试环境,并运行相同的过程。没有问题 Prod和Dev中的配置是否可能不同 我检查了两种环境中的空闲时间和连接时间,它们被设置为无限制 我检查了open_游标限制,它们在
当应用程序建立了数据库连接,但没有任何事务发生活动时,就会发生这种情况。 因为您的db操作间隔是每月一次。 如果您使用的是c3p0连接池,它具有在后台运行测试查询的功能。这将从池中删除放弃的db连接
如果您正在使用其他连接池,那么它将具有此类功能。或者对于hack,您可以编写一个轮询线程,在MySQL的情况下,该线程将在配置的时间间隔9小时内执行随机db操作。因此,数据库连接将始终处于活动状态。谢谢您的回复。因此,从你的帖子中,我了解到更多的是空闲时间——它是否取决于DB配置?因为我在其他方面没有看到这个例外environments@Valli连接时间在db和db配置级别都可用。两者应根据空闲情况时间间隔同步。