无法使用 12c jar 为 Oracle 12c 创建 Eclipse 数据源。但是 11g 有效
Posted
技术标签:
【中文标题】无法使用 12c jar 为 Oracle 12c 创建 Eclipse 数据源。但是 11g 有效【英文标题】:Unable to create Eclipse Data Source to Oracle 12c using 12c jar. However 11g works 【发布时间】:2015-06-08 19:30:58 【问题描述】:当我打开数据源资源管理器窗口并尝试创建新的连接配置文件时,我选择“Oracle”,即 Oracle Thin Driver,然后将其指向我 PC 上的以下 JAR 文件:
C:\oracle_12101_64bit\product\12101_64bit\CLIENT_1\jdbc\lib\ojdbc7.jar
提供连接参数后,它使用以下格式派生一个连接 url
jdbc:oracle:thin:@host:PORT:SID
但是,我希望它派生的是这个(注意冒号而不是正斜杠)
jdbc:oracle:thin:@host:PORT/SID
我似乎可以使用生成的 url 连接到 11g 数据库,但是,不是 12c,我不知道这是巧合还是我有其他问题。
在我的程序中,我使用 JPA,它以所需的正斜杠格式从我的配置文件中读取连接 url,如果我将 url 更改为使用冒号,则程序能够连接并且连接失败。
如果我无法控制派生的连接 url 以生成带有斜杠而不是冒号的 url,如何在 Eclipse 的数据源资源管理器视图中创建连接配置文件?我得到的错误是:
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 与 SERVICE NAMES。有没有我可以对数据库执行的查询来告诉我 SID?
【问题讨论】:
/
格式使用服务名称,而不是 SID。也许它在 11g 中有效,因为在该数据库中它们是相同的,但在您的 12c 实例中是不同的。或者您有一个定义 SID 的 11g listener.ora,而您的 12c 没有。 Eclipse 是否让您有机会指定是提供 SID 还是服务名称?
@Alex:谢谢。请参阅原帖中 UPDATE 2 下的文字。
另外,我没有 listener.ora 文件,也从未更新过,不知道它是干什么用的。
listener.ora 位于服务器端,而不是您的客户端。如果 SID 未列在十个中,您将无法使用它进行连接。如果您找不到指定服务名称的方法,也许可以询问您的 DBA SID 是什么以及它是否已注册。我不确定为什么对话框不允许您为此驱动程序类型设置选择。
【参考方案1】:
您还可以从“其他驱动程序”模板创建配置文件,在 Add Jars 部分添加 ojdbc7.jar。
现在,您可以自己指定 URL 字符串和其他参数,模板不会为您自动填充任何内容。这样您就可以在服务名称前面加上“/”。
【讨论】:
【参考方案2】:这似乎是 Eclipse 'Oracle Thin Driver' 模板的限制。它只允许您为连接指定 SID,而不是服务名称;或者您不知道 SID,或者它没有向侦听器注册(您的 DBA 需要解决)。
如果您从“Oracle 数据库 11g 驱动程序”模板而不是“Oracle 瘦驱动程序”模板创建一个新驱动程序,并将其指向您的 12c ojdbc7.jar 文件,那么您将能够选择提供一个而是服务名称。然后会生成一个类似jdbc:oracle:thin:@//servername.sys.MYCO.com:2/afdedev.MYCO.com
的 URL。
仍然是同一个瘦驱动程序,Eclipse 似乎更好地理解它,
【讨论】:
以上是关于无法使用 12c jar 为 Oracle 12c 创建 Eclipse 数据源。但是 11g 有效的主要内容,如果未能解决你的问题,请参考以下文章