Java JDBC:如何从JDBC连接到RAC数据库,详细信息在属性文件中?
我正在尝试使用属性文件中的连接字符串通过JDBC连接到RAC数据库Java JDBC:如何从JDBC连接到RAC数据库,详细信息在属性文件中?,java,oracle,jdbc,properties-file,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=(PRO
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
这是属性文件
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您可以使用:
- 扫描侦听器DNS名称:(扫描主机名使用DNS负载平衡,因此您可以为一个主机名获得多个A记录) url=jdbc:oracle:thin:@//扫描主机名:port/servicename
- 另一种选择是使用tnsnames.ora文件。如上所述。然后,您可以让DBA维护这个文件,让他们在这个文件中进行更改
- 第三种选择是使用引号和反斜杠,直到它开始工作。我认为这个
应该重写为jdbc\oracle
或jdbc:oracle
jdbc\:oracle
- 扫描侦听器DNS名称:(扫描主机名使用DNS负载平衡,因此您可以为一个主机名获得多个A记录) url=jdbc:oracle:thin:@//扫描主机名:port/servicename
- 另一种选择是使用tnsnames.ora文件。如上所述。然后,您可以让DBA维护这个文件,让他们在这个文件中进行更改
- 第三种选择是使用引号和反斜杠,直到它开始工作。我认为这个
应该重写为jdbc\oracle
或jdbc:oracle
jdbc\:oracle
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
i、 e更改了url和驱动程序类。希望这有帮助。最后,它开始工作了。发布属性以供其他人参考。我使用了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
i、 e更改了url和驱动程序类。希望这有帮助。您不需要在属性文件中转义
:
。另外,在jdbc
之后缺少一个。请尝试jdbc:oracle:thin:@(…
是的,很抱歉,我使用的是jdbc/:oracle,粘贴时出错了吗?请尝试删除反斜杠?我认为没有必要尝试,相同的例外情况:/请将您的解决方案作为答案发布并接受它,以便将问题从“开放式问题队列”中删除。您不需要在属性文件中转义:
。另外,在jdbc
之后缺少一个。请尝试jdbc:oracle:thin:@(…
是的,对此很抱歉,我使用的是jdbc/:oracle,粘贴时出错了吗?您是否尝试删除反斜杠?我认为没有必要尝试,相同的例外情况:/请将您的解决方案作为答案发布并接受它,以便将问题从“开放式问题队列”中删除。我应该在我的项目中创建tnsnames.ora文件吗?我应该在我的项目中创建tnsnames.ora文件吗?如果您使用的是Java7,则不应该使用过时的odbc14.jar
(该文件适用于Java 1.4)但是,ojdbc7.jar
相反。另外:您的驱动程序版本似乎是针对Oracle 10的。您真的是这样一个过时的版本吗?我尝试使用odbc7.jar,但它出现了异常,我发现这意味着java和jdbc版本是可兼容的。因此,尝试更改它后,它工作了。将使用odbc7.jar重试并发布结果。工作正常吗因此,只有url和驱动程序类发生了变化。如果您使用的是Java7,则不应使用过时的odbc14.jar
(适用于Java1.4)但是,ojdbc7.jar
相反。另外:您的驱动程序版本似乎是针对Oracle 10的。您真的是这样一个过时的版本吗?我尝试使用odbc7.jar,但它出现了异常,我发现这意味着java和jdbc版本是可兼容的。因此,尝试更改它后,它工作了。将使用odbc7.jar重试并发布结果。工作正常吗所以唯一的变化是url和驱动程序类