ROracle 的使用在 .oci.fetch(res, as.integer(n)) 中产生错误:ORA-01805:

Usage of ROracle generates Error in .oci.fetch(res, as.integer(n)) : ORA-01805:

我使用 ROracle 来增强从 Oracle 到 R 的数据读取。 PC 和 OS 规格:i5、8Gb、Win7 64 位、Oracle 12c(客户端 64 位)、R(64 位,3.2.2)、Rstudio

当前代码:

>install.packages('ROracle_1.1-12.zip', repos = NULL)
>library('ROracle')
>drv <- dbDriver("Oracle")
>con <- dbConnect(drv, "USER", "PASSWORD", dbname='DB')
>x<-dbSendQuery(con, "SELECT * FROM MY_TABLE")
>y<-fetch(x)

但是出现了一些错误:

Error in .oci.fetch(res, as.integer(n)) : ORA-01805: ....

重点是错误不是永久性的。有时会出现,有时不会出现,脚本是 运行 好的。 我将非常感谢您对这种情况的帮助。

可能你有不同的 TZ (server\client) 试试

dbGetQuery(con,"SELECT SESSIONTIMEZONE,DBTIMEZONE FROM dual")

SESSIONTIMEZONE DBTIMEZONE

1 +03:00 +04:00

如果您有不同的值,请更改 TZ

dbSendQuery(con,"ALTER SESSION SET TIME_ZONE = '+4:0'")
dbCommit(conn = con)

dbGetQuery(con,"SELECT SESSIONTIMEZONE,DBTIMEZONE FROM dual")

SESSIONTIMEZONE DBTIMEZONE

1 +04:00 +04:00

说不定能帮到你

在数据库管理员的帮助下,我通过将 oracle 客户端重新安装到相同 64 位当前服务器的最新版本解决了这个问题。并设置最新版本的ROracle包(如何安装ROracle详见gist.github.com/jgilfillan/7b0281067ed9feb4a71c).