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

时间:2015-10-22 05:51:50

标签: java oracle jdbc 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,这两个异常消失了,但是又出现了一个新例外 - 生成了异常。

我的jdk版本是1.7

2 个答案:

答案 0 :(得分:0)

您可以使用:

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

    URL = JDBC:预言:瘦:@ //扫描主机名:端口/服务名

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

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

答案 1 :(得分:0)

最后,让它运作起来。发布其他人要引用的属性。我用了odbc7.jar。

<?xml version="1.0" encoding="UTF-8"?><entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns:snx="http://www.ibm.com/xmlns/prod/sn" xmlns:thr="http://purl.org/syndication/thread/1.0">
   <id>urn:lsid:ibm.com:calendar:event:0eff8fdf-4e5c-48be-be9b-ff700b274576</id>
   <snx:eventInstUuid>0eff8fdf-4e5c-48be-be9b-ff700b274576</snx:eventInstUuid>
   <title type="text">Test event</title>
   <snx:location>Event location</snx:location>
   <snx:startDate>2015-10-22T14:00:00.000+03</snx:startDate>
   <snx:endDate>2015-10-22T15:00:00.000+03</snx:endDate>
   <snx:allday>0</snx:allday>
   <category scheme="http://www.ibm.com/xmlns/prod/sn/type" term="event-instance"/>
   <content type="html">Event description</content>
</entry>

即更改了url和驱动程序类。希望这会有所帮助。