Подключитесь к базе данных Oracle с помощью ROracle с tnsnames.ora в Mac OS 10.10.

Дополнение к Установка пакетов 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.

Любая помощь будет принята с благодарностью! Спасибо!


person efh0888    schedule 09.08.2015    source источник
comment
Я думаю, вам не хватает описания подключения для службы db в файле opt/oracle/instantclient_11_2/network/admin/tnsnames.ora, или вы можете попробовать строку подключения EZ: host:port/service в параметре dbname.   -  person stee1rat    schedule 10.08.2015
comment
Спасибо за рекомендацию. Строка подключения EZ работает, но не делает ли это файл tnsnames.ora бесполезным, поскольку это, по сути, единственные данные?   -  person efh0888    schedule 10.08.2015
comment
Да, это делает tnsnames.ora бесполезным. Вы можете сохранить строку подключения, которую вы использовали в своем посте, в tnsnames.ora и использовать только имя службы, которое вы указали в этом файле в параметре dbname.   -  person stee1rat    schedule 10.08.2015


Ответы (2)


Я видел много рекомендаций в Интернете по добавлению переменных среды в Yosemite для доступа к RStudio. Единственное, что у меня полностью сработало, по крайней мере, до сих пор, — это добавить все переменные среды в файл plist. Вы можете добавить столько переменных, сколько хотите, что описано @MortimorGoro в Установка переменных среды через launchd.conf больше не работает в OS X Yosemite/El Capitan/macOS Sierra?.

Итак, мое решение состояло в том, чтобы просто добавить TNS_ADMIN в plist!

person efh0888    schedule 10.08.2015

Для тех из вас, кто попал сюда, но работает в Windows 7, на моей рабочей станции я должен использовать файл TNSnames.ora (также с использованием переменной среды TNS_ADMIN) (находится в: C:\app - см. 2-й снимок экрана), я получил следующее работать:

library(RODBC)

channel <- odbcConnect("PERMIT_DEV_odbc", uid = "POWDERED_TOAST_MAN", pwd = "dev_NONE_OF_YOUR_BEEZNEEZ", believeNRows = FALSE)

testsql <- "select sysdate from dual;"

query <- sqlQuery(channel = channel, query = testsql)

1 Нажмите кнопку «Пуск» (в Windows 7).

2 Начните вводить «odbc» и найдите «настроить источники данных (ODBC)» или что-то в этом роде.

3 Добавьте соединение на основе файла TNS.

4 также есть кнопка «проверить подключение», которую вы должны использовать для проверки подключения!

введите здесь описание изображения

введите здесь описание изображения

Надеюсь это поможет!

person Eric Milliot-Martinez    schedule 20.02.2018