r - 在 Oracle 服务器上使用具有 IP 地址且没有 DSN 的新 odbc 包

标签 r oracle odbc

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

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

然而,这与 DSN 条目中的 IP、驱动程序和服务 ID 完全相同,但没有(IP x'ed out for privacy):
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。
  • 我尝试在 tnsnames.ora 和 listener.ora 中用路由器的 IP(我的客户端系统代码指向的)和服务器的本地 IP 替换我的服务器名称。我想我已经尝试了那里的每一种组合,每次都停止和启动整个服务器,并在启动后等待一分钟。实际上,对于这些组合中的大多数,DSN 连接会失败并显示 listener does not currently know of service requested in connect descriptor。 .同时,非 DNS 连接因我的好 friend “协议(protocol)适配器错误”而失败。
  • 我尝试在我的客户端上使用服务器的本地 IP,而我的客户端在同一个 LAN 中,并且在 .ora 文件中使用该本地 IP。同样的错误。简单的 IP ping 工作。

  • 也许出于某种原因,通过数据源管理器添加的 DSN 是硬性要求?在这一点上,如果有人使用此软件包成功连接到任何(Oracle)服务器但不使用客户端 DSN 条目,那就太好了。

    最佳答案

    我遇到了同样的问题,我尝试了所有相同的事情。我终于通过更改 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

    关于r - 在 Oracle 服务器上使用具有 IP 地址且没有 DSN 的新 odbc 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52191720/

    相关文章:

    oracle - 在 Oracle 18c 中,合成 TABLE 类型显示在 ALL_COLL_TYPES 中,但 OBJECT 类型不会显示在 ALL_TYPES 中

    vb.net - 使用 odbc excel 驱动程序转换数据类型

    sql - 如何使用SQL脚本将数据从DBF导入到SQL?

    Rstudio 加载工作区失败

    sql - 使用列值的排列

    r - 在列表中查找重复项,包括排列

    oracle - 有没有办法在指定提交计数时执行 INSERT INTO SELECT 语句?

    mysql - VB 导出访问 Mysql 货币格式失败

    r - 不匹配列中的整个文本以供引用

    r - 执行一系列 R 脚本的最佳实践是什么