OS X Mavericksへの RODBC/ROracle パッケージのインストールのフォローアップ...
まず、@joran から提供された回答を使用して、ROracle を Mac OS 10.10.3 (Yosemite) にインストールしました。さらに、スタートアップ 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 とまったく同じ形式であるためSys.getenv("TNS_ADMIN")
、正しいパスが得られたとしても、RStudio によって実際に表示されていないと考えています。または、Mac の dbname 引数で必要な名前が Windows とは異なる可能性があります。
どんな助けでも大歓迎です!ありがとう!