使用带有IP地址的新odbc软件包,不使用带有Oracle服务器的DSN

问题描述 投票:2回答:1

我可以在Windows中使用odbc包,只要我为我的Oracle服务器添加一个DSN,但我无法让它工作。也就是说,在添加一个名为“DummyDB”的DSN条目后,它只包含一个IP地址和服务ID(当然除了驱动程序之外),这有效:

conn <- dbConnect(odbc(), 
                  DSN = "DummyDB",
                  UID = credentials$login,
                  PWD = credentials$pw,
                  Port = 1521)

然而,与DSN条目中完全相同的IP,驱动程序和服务ID不会(IP x出于隐私):

conn <- dbConnect(odbc(), 
                  Driver = "Oracle in IC",
                  Host = "xx.xxx.xx.xxx",
                  SVC = "XE",
                  UID = credentials$login,
                  PWD = credentials$pw,
                  Port = 1521)

这也不起作用:

conn <- dbConnect(odbc(), .connection_string = "Driver={Oracle in IC};Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=xx.xxx.xx.xxx)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=xe)));Uid=xxx;Pwd=xxx;")

当然,我已经尝试过各种方式调整所有这些。无论如何,我总是神秘的:

nanodbc/nanodbc.cpp:950: HY000: [Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error

强制性细节:

  • 我正在使用我的路由器软件的VPN和端口转发,这些必须配置得足以让DSN连接成功,指向路由器的WAN IP。
  • 我已尝试用我的路由器的IP(我的客户端系统代码指向的)替换我的服务器名称,并使用我的服务器的本地IP替换我的tnsnames.ora和my listener.ora。我想我已经尝试了每一个组合,每次都停止并启动整个服务器,并在启动后等待一分钟。实际上,对于大多数这些组合,DSN连接失败了listener does not currently know of service requested in connect descriptor。同时,我的好友“协议适配器错误”导致非DNS连接失败。
  • 我尝试在我的客户端上使用服务器的本地IP,而我的客户端在同一个LAN中,并且在.ora文件中使用本地IP。同样的错误。简单的IP ping工作。

也许由于某些原因,通过数据源管理员添加的DSN是一个很难的要求?此时,如果有人成功连接到任何(Oracle)服务器并使用此程序包但未使用客户端DSN条目,则会很高兴。

r oracle odbc
1个回答
3
投票

我有一个相同的问题,我尝试了所有相同的事情。我最终通过将Host参数更改为DBQ并在其中添加端口和服务名称来解决它:

vdw = DBI::dbConnect(odbc::odbc(), 
                     Driver= "My Oracle in Dir", # e.g. "Oracle in OraClient12Home1"
                     DBQ = "my-host-name.domain.org:1521/my-service-name",
                     Schema = "my_schema",
                     UID="my_userid",
                     PWD="my_password)

希望有所帮助!这花了我太长时间才弄明白......答案就在这里:RODBC connectivity to Oracle without tnsnames.ora

© www.soinside.com 2019 - 2024. All rights reserved.