在 OS X Mavericks上安装 RODBC/ROracle 包的后续行动...
首先,我使用@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
此外,我还在 .bash_profile 中添加了 TNS_ADMIN 环境变量,但这并没有帮助。
注意 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 不同。
任何帮助将不胜感激!谢谢!