【发布时间】:2021-02-08 11:22:00
【问题描述】:
我在连接oracle DB时遇到以下错误,我正在使用spring boot JDBC模板连接数据库。错误如下,
Exception in thread "main" java.lang.Exception: java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
at com.falabella.util.OracleDB.main(OracleDB.java:70)
Caused by: java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:392)
Caused by: java.net.UnknownHostException: NODE-01: nodename nor servname provided, or not known
以下是我的发现,我的数据库服务器主机拥有集群并且它有两个节点,如下所示,
Cluster (wood.clsuter.com)
| NODE01 (wood-01)
| NODE02 (wood-02)
我的连接字符串是这样的,jdbc:oracle:thin:@wood-clsuter.com:1531/service_name
当我在连接字符串中使用集群名称时,我遇到了以下错误
Caused by: java.net.UnknownHostException: wood-01: nodename nor servname provided, or not known
而如果我在连接字符串中使用任何节点名称,则能够毫无问题地连接数据库,工作连接字符串如下所示,
jdbc:oracle:thin:@wood-01.com:1531/service_name 或
jdbc:oracle:thin:@wood-02.com:1531/service_name
由于我需要使用我的数据库请求作为负载平衡,我需要使用集群名称而不是从节点,
我想知道这个问题的根本原因,这种生产环境问题,
你能帮我解决这个问题吗?
【问题讨论】:
标签: java oracle spring-boot jdbctemplate