gpt4 book ai didi

r - 使用 RODBC 连接到 Oracle 数据库时遇到问题

转载 作者:搜寻专家 更新时间:2023-10-30 23:26:15 26 4
gpt4 key购买 nike

我最近从 Windows 7 升级到 Windows 10,不得不重置一些远程数据库连接。我以前使用 Oracle 11g 客户端和 RODBC 非常成功地连接到 Oracle 数据库。

    library(RODBC)
channel<-
odbcConnect(dsn="myoracleDB",
uid='myusername',
pw='mypassword',
believeNRows=FALSE)
result<- sqlQuery(channel,"select * from schema_name.table_name")
close(channel)

自 Windows 10 升级后,上述连接协议(protocol)不再有效。具体来说,我收到以下错误:

    channel<- 
odbcConnect(dsn="myoracleDB",
uid='myusername',
pw='mypassword',
believeNRows=FALSE)
Warning messages:
1: In RODBC::odbcDriverConnect("DSN=myoracleDB;UID=myusername;
PWD=mypassword",:
[RODBC] ERROR: state HY000, code 12170, message [Oracle][ODBC]
[Ora]ORA-12170: TNS:Connect timeout occurred
2: In RODBC::odbcDriverConnect("DSN=myoracleDB;UID=myusername;
PWD=mypassword",:ODBC connection failed

另外两个观察结果与此相关:

  1. 我使用 Windows 命令行执行 tnsping myoracleDB,它返回到数据库的成功连接

  2. 我还可以使用 Oracle 的 SQL Developer 应用程序成功连接到数据库并从中查询。

因此我确信 Oracle 客户端和 ODBC 数据源设置正确。

有趣的是,如果我使用以下代码,我可以使用 RODBC 库连接到我的数据库:

    mycon = odbcDriverConnect("Driver={Oracle in OraClient11g_home1}; 
Dbq=myoracleDB; Uid=myusername; Pwd=mypassword;",
believeNRows=FALSE)

我对社区的问题是:

  1. 这个新的连接协议(protocol)有效(对此我很高兴)。但是,由于我真的不明白为什么以前有效的方法不再有效时它会起作用,我担心我可能会忽略一些潜在的问题,这些问题可能会在未来真正伤害到我。

我发现以下 SO 线程很有帮助,但它们都没有真正准确地解决我的问题:

Failure to connect to odbc database in R

Connect to ORACLE via R, using the info in sql developer

更新:我访问了 Windows ODBC 64 位菜单并验证我确实有一个名为“myoracleDB”的 DSN,它被分配给“Oracle in OraClient11g_home1”驱动程序。我测试了这个连接,发现它工作正常。我还使用了 RODBC 行:

    odbcDataSources()

在RStudio中,发现数据源“myoracleDB”被识别。但是,当我尝试执行时:

    channel<- 
odbcConnect(dsn="myoracleDB",
uid='myusername',
pw='mypassword',
believeNRows=FALSE)

我仍然得到错误:

“TNS:发生连接超时 ODBC 连接失败”

最佳答案

如果你check out the docsDSN=myoracleDB 告诉 RODBC 连接到 Windows DSN“myoracleDB”,而 Dbq=myoracleDB 告诉 RODBC 连接到 TNSNAMES 条目“myoracleDB”。它们是解析数据库名称的两种不同方式。 tnsping 和 SQL Developer 也都使用 TNSNAMES 来解析数据库。

所以我认为您的 DSN 可能在您重置时被删除了。您可以通过转到控制面板 > 管理工具 > 数据源 (ODBC) 来测试它。如果您的数据库在那里,您应该能够对其进行配置并单击测试连接以确保其正常工作。否则,您可以将其添加到此处,您的原始配置应该再次起作用。

关于r - 使用 RODBC 连接到 Oracle 数据库时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com