【问题标题】:JDBC: How to connect to a RAC database from Jdbc with details in properties file?JDBC:如何使用属性文件中的详细信息从 Jdbc 连接到 RAC 数据库?
【发布时间】:2015-10-22 05:51:49
【问题描述】:

我正在尝试使用属性文件中的连接字符串通过 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 个异常消失了,但又出现了一个新异常——生成了 SO Exception。

我的jdk版本是1.7

【问题讨论】:

  • 您不需要在属性文件中转义:。另外,您在jdbc 之后缺少一个。试试jdbc:oracle:thin:@(...
  • 是的,很抱歉,我使用的是 jdbc/:oracle,在这里粘贴时出错了
  • 您是否尝试删除反斜杠?我觉得没必要
  • 试过了,同样的例外:/
  • 请将您的解决方案作为答案发布并接受它,以便将问题从“未决问题队列”中删除。

标签: java oracle jdbc properties-file


【解决方案1】:

你可以使用:

  • 扫描侦听器 DNS 名称:(扫描主机名使用 DNS 负载平衡,因此您会为一个主机名获得多个 A 记录)

    url=jdbc:oracle:thin:@//scan-hostname:port/servicename

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

  • 第三个选项是使用引号和反斜杠,直到它开始工作。我觉得这个jdbc\oracle应该改写成jdbc:oracle或者jdbc\:oracle

【讨论】:

  • 我应该在我的项目中创建 tnsnames.ora 文件吗?
【解决方案2】:

终于搞定了。发布属性供其他人参考。我用的是 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 和驱动程序类。希望这会有所帮助。

【讨论】:

  • 如果您使用的是 Java7,则不应使用过时的 odbc14.jar(用于 Java 1.4),而应使用 ojdbc7.jar。另外:您的驱动程序版本似乎适用于 Oracle 10。您真的是这样过时的版本吗?
  • 我尝试使用 odbc7.jar 但它给出了 SO 异常,我发现这意味着 java 和 jdbc 版本是可兼容的。所以,尝试改变它,它工作。将使用 odbc7.jar 重试并发布结果。
  • 也可以使用 odbc7.jar。所以唯一的变化是 url 和驱动程序类
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 2016-12-26
  • 2015-01-28
  • 1970-01-01
  • 2020-11-16
相关资源
最近更新 更多