Использование ROracle вызывает ошибку в .oci.fetch(res, as.integer(n)) : ORA-01805:

Я использую ROracle для улучшения чтения данных из Oracle в R. Характеристики ПК и ОС: i5, 8Gb, Win7 64bit, Oracle 12c (клиент 64bit), R (64 bit, 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)

Но появилась какая-то ошибка:

Ошибка в .oci.fetch(res, as.integer(n)) : ORA-01805: ....

Дело в том, что ошибка не постоянная. Иногда это возникает, иногда нет, и скрипт работает нормально. Буду очень благодарен за помощь в таком случае.


person Dimon D.    schedule 16.11.2015    source источник
comment
fetch имеет другие аргументы, необходимые для получения не всей строки. Я думаю, что если вы получите всю таблицу, просто используйте dbGetQuery, могут быть проблемы с номером строки до fetch   -  person Batanichek    schedule 16.11.2015
comment
Может быть проблема в вашем часовом поясе или формате даты и времени в Оракул   -  person Batanichek    schedule 16.11.2015
comment
Ну, учитывая форматы даты и времени - у меня в начальных записях что-то вроде 15/12/2014 00:00:00. Но ROracle импортирован как 15/12/2014 02:00:00. любая идея, как решить такое несоответствие?   -  person Dimon D.    schedule 16.11.2015


Ответы (2)


Может у вас разные ТЗ (сервер\клиент) попробуйте

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

Может быть, это может помочь вам

person Batanichek    schedule 16.11.2015
comment
Пробовал применить предложенный скрипт, но не помогло. ну, если я пишу поля без даты, то все в порядке. но ошибка генерируется полями с данными. Может быть, стоит поговорить с администратором БД, чтобы настроить мой клиент оракула? - person Dimon D.; 16.11.2015
comment
Да, может быть, у меня такая же проблема с настройкой моего клиента ora - person Batanichek; 16.11.2015
comment
Я решил проблему, переустановив клиент оракула до последней версии с помощью администратора БД. И установите последнюю версию пакета ROracle (как установить ROracle, см. подробности gist.github.com/jgilfillan/ 7b0281067ed9feb4a71c). - person Dimon D.; 19.11.2015

Я решил проблему, переустановив клиент оракула на последнюю версию текущего сервера той же 64-битной версии с помощью администратора БД. И установите последнюю версию пакета ROracle (как установить ROracle, см. подробности на gist.github.com/jgilfillan/7b0281067ed9feb4a71c).

person Dimon D.    schedule 22.01.2016