2015-08-09 3 views
1

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.

Любая помощь была бы принята с благодарностью! Благодаря!

+0

Я думаю, что вам не хватает описания подключения для службы 'db' в файле' opt/oracle/instantclient_11_2/network/admin/tnsnames.ora', или вы можете попробовать строку подключения EZ: 'host: port/service' в параметр dbname. – stee1rat

+0

Спасибо за рекомендацию. Строка соединения EZ работает, но не делает ли файл tnsnames.ora бесполезным, так как это в основном единственные данные? – efh0888

+0

Да, это делает tnsnames.ora бесполезным. Вы можете сохранить строку подключения, которую вы использовали в своем сообщении в tnsnames.ora, и использовать только имя службы, которое вы помещаете в этот файл в параметр dbname. – stee1rat

ответ

0

Я видел много рекомендаций онлайн для добавления переменных среды в Yosemite для доступа к RStudio. Единственный, который полностью работал для меня, по крайней мере до сих пор, заключается в том, чтобы добавить все переменные среды в файл plist. Вы можете добавить столько переменных, сколько хотите, что описано @MortimorGoro в Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?.

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

0

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

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 есть также «тестовое соединение», которое вы должны использовать для проверки возможности подключения!

enter image description here

enter image description here

Надеется, что это помогает!