[R-sig-DB] Unable to get RODBC or ROracle to work on Linux
Stuart Uren
@@uren @end|ng |rom ctru@@uck|@nd@@c@nz
Wed Dec 21 02:27:32 CET 2011
Hi,
First, my apologies for a lengthy email.
I have been trying to get connectivity between R and Oracle over the
past few days (I am new to R, but know Oracle and Linux).
I have tried both RODBC and ROracle methods to connect, but having
issues with both.
Below is our environment, what I have done, and the issues to date. I
would much appreciate any help on this, as I'm not sure what to do now.
Our server:
- RHEL 5.7 64-bit
- Oracle 11.2.0.3 64-bit
- R version 2.14.0 (2011-10-31) 64-bit i.e. .Machine$sizeof.pointer = 8.
_RODBC_
I have installed unixODBC-2.2.14, as I had issues with the standard RHEL
2.2.11.
Also installed is the following Oracle 11.2.0.3 64-bit instant client
software:
- instantclient-basic-linux.x64-11.2.0.3.0
- instantclient-odbc-linux.x64-11.2.0.3.0
- instantclient-precomp-linux.x64-11.2.0.3.0
- instantclient-sdk-linux.x64-11.2.0.3.0
- instantclient-sqlplus-linux.x64-11.2.0.3.0
With the unixODBC 2.2.11 rpm, I kept getting the error with isql:
isql: symbol lookup error:
/u04/app/oracle/product/11.2.0.3/dbhome_1/lib/libsqora.so.11.1:
undefined symbol: SQLGetPrivateProfileStringW
This was due to unixODBC 2.2.12+ not being certified on RHEL5 (see
attachment bug_12691067.txt for details).
After installing the 2.2.14 unixODBC, I can now connect to the local
Oracle database with isql.
So,... now I do the following as 'root':
root using predict: export LD_LIBRARY_PATH=/opt/oracle-instantclient/P
root using predict: export ORACLE_HOME=/u04/app/oracle/product/11.2.0.3/dbhome_1
root using predict: export ORACLE_SID=PREDICT
root using predict: export
PATH=/u04/app/oracle/product/11.2.0.3/dbhome_1:/u04/app/oracle/product/11.2.0.3/dbhome_1/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
root using predict: export
TNS_ADMIN=/u04/app/oracle/product/11.2.0.3/dbhome_1/network/admin
root using predict:/u05/db_downloads> R
R version 2.14.0 (2011-10-31)
...
...
...
>
> Sys.getenv("ORACLE_SID")
[1] "PREDICT"
> Sys.getenv("ORACLE_HOME")
[1] "/u04/app/oracle/product/11.2.0.3/dbhome_1"
> Sys.getenv("LD_LIBRARY_PATH")
[1]
"/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib:/opt/oracle-instantclient/P:/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib"
> Sys.getenv("TNS_ADMIN")
[1] "/u04/app/oracle/product/11.2.0.3/dbhome_1/network/admin"
> library(RODBC)
> hdl <- odbcConnect('predict', '<user>', '<password>')
/usr/lib64/R/bin/exec/R: symbol lookup error:
/opt/oracle-instantclient/P/libsqora.so.11.1: undefined symbol:
SQLGetPrivateProfileStringW
root using predict:/u05/db_downloads>
I noticed the LD_LIBRARY_PATH had my instant client directory appended
to it, so I tried updating to be at the start, but I still get the same
error. i.e. set to:
>
Sys.setenv(LD_LIBRARY_PATH="/opt/oracle-instantclient/P:/usr/lib64/R/lib:/usr/local/lib64:/usr/lib/jvm/jre/lib/amd64/server:/usr/lib/jvm/jre/lib/amd64:/usr/lib/jvm/java/lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib")
I find it strange that isql works, but ROracle gives the same error as
though I'm running on the unixODBC 2.2.11. Is there something else I
need to configure in R to fix this?
_ROracle_
I now turn to trying to install the ROracle package, but am unable to
get that to install.
I have looked at this posting:
http://www.mail-archive.com/r-help@r-project.org/msg121901.html
... and the ROracle install package at
http://cran.r-project.org/web/packages/ROracle/INSTALL
root using predict:/u05/db_downloads> R CMD INSTALL ROracle_0.5-12.tar.gz
* installing to library '/usr/lib64/R/library'
* installing *source* package 'ROracle' ...
** package 'ROracle' successfully unpacked and MD5 sums checked
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -E
configure: creating ./config.status
config.status: creating src/Makevars
config.status: creating src/Makefile
** libs
** arch -
R CMD COMPILE RS-DBI.c
make[1]: Entering directory `/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/src'
gcc -m64 -std=gnu99 -I/usr/include/R -DRS_ORA_SQLGLS_WORKAROUND
-I/usr/local/include -fpic -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic -c RS-DBI.c -o RS-DBI.o
make[1]: Leaving directory `/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/src'
proc CODE=ANSI_C MODE=ORACLE INCLUDE=/usr/lib64/R/include \
PARSE=NONE LINES=false PREFETCH=1 RS-Oracle.pc
Pro*C/C++: Release 11.2.0.3.0 - Production on Wed Dec 21 13:59:21 2011
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights
reserved.
System default option values taken from:
/u04/app/oracle/product/11.2.0.3/dbhome_1/precomp/admin/pcscfg.cfg
R CMD COMPILE RS-Oracle.c
make[1]: Entering directory `/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/src'
gcc -m64 -std=gnu99 -I/usr/include/R -DRS_ORA_SQLGLS_WORKAROUND
-I/usr/local/include -fpic -O2 -g -pipe -Wall
-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector
--param=ssp-buffer-size=4 -m64 -mtune=generic -c RS-Oracle.c -o RS-Oracle.o
RS-Oracle.c: In function 'RS_Ora_varCharCpy':
RS-Oracle.c:6726: warning: pointer targets in passing argument 1 of
'__builtin___strcpy_chk' differ in signedness
RS-Oracle.c:6726: warning: pointer targets in passing argument 1 of
'__strcpy_ichk' differ in signedness
RS-Oracle.c: At top level:
RS-Oracle.c:114: warning: 'sqlstm' defined but not used
make[1]: Leaving directory `/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/src'
R CMD SHLIB -o ROracle.so RS-DBI.o RS-Oracle.o
make[1]: Entering directory `/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/src'
gcc -m64 -std=gnu99 -shared -L/usr/local/lib64 -o ROracle.so RS-DBI.o
RS-Oracle.o -L/u04/app/oracle/product/11.2.0.3/dbhome_1/lib
-L/u04/app/oracle/product/11.2.0.3/dbhome_1/network/lib -lclntst11
-lnbeq11 -lnhost11 -lnus11 -lnldap11 -lldapclnt11 -lnsslb11 -lntcp11
-lntcps11 -lnsslb11 -lntcp11 -lntns11 -ldl -lm -lpthread -lnsl -lirc
-lipgo -lsvml -ldl -lm -L/usr/lib64/R/lib -lR
make[1]: Leaving directory `/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/src'
installing to /usr/lib64/R/library/ROracle/libs
** R
** inst
** preparing package for lazy loading
Creating a generic function for 'format' from package 'base' in package
'ROracle'
** help
*** installing help indices
converting help for package 'ROracle'
finding HTML links ... done
DBIPreparedStatement-class html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/DBIPreparedStatement-class.Rd:17:
missing file link 'dbPrepareStatement'
OraConnection-class html
OraDriver-class html
OraObject-class html
OraPreparedStatement-class html
OraResult-class html
Oracle html
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:90:
missing file link 'dbRollback'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:99:
missing file link 'dbRollback'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:102:
missing file link 'dbGetQuery'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:106:
missing file link 'dbWriteTable'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:128:
missing file link 'dbUnloadDriver'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:133:
missing file link 'dbDisconnect'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:139:
missing file link 'dbGetQuery'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:140:
missing file link 'dbClearResult'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:147:
missing file link 'dbRollback'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:154:
missing file link 'dbListFields'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:155:
missing file link 'dbListConnections'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:156:
missing file link 'dbListResults'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:157:
missing file link 'dbGetException'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:158:
missing file link 'dbGetStatement'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:159:
missing file link 'dbHasCompleted'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:160:
missing file link 'dbGetRowCount'
Rd warning: /tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/Oracle.Rd:161:
missing file link 'dbGetRowsAffected'
S4R html
dbCallProc-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbCallProc-methods.Rd:30:
missing file link 'dbGetQuery'
dbCommit-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbCommit-methods.Rd:31:
missing file link 'dbGetQuery'
dbConnect-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbConnect-methods.Rd:51:
missing file link 'dbGetQuery'
dbDataType-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbDataType-methods.Rd:32:
missing file link 'isSQLKeyword'
dbDriver-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbDriver-methods.Rd:38:
missing file link 'dbGetQuery'
dbGetInfo-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbGetInfo-methods.Rd:47:
missing file link 'dbGetQuery'
dbListTables-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbListTables-methods.Rd:36: missing
file link 'dbColumnInfo'
dbObjectId-class html
dbPrepareStatement-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbPrepareStatement-methods.Rd:86:
missing file link 'dbClearResult'
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbPrepareStatement-methods.Rd:87:
missing file link 'dbGetStatement'
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbPrepareStatement-methods.Rd:88:
missing file link 'dbGetRowsAffected'
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbPrepareStatement-methods.Rd:109:
missing file link 'dbGetQuery'
dbReadTable-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbReadTable-methods.Rd:80:
missing file link 'dbGetQuery'
dbSendQuery-methods html
dbSetDataMappings-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/dbSetDataMappings-methods.Rd:34:
missing file link 'dbColumnInfo'
fetch-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/fetch-methods.Rd:44:
missing file link 'dbGetQuery'
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/fetch-methods.Rd:45:
missing file link 'dbClearResult'
isIdCurrent html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/isIdCurrent.Rd:34: missing
file link 'dbGetQuery'
make.db.names-methods html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/make.db.names-methods.Rd:67:
missing file link 'dbWriteTable'
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/make.db.names-methods.Rd:68:
missing file link 'dbExistsTable'
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/make.db.names-methods.Rd:69:
missing file link 'dbRemoveTable'
oraParseConParams html
oraSupport html
safe.write html
Rd warning:
/tmp/Rtmp50pvF6/R.INSTALL6324d87b/ROracle/man/safe.write.Rd:21: missing
file link 'oraWriteTable'
summary-methods html
** building package indices ...
** testing if installed package can be loaded
Error in dyn.load(file, DLLpath = DLLpath, ...) :
unable to load shared object
'/usr/lib64/R/library/ROracle/libs/ROracle.so':
/usr/lib64/R/library/ROracle/libs/ROracle.so: undefined symbol: sqlprc
Error: loading failed
Execution halted
ERROR: loading failed
* removing '/usr/lib64/R/library/ROracle'
As mentioned, I've been through the R forums for answers, but still get
this error.
I am unsure what to do next, and would much appreciate if anyone would
provide some help with either the RODBC method or ROracle method to
connect to my database.
Thanks in advance,
Stuart Uren
Database Administrator
Clinical Trials Research Unit
The University of Auckland
Auckland, New Zealand
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://stat.ethz.ch/pipermail/r-sig-db/attachments/20111221/5921f0b1/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: bug_12691067.txt
URL: <https://stat.ethz.ch/pipermail/r-sig-db/attachments/20111221/5921f0b1/attachment.txt>
More information about the R-sig-DB
mailing list