Дополнение к Установка пакетов RODBC/ROracle в OS X Mavericks а>...
Прежде всего, я установил ROracle на Mac OS 10.10.3 (Yosemite), используя ответ, предоставленный @joran. Кроме того, используя файл запуска plist для установки DYLD_LIBRARY_PATH, я могу запустить library(ROracle)
, и он загружается нормально. Однако я не могу подключиться к своей базе данных с помощью файла tnsnames.ora. Я добавил переменную TNS_ADMIN в файл .Renviron, который RStudio, кажется, подхватывает:
> Sys.getenv("TNS_ADMIN")
[1] "opt/oracle/instantclient_11_2/network/admin"
Когда я запускаю следующее, например
con <- dbConnect(drv = dbDriver("Oracle"), dbname = "db", username = "user", password = "pw")
, я получаю ошибку
Error in .oci.Connect(.oci.drv(), username = username, password = password, :
ORA-12154: TNS:could not resolve the connect identifier specified
Кроме того, я также добавил переменные среды TNS_ADMIN в .bash_profile, но это не помогло.
ПРИМЕЧАНИЕ 1. Я уже использовал файл tnsnames.ora для подключения к базе данных с помощью SQL Developer, поэтому я вполне уверен, что проблема связана с чем-то внешним по отношению к содержимому файла.
ПРИМЕЧАНИЕ 2. На самом деле я могу подключиться с помощью ROracle с чем-то вроде:
# see example at http://www.oralytics.com/2015/05/loading-json-data-into-oracle-using.html
host <- "localhost"
port <- 1521
service <- "pdb12c"
drv <- dbDriver("Oracle")
connect.string <- paste(
"(DESCRIPTION=",
"(ADDRESS=(PROTOCOL=tcp)(HOST=", host, ")(PORT=", port, "))",
"(CONNECT_DATA=(SERVICE_NAME=", service, ")))", sep = "")
con <- dbConnect(drv, username = "dmuser", password = "dmuser", dbname = connect.string)
Я дважды проверил свой файл tnsnames.ora, и он имеет тот же формат, что и connect.string, поэтому я думаю, что RStudio просто не видит его, хотя Sys.getenv("TNS_ADMIN")
дает мне правильный путь. В качестве альтернативы может случиться так, что имя, требуемое аргументом dbname в Mac, отличается от имени в Windows.
Любая помощь будет принята с благодарностью! Спасибо!
db
в файлеopt/oracle/instantclient_11_2/network/admin/tnsnames.ora
, или вы можете попробовать строку подключения EZ:host:port/service
в параметре dbname. - person stee1rat   schedule 10.08.2015