Oracle数据库服务器不可访问时,jdbc调用长时间超时

问题描述 投票:0回答:1

我正在为连接到7个不同国家/地区特定oracle数据库的spring-boot服务构建自定义健康检查。我想构建它们,以便可以使用spring-boot-admin监视服务。问题是,例如,当服务器不可用时,例如,它关闭或防火墙配置不正确,超时将花费很长时间,一分钟。然后,Spring-boot-admin将服务器标记为不可访问而不是关闭。

据我所知,正在发生的事情是套接字从未连接,最终连接又超时了。在运行状况检查中,我尝试配置网络超时,但是似乎没有任何区别。我们正在使用

https://docs.oracle.com/en/database/oracle/oracle-database/18/jjuar/oracle/ucp/jdbc/PoolDataSourceImpl.html

和ojdbc7

运行状况检查使用为主池定义的数据源bean,但是如果为时已晚,无法设置网络超时,我不确定是否已经创建了该池。对我来说,问题在于文档实际上不清楚哪些属性有效。

我已经厌倦了这些,但是他们似乎什么也没做

查看这些链接

Setting Network Timeout for JDBC connection

JDBC getConnection timeout issue

PreparedStatement won't ever timeout even if explicitly set

这提供了有关超时类型的更多详细信息。

https://www.programering.com/a/MDNzIjMwATY.html

所以我的问题是,一个人应该如何真正设置一个Oracle池来应对网络/套接字,事务,池和语句超时?

oracle spring-jdbc ojdbc health-monitoring ucp
1个回答
0
投票

推荐的连接URL如下所示。另外,请参考UCPTimeouts.java以检出超时相关的属性。

 (DESCRIPTION =
         (CONNECT_TIMEOUT=90)  (RETRY_COUNT=20)(RETRY_DELAY=3) (TRANSPORT_CONNECT_TIMEOUT=3) 
           (ADDRESS_LIST =
            (LOAD_BALANCE=on)
            ( ADDRESS = (PROTOCOL = TCP)(HOST=primary-scan)(PORT=1521)))
            (ADDRESS_LIST =
             (LOAD_BALANCE=on)
            ( ADDRESS = (PROTOCOL = TCP)(HOST=secondary-scan)(PORT=1521)))
           (CONNECT_DATA=(SERVICE_NAME = gold-cloud)))
© www.soinside.com 2019 - 2024. All rights reserved.