无法使用 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 有效的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 odbc 驱动程序安装 oracle 12c

如何使用odbc驱动程序安装oracle 12c

Oracle 12c 无法识别 JSON 类型

Hibernate 3.3.0 与 Oracle 12c 的兼容性

使用 OBIEE 12C 的 Oracle 地图

关于Oracle 12C pdb用户无法登录的问题