使用 R 连接到 Oracle 数据库实例
Connect to Oracle DB instance using R
我尝试使用 Rstudio 连接到 oracle 数据库,但我不知道该怎么做。我已经使用 PowerBi 连接到数据库,所以我知道它可以访问(从我的 pc/ip)并且数据库工作正常,但是使用 RI 我无法完成此操作。在问这个问题之前,我已经在网上搜索了好几天,我不是 R 或 SQL 的新手,但我是 Oracle 的新手。我尝试了各种包(DBI、odbc、RODBC 等),但仍然没有成功。
我已经和数据库的管理员谈过,他们说我应该能够使用提供给我的以下信息进行连接;
服务器:xxx.xxx.xx.xx
端口:xxxx
实例:ORCL
用户:我的用户名
密码:我的密码
当我使用 PowerBI 连接到数据库时,我的服务器名称是:server/instance,结合 uid 和 pwd,连接工作正常。
我(认为我)最接近的是使用 'odbcDriverConnect()' 函数。
首先,我 运行 以下命令检查安装了哪些 driver;
sort(unique(odbcListDrivers()[[1]]))
输出为
"Oracle in OraClient12Home1" "Oracle in OraClient12Home2" "SQL Server"
此处关于 Whosebug 的其他主题,建议访问以下站点以检查函数中使用的字符串:
https://www.connectionstrings.com/oracle/
我无法为我列出的 driver 找到一个特定的,但我为 OraClient11g_home1 中的 Oracle 更改了一个,因为它似乎为最佳匹配,此字符串如下;
Driver={Oracle OraClient11g_home1};Server=serverSID;Uid=myUsername;密码=我的密码;
所以我用我的driver替换了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.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
错误是荷兰语,指出由于系统错误 126
无法找到 driver
下一个driver给出另一个错误;
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
最后一个 driver,是唯一一个需要几秒钟的时间,表明它实际上正在尝试连接,但最终也给出了(其他)错误;
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;") :
说明服务器不存在或访问被拒绝。再一次,我知道它存在并且我是 g运行ted 访问因为它在 powerBi 上工作,所以我现在有点迷路了。我已经尝试过使用和不使用 /orcl 的服务器。如果有人知道我遗漏了什么,将不胜感激!
亲切的问候
使用即时客户端和服务器的 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
我尝试使用 Rstudio 连接到 oracle 数据库,但我不知道该怎么做。我已经使用 PowerBi 连接到数据库,所以我知道它可以访问(从我的 pc/ip)并且数据库工作正常,但是使用 RI 我无法完成此操作。在问这个问题之前,我已经在网上搜索了好几天,我不是 R 或 SQL 的新手,但我是 Oracle 的新手。我尝试了各种包(DBI、odbc、RODBC 等),但仍然没有成功。 我已经和数据库的管理员谈过,他们说我应该能够使用提供给我的以下信息进行连接;
服务器:xxx.xxx.xx.xx
端口:xxxx
实例:ORCL
用户:我的用户名
密码:我的密码
当我使用 PowerBI 连接到数据库时,我的服务器名称是:server/instance,结合 uid 和 pwd,连接工作正常。
我(认为我)最接近的是使用 'odbcDriverConnect()' 函数。 首先,我 运行 以下命令检查安装了哪些 driver;
sort(unique(odbcListDrivers()[[1]]))
输出为
"Oracle in OraClient12Home1" "Oracle in OraClient12Home2" "SQL Server"
此处关于 Whosebug 的其他主题,建议访问以下站点以检查函数中使用的字符串:
https://www.connectionstrings.com/oracle/
我无法为我列出的 driver 找到一个特定的,但我为 OraClient11g_home1 中的 Oracle 更改了一个,因为它似乎为最佳匹配,此字符串如下;
Driver={Oracle OraClient11g_home1};Server=serverSID;Uid=myUsername;密码=我的密码;
所以我用我的driver替换了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.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
错误是荷兰语,指出由于系统错误 126
无法找到 driver下一个driver给出另一个错误;
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
最后一个 driver,是唯一一个需要几秒钟的时间,表明它实际上正在尝试连接,但最终也给出了(其他)错误;
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;") :
说明服务器不存在或访问被拒绝。再一次,我知道它存在并且我是 g运行ted 访问因为它在 powerBi 上工作,所以我现在有点迷路了。我已经尝试过使用和不使用 /orcl 的服务器。如果有人知道我遗漏了什么,将不胜感激!
亲切的问候
使用即时客户端和服务器的 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