如何在linux下用R語言通過odbc訪問oracle

一、下載安裝包

  1. http://www.unixodbc.org/
    下載文件:unixODBC-2.3.4.tar.gz
  2. Oracle ODBC Driver
    http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
    (根據(jù)系統(tǒng)需求進(jìn)oracle官網(wǎng)下載相應(yīng)版本)
    下載文件:
    oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm
    oracle-instantclient12.1-devel-12.1.0.2.0-1.x86_64.rpm
    oracle-instantclient12.1-odbc-12.1.0.2.0-1.x86_64.rpm
    oracle-instantclient12.1-sqlplus-12.1.0.2.0-1.x86_64.rpm

二、 安裝
1、 安裝unixODBC
以root的身份運(yùn)行:
tar –zxvf unixODBC-2.3.4.tar.gz
cd unixODBC-2.3.4
./configure --prefix=/usr/local/unixODBC-2.3.4 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc
make
make install
安裝成功后,unixODBC所需的頭文件都被安裝到了/usr/inlucde下,編譯好的庫文件安裝到了/usr/lib下,與unixODBC相關(guān)的可執(zhí)行文件安裝到了/usr/bin下,配置文件放到了/etc下。
2、 安裝數(shù)據(jù)庫ODBC驅(qū)動
在ubuntu下用alien,在centos下用rpm安裝oracle的四個包。

進(jìn)入oracle的安裝目錄(/usr/lib/x64/oracle/)
chmod 775 odbc_update_ini.sh
./odbc_update_ini.sh /etc(沒有提示表示安裝成功)
其中,odbc_update_ini.sh參數(shù)說明:
參數(shù)1:unixODBC安裝路徑。
參數(shù)2:驅(qū)動安裝的絕對路徑(可選)。
默認(rèn)為運(yùn)行腳本的路徑。
參數(shù)3:驅(qū)動名(可選),默認(rèn)為Oracle 11g ODBC driver。
參數(shù)4:數(shù)據(jù)源名稱(可選)。
運(yùn)行完成后將添加一個DNS條目到$HOME/.odbc.ini ,/etc/odbcinst.ini,名稱為:OracleODBC-11g

三、 設(shè)置環(huán)境變量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x64/oracle/instantclient_11_2:/usr/local/lib
PATH=$PATH:/usr/local/bin
TNS_ADMIN(如果安裝有oracle軟件那么對應(yīng)的就是$ORACLE_HOME/network/admin/目錄,如果沒有安裝相應(yīng)oracle軟件,需要指定tnsnames.ora所在的目錄,可選)
NLS_LANG(設(shè)定合適的字符集,可選)
LANG(系統(tǒng)字符編碼,可選)
/etc/profile (注意前面的英文句號,點(diǎn)號后面有空格) 將環(huán)境變量注冊.

一般來說,在centos里面你可以通過在/etc/ld.so.conf.d/目錄下建一個新文件來實(shí)現(xiàn)
文件的名字是xxxx.conf,比如oracleinstantclient.conf
里面的內(nèi)容就是目錄:比如/usr/local/lib,可參考其他文件
建好后,運(yùn)行l(wèi)dconfig,就可以把ld新配置裝載進(jìn)系統(tǒng)了

四、 配置本地服務(wù)名(tnsnames.ora)
按環(huán)境變量中TNS_ADMIN的設(shè)置目錄,添加本地服務(wù)名:$TNS_ADMIN/tnsnames.ora或$ORACLE_HOME/network/admin/tnsnames.ora
例如:TEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = xx.xx.xx.xx)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = test) ) )
注:此處HOST為所連接的ip地址,PORT為端口號
五、 檢查驅(qū)動配置
vi /etc/odbcinst.ini 在其中添加oracle驅(qū)動,如
[Oracle 11g ODBC driver]
Description = Oracle ODBC driver for Oracle 11g
Driver = /root/instantclient_11_2/libsqora.so.10.1
Setup =File
Usage =
CPTimeout =
CPReuse =
六、 添加oracle odbc配置(oracle用戶)
vi ~/.odbc.ini
[OracleODBC-10g]
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CloseCursor = F
DisableDPM = F
DisableMTS = T
Driver = Oracle 11g ODBC driver #對應(yīng)/usr/local/etc/odbcinst.ini中的驅(qū)動配置名稱
DSN = OracleODBC-11g
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
Lobs = T
Longs = T
MetadataId
Default = F
QueryTimeout = T
ResultSets = T
ServerName =TEST #對應(yīng)tnsnames.ora中配置的本地服務(wù)名SQLGetData extensions = F
Translation DLL =
Translation ption = 0
DisableRULEHint = T
UserID =
七、 測試
用命令:isql<數(shù)據(jù)源名稱> <用戶名> <密碼> -v
[root@dwj~]$ isql OracleODBC-11g system oracle -v+---------------------------------------+|Connected! || ||sql-statement || help[tablename] ||quit || |+---------------------------------------+

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容