【发布时间】: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
-
这个列表还有很多,这里的字符太多了