【问题标题】:Jitterbit - "ORA-12504, TNS:listener was not given the SID in CONNECT_DATA"Jitterbit - “ORA-12504, TNS:listener 在 CONNECT_DATA 中没有提供 SID”
【发布时间】:2015-07-14 16:40:25
【问题描述】:

问题:

我们正在尝试使用 Jitterbit 从客户的 Lawson (Oracle) 数据库中对 Salesforce 进行更新插入。我们在默认端口上使用 Oracle [JDBC] 驱动程序。我们在客户端网络内的一台机器上运行 Windows Server 2008 上的 Jitterbit 代理,客户端向我们保证(但不是 100% 确定)服务器可以连接到 Lawson 数据库。当我们尝试从 Jitterbit Studio 中启动到 Oracle 数据库的连接时(Studio 不是从 Windows Server 运行,我们是从本地计算机运行它),我们被拒绝:

Listener refused the connection with the following error:
ORA-12504, TNS:listener was not given the SID in CONNECT_DATA

我希望有人能提供帮助的问题是 - 听众缺少 SID 到底是为了什么?我基本熟悉 listener.ora 以及需要如何为侦听器提供 SID 信息以允许传入数据库连接。

错误中的SID是指:

  • 劳森数据库? (这似乎不太可能,因为我的理解是这里提到的侦听器是位于 Lawson 数据库服务器上的侦听器)
  • 代理所在的机器(Windows Server 2008)?
  • 还是我们运行 Jitterbit Studio 的本地计算机?

我正在等待从客户端获取 listener.ora 和 tnsnames.ora,我只是想看看是否有人根据自己的经验了解根块。

堆栈跟踪,以防有帮助:

Details: oracle.net.ns.NetException - Listener refused the connection with the following error:
ORA-12504, TNS:listener was not given the SID in CONNECT_DATA

    at org.jitterbit.integration.client.ui.interchange.locatable.actions.TestConnectionResultDisplayer.showResult(TestConnectionResultDisplayer.java:62)
    at org.jitterbit.integration.client.ui.interchange.locatable.actions.TestConnectionJob.runImpl(TestConnectionJob.java:55)
    at org.jitterbit.application.ui.job.UiJob$2.run(UiJob.java:509)
    at org.jitterbit.application.worker.DefaultApplicationWorker$RunnableWrapper.run(DefaultApplicationWorker.java:105)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)

提供连接参数的屏幕截图:

tnsnames.ora:

PSILSFD1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.33.22.224)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = PSILSFD1)
    )
  )

listener.ora:

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = psidevdba01)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

【问题讨论】:

  • 您如何从 Jitterbit Studio 连接到 Oracle - 连接字符串或参数是如何配置的?您是否使用了 TNS 别名,如果是,在本地计算机上的 tnsnames.ora 中是如何定义的?您认为您使用的是 SID 还是服务名称?
  • @AlexPoole 我从未明确定义过连接字符串,在 UI 中有一个表单,您可以在其中提供驱动程序、服务器名称和身份验证凭据,因此我假设它会根据驱动程序生成一些兼容的连接字符串我们选择。我正在使用该表单的屏幕截图以及两个配置 Oracle 文件来更新帖子。我不熟悉 TNS 别名是什么 :(

标签: database oracle jitterbit


【解决方案1】:

Jitterbit support pages 包括:

使用 Oracle JDBC 驱动程序配置源或目标
- 创建一个新源并为其命名。
- 从类型下拉列表中,选择数据库。
- 单击选择...并找到 Oracle 驱动程序。确保选中 JDBC 复选框。如果您最近安装了驱动程序,则可能需要刷新驱动程序列表。
- 根据 Oracle 服务器的配置方式,您可能只需要输入服务器名称、登录名和密码(如果服务器在非标准端口上运行,则输入端口)。 但是,在大多数情况下,您必须手动构建连接字符串,请参见下文。
...

添加了重点。您似乎已按照这些说明进行操作,但由于无法提供服务名称,您需要进行手动设置:

要使用手动连接字符串,请展开选项部分并选中“手动构造连接字符串”。输入连接字符串并测试转换。

根据您的 tnsnames.ora 中的内容,连接字符串将是:

jdbc:oracle:thin:@//10.33.22.224:1521/PSILSFD1

【讨论】:

  • 工作就像一个魅力。非常感谢您抽出宝贵时间帮助 Alex!
猜你喜欢
  • 2015-06-21
  • 1970-01-01
  • 2020-01-16
  • 2014-10-25
  • 1970-01-01
  • 2014-06-06
  • 2015-03-01
  • 2013-02-10
  • 2019-04-02
相关资源
最近更新 更多