在Mac OS 10.10上使用带有tnsnames.ora的ROracle连接到Oracle数据库

时间:2015-08-09 23:07:46

标签: oracle rstudio tnsnames roracle

跟进Installation of RODBC/ROracle packages on OS X Mavericks ...

首先,我使用@joran提供的答案在Mac OS 10.10.3(Yosemite)上安装了ROracle。另外,使用启动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")给了我正确的路径。或者,可能是Mac上的dbname参数所需的名称与Windows不同。

任何帮助将不胜感激!谢谢!

2 个答案:

答案 0 :(得分:0)

我已经在网上看到很多建议在Yosemite上添加环境变量以供RStudio访问。到目前为止,唯一一个完全适合我的方法是将所有环境变量添加到plist文件中。您可以根据需要添加任意数量的变量,这由Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?中的@MortimorGoro描述。

所以我的解决方案是将TNS_ADMIN添加到plist!

答案 1 :(得分:0)

对于那些来到这里但是在Windows 7上的人,在我的工作站上我必须使用TNSnames.ora文件(也使用TNS_ADMIN环境变量)(位于:C:\ app - 见第2个截图),I得到以下工作:

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

希望这有帮助!