我可以得到 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
强制性细节:
listener does not currently know of service requested in connect descriptor
。 .同时,非 DNS 连接因我的好 friend “协议(protocol)适配器错误”而失败。 也许出于某种原因,通过数据源管理器添加的 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/