使用ROracle在.oci.fetch(res,as.integer(n))中生成错误:ORA-01805:
我使用ROracle增强从Oracle到R的数据读取。 PC和操作系统规格:i5、8Gb、Win7 64位、Oracle 12c客户机64位、R 64位、3.2.2、Rstudio 当前代码原样:使用ROracle在.oci.fetch(res,as.integer(n))中生成错误:ORA-01805:,r,roracle,R,Roracle,我使用ROracle增强从Oracle到R的数据读取。 PC和操作系统规格: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", "
>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)
但出现了一些错误:
.oci.fetchres中的错误,as.integern:ORA-01805:
关键是错误不是永久性的。有时出现,有时不出现,脚本运行正常。
我将非常感谢您在这种情况下的帮助。可能您有不同的TZ服务器\客户端尝试 dbGetQuerycon,从dual中选择SESSIONTIMEZONE和DBTIMEZONE SESSIONTIMEZONE数据库时区 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数据库时区
1+04:00+04:00
可能它可以帮助您我在DB administrator的帮助下,通过将oracle客户端重新安装到当前服务器的最新版本(相同64位),解决了这个问题。并设置最新版本的ROracle软件包如何安装ROracle请参阅gist.github.com/jgilfillan/7b0281067ed9feb4a71c。fetch还需要其他参数来获取非所有行。我认为,如果您的get all表简单地使用dbGetQuery,可能是要获取的行号有问题,也可能是时区或日期时间格式有问题,考虑到日期时间格式,我在初始记录中有类似2014年12月15日00:00:00的记录。但ROracle于2014年12月15日02:00:00进口。你知道如何解决这样的矛盾吗?试图应用提供的脚本,但没有帮助。好吧,如果我正在编写非日期字段的脚本,那么一切似乎都正常。但错误是由包含数据的字段生成的。是否值得与数据库管理员交谈以优化我的oracle客户端?是的,可能是,我的oracle客户端在配置方面也有相同的问题。我在数据库管理员的帮助下,通过将oracle客户端重新安装到最新版本来解决此问题。并设置最新版本的ROracle软件包如何安装ROracle请参阅详细信息。