当我打开Data Source Explorer窗口并尝试创建新的连接配置文件时,我选择“Oracle”,Oracle Thin Driver,然后将其指向我PC上的以下JAR文件:
C:\oracle_12101_64bit\product\12101_64bit\CLIENT_1\jdbc\lib\ojdbc7.jar
提供连接参数后,它使用
以下列格式派生连接URLjdbc:oracle:thin:@host:PORT:SID
但是,我想要它得出的是(注意冒号而不是正斜杠)
jdbc:oracle:thin:@host:PORT/SID
我似乎能够使用生成的url连接到11g数据库,但是,不是12c,我不知道这是巧合还是我有不同的问题。
在我的程序中,我使用JPA,它以所需的正斜杠格式从我的配置文件中读取连接URL,如果我更改url使用冒号,则程序能够连接并且连接失败。
如果我无法控制派生连接url生成带斜杠而不是冒号的url,如何在Eclipse的Data Source Explorer视图中创建连接配置文件?我得到的错误是:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
更新1
我注意到的一件事是,即使我将Oracle 12c附带的jdbc7.jar文件关联起来,驱动程序仍然显示为“Oracle 11”。
更新2:
以下是我的tnsnames.ora文件中的内容示例:
AFDEDEV.MYCO.COM =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = servername.sys.MYCO.com)(PORT = 2))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = afdedev.MYCO.com)
)
)
看起来连接字符串构建器只需要一个SID。我的SID是什么,或者我怎么知道?我试过了AFDEDEV和AFDEDEV.MYCO.COM。在11g确实有效的情况下,我使用了相当于AFDEDEV的东西。对不起,我真的不太了解SID与服务名称。是否有我可以对数据库执行的查询告诉我SID?
答案 0 :(得分:5)
这似乎是对Eclipse' Oracle Thin Driver'的限制。模板。它只允许您为连接指定SID,而不是服务名称;并且您要么不知道SID,要么没有向听众注册(您的DBA需要解决)。
如果您使用“Oracle数据库11g驱动程序”创建新驱动程序'模板,而不是“Oracle Thin Driver'模板,并将其指向您的12c ojdbc7.jar文件,然后您将能够选择提供服务名称。然后,它会生成一个类似jdbc:oracle:thin:@//servername.sys.MYCO.com:2/afdedev.MYCO.com
的网址。
它仍然是同样的瘦驱动程序,Eclipse似乎更好地理解它,
答案 1 :(得分:0)
您还可以通过“其他驱动程序”创建个人资料。模板,在Add Jars部分添加ojdbc7.jar。
现在,您可以自己指定URL字符串和其他参数,模板不会自动为您填充任何内容。这样,您就可以使用前面的' /'。
提供服务名称