【问题标题】:Connect to Oracle DB instance using R使用 R 连接到 Oracle 数据库实例
【发布时间】:2021-07-22 17:11:36
【问题描述】:

我尝试使用 Rstudio 连接到 Oracle 数据库,但我不知道该怎么做。我已经用 PowerBi 连接到数据库,所以我知道它可以访问(从我的 pc/ip)并且数据库工作正常,但是使用 R 我无法完成此操作。在问这个问题之前,我已经在网上搜索了几天,我对 R 或 SQL 并不陌生,但我对 Oracle 很熟悉。我尝试了各种软件包(DBI、odbc、RODBC 等),但仍然没有成功。 我已与数据库管理员交谈,他们说我应该能够使用提供给我的以下信息进行连接;

服务器:xxx.xxx.xx.xx

端口:xxxx

实例:ORCL

用户:我的用户名

密码:我的密码

当我使用 PowerBI 连接到数据库时,我的服务器名称是:server/instance,结合 uid 和 pwd 连接可以正常工作。

我(想我)得到的最接近的是使用“odbcDriverConnect()”函数。 首先我运行以下命令来检查安装了哪些驱动程序;

sort(unique(odbcListDrivers()[[1]]))

作为输出给出

"Oracle in OraClient12Home1" "Oracle in OraClient12Home2" "SQL Server"

stackoverflow 上的其他主题,建议以下站点检查函数中使用哪个字符串:

https://www.connectionstrings.com/oracle/

我找不到我列出的驱动程序的特定驱动程序,但我为 OraClient11g_home1 中的 Oracle 更改了一个,因为它似乎是最佳匹配,该字符串如下; p>

Driver={Oracle in OraClient11g_home1};Server=serverSID;Uid=myUsername;密码=我的密码;

所以我用我的驱动程序替换了OraClient11g_home1中的Oracle,他们都给出了另一个错误;

con <- odbcDriverConnect("Driver={Oracle in OraClient12Home1};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;")


Warning messages:
1: In odbcDriverConnect("Driver={Oracle in OraClient12Home1};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;") :
  [RODBC] ERROR: state IM003, code 160, message Het opgegeven stuurprogramma kan niet worden geladen vanwege een systeemfout  126: Kan opgegeven module niet vinden. (Oracle in OraClient12Home1, C:\Program Files\Oracle\product\12.2.0\client_1\SQORA32.DLL).
2: In odbcDriverConnect("Driver={Oracle in OraClient12Home1};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;") :
  ODBC connection failed

错误是荷兰语,说明由于systemerror 126找不到驱动程序

下一个驱动程序给出另一个错误;

con <- odbcDriverConnect("Driver={Oracle in OraClient12Home2};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;")

Warning messages:
1: In odbcDriverConnect("Driver={Oracle in OraClient12Home2};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;") :
  [RODBC] ERROR: state HY000, code 12560, message [Oracle][ODBC][Ora]ORA-12560: TNS:protocol adapter error
2: In odbcDriverConnect("Driver={Oracle in OraClient12Home2};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;") :
  ODBC connection failed

最后一个驱动程序,是唯一需要几秒钟的驱动程序,表明它实际上正在尝试连接,但最终也给出了一个(其他)错误;

con <- odbcDriverConnect("Driver={SQL Server};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;")

Warning messages:
1: In odbcDriverConnect("Driver={SQL Server};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;") :
  [RODBC] ERROR: state 08001, code 17, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]De SQL-server bestaat niet of de toegang tot de server is geweigerd.
2: In odbcDriverConnect("Driver={SQL Server};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;") :
  [RODBC] ERROR: state 01000, code 53, message [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).
3: In odbcDriverConnect("Driver={SQL Server};Server=xxx.xxx.xx.xx/orcl;Uid=xxx;Pwd=xxx;") :

声明服务器不存在或访问被拒绝。再一次,我知道它存在并且我被授予访问权限,因为它可以在 powerBi 上运行,所以我现在有点迷失了。我已经尝试了带有和不带有 /orcl 的服务器。如果有人对我遗漏的内容有任何线索,将不胜感激!

亲切的问候

【问题讨论】:

  • 您的环境是什么?。您是否安装了 64 位 Oracle ODBC 驱动程序?
  • 是的,Windows 和 R 都以 64 位运行。刚刚有人在这里评论,他的答案被删除了,我不知道为什么,但我认为他给了我解决方案。我试过了; odbcDriverConnect("Driver={Oracle in OraClient12Home2};Dbq= myServerIP:myPort/orcl;Uid=myUsername;Pwd=myPassword;") 我现在没有错误,并且在值为 'RODBC int 1 的环境中看到了 'con' 的值' 仍然不确定如何前进,但似乎(我认为)我已经建立了联系
  • 是的,那是我。我删除了那个答案,因为我不确定您的环境。您是否成功连接了消息?当您看到该消息复制并粘贴到控制台时,它将显示您的架构在数据库中
  • 我没有收到该消息,只有我之前评论中描述的环境中的一个对象,当我在控制台中复制对象(con)时,我得到了这个,不确定它是什么,我期望的表名称不同,但它们可能是基础或其他东西(?) RODBC 连接 1 详细信息:case=nochange DRIVER={Oracle in OraClient12Home2} SERVER=xxx.xxx.xx.xx:1521/orcl UID=*** PWD =****** DBQ=xxx.xxx.xx.xx:1521/orcl DBA=W APA=T EXC=F XSM=默认 FEN=T QTO=T FRC=10 FDL=10 LOB=T RST=T BTD=F BNF=F BAM=IfAllSuccessful NUM=NLS DPM=F
  • 这个列表还有很多,这里的字符太多了

标签: r oracle odbc


【解决方案1】:

使用即时客户端和服务器的 IP 地址

con <- odbcDriverConnect("Driver={Oracle in OraClient12Home2};Dbq=server_ipaddress:1521/orcl;Uid=xxx;Pwd=xxx;")

或者如果你能 ping 通服务器

 con <- odbcDriverConnect("Driver={Oracle in OraClient12Home2};Dbq=server:1521/orcl;Uid=xxx;Pwd=xxx;")

其他选项,如果您在即时客户端主页中有 tnsnames.ora 并设置 tns_admin 变量,您可以在 tnsnames.ora 文件中使用服务名称

con <- odbcDriverConnect("Driver={Oracle in OraClient12Home2};Dbq=orcl;Uid=xxx;Pwd=xxx;")

P.S:-我从来没有在 R 上工作过,只是下载了 R 和 R studio

【讨论】:

  • 谢谢你真的让我很开心,在“连接”部分建立它之后,我得到了我需要的一切:)
  • 不客气,我正要发布另一个连接选项卡的屏幕截图。很高兴它最终成功了。
猜你喜欢
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 2012-04-11
  • 2011-11-12
  • 2017-04-06
相关资源
最近更新 更多