JDBC:如何使用属性文件中的详细信息从 Jdbc 连接到 RAC 数据库?

JDBC: How to connect to a RAC database from Jdbc with details in properties file?

我正在尝试使用属性文件中的连接字符串通过 JDBC 连接到 RAC 数据库。

这是属性文件。

datasource-url=jdbc\:oracle\:thin\:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=ON)(FAILOVER=ON)(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.ee)(PORT=21521))(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.dd)(PORT=21521))(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.cc)(PORT=21521))(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.bb)(PORT=21521)))(CONNECT_DATA=SERVICE_NAME=ssss)(SERVER=DEDICATED)))
datasource-username=xxxx
datasource-password=yyyy
driver-class=oracle.jdbc.driver.OracleDriver

我正在从创建连接的 java 代码中读取此属性文件。不幸的是,我遇到了这两个异常。

SQLException-Invalid connection string format, a valid format is: "host:port:sid"
SQLException-NL Exception 

这里有什么问题?提前致谢。

编辑 1:我正在使用 odbc14.jar ,所以我想到了使用其他 jar。我使用了 odbc7.jar,这 2 个异常消失了,但得到了一个新的异常——因此生成了异常。

我的jdk版本是1.7

您可以使用:

  • 扫描侦听器DNS名称:(扫描主机名使用DNS负载均衡,所以你得到一个主机名的多个A记录)

    url=jdbc:oracle:thin:@//扫描主机名:port/servicename

  • 另一种选择是使用 tnsnames.ora 文件。如上所述 here。然后,您可以让 DBA 维护此文件,让他们在此文件中进行更改。

  • 第三个选项是使用引号和反斜杠,直到它开始工作。我认为这个 jdbc\oracle 应该重写为 jdbc:oraclejdbc\:oracle.

终于,成功了。发布属性供其他人参考。我用了 odbc7.jar .

datasource-url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.bb)(PORT=21521))(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.cc)(PORT=21521))(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.dd)(PORT=21521))(ADDRESS=(PROTOCOL=TCP)(HOST=171.17.aa.ee)(PORT=21521)))(LOAD_BALANCE=yes)(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=zzzz)))
datasource-username=xxx
datasource-password=yyy
driver-class=oracle.jdbc.OracleDriver

即更改 url 和驱动程序 class。希望这有帮助。