我正在尝试使用Oracle JDBC瘦驱动程序(ojdbc6.jar for 11.2.0.2.0)和以下JDBC URL语法连接到Oracle(11.2.0.2.0)数据库:
jdbc:oracle:thin:@abcd
其中'abcd'在我的tnsnames.ora文件中定义,如下所示:
abcd, abcd.world, abcd.dk.xyz.com =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = abcd)
)
)
我已根据Oracle® Database JDBC Developer's Guide and Reference提供了VM选项-Doracle.net.tns_admin=/etc/tnsnames.ora
。
运行应用程序时出现以下错误:
Listener refused the connection with the following error:
ORA-12504, TNS:listener was not given the SID in CONNECT_DATA
但是当我从tnsnames.ora中删除别名abcd.world和abcd.dk.xyz.com时,我的应用程序能够连接到数据库。
当tnsnames.ora文件中有多个别名时,ojdbc驱动程序是否存在问题?
我的JDK版本是1.6.0_31。
谢谢, VJ
答案 0 :(得分:3)
看起来,Oracle JDBC驱动程序无法使用多个服务名称。 使用这些条目
abcd =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = abcd)
)
)
abcd.world, abcd.dk.xyz.com =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = abcd.dk.xyz.com)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = abcd)
)
)
答案 1 :(得分:0)
我可以通过以下方式通过tnsnames.ora成功连接到oracle
使用此命令测试飞路
flyway -configFile = flyway.conf info
我收到此输出
Boxfuse的Flyway 4.0.3
数据库:jdbc:oracle:thin:@ PSR.LAB_CERT(Oracle 11.2)
+ --------- + ------------- + --------------------- + --------- +
|版本|说明|安装在|州|
+ --------- + ------------- + --------------------- + --------- +
|没有发现迁移|
+ --------- + ------------- + --------------------- + --------- +
答案 2 :(得分:-1)
理想情况下,您不应通过TNS连接,因为您需要在计算机上安装oracle客户端。
如果您使用如下连接URL,则不需要oracle客户端:
jdbc:oracle:thin:@//host:port/service_name