Followup к Installation of RODBC/ROracle packages on OS X Mavericks ...Подключение к базе данных Oracle с использованием ROracle с tnsnames.ora на Mac OS 10,10
Прежде всего, я установил 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. – stee1rat
Спасибо за рекомендацию. Строка соединения EZ работает, но не делает ли файл tnsnames.ora бесполезным, так как это в основном единственные данные? – efh0888
Да, это делает tnsnames.ora бесполезным. Вы можете сохранить строку подключения, которую вы использовали в своем сообщении в tnsnames.ora, и использовать только имя службы, которое вы помещаете в этот файл в параметр dbname. – stee1rat