如何在linux下用R語(yǔ)言通過(guò)odbc訪問(wèn)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下,編譯好的庫(kù)文件安裝到了/usr/lib下,與unixODBC相關(guān)的可執(zhí)行文件安裝到了/usr/bin下,配置文件放到了/etc下。
2、 安裝數(shù)據(jù)庫(kù)ODBC驅(qū)動(dòng)
在ubuntu下用alien,在centos下用rpm安裝oracle的四個(gè)包。

進(jìn)入oracle的安裝目錄(/usr/lib/x64/oracle/)
chmod 775 odbc_update_ini.sh
./odbc_update_ini.sh /etc(沒(méi)有提示表示安裝成功)
其中,odbc_update_ini.sh參數(shù)說(shuō)明:
參數(shù)1:unixODBC安裝路徑。
參數(shù)2:驅(qū)動(dòng)安裝的絕對(duì)路徑(可選)。
默認(rèn)為運(yùn)行腳本的路徑。
參數(shù)3:驅(qū)動(dòng)名(可選),默認(rèn)為Oracle 11g ODBC driver。
參數(shù)4:數(shù)據(jù)源名稱(chēng)(可選)。
運(yùn)行完成后將添加一個(gè)DNS條目到$HOME/.odbc.ini ,/etc/odbcinst.ini,名稱(chēng)為: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軟件那么對(duì)應(yīng)的就是$ORACLE_HOME/network/admin/目錄,如果沒(méi)有安裝相應(yīng)oracle軟件,需要指定tnsnames.ora所在的目錄,可選)
NLS_LANG(設(shè)定合適的字符集,可選)
LANG(系統(tǒng)字符編碼,可選)
/etc/profile (注意前面的英文句號(hào),點(diǎn)號(hào)后面有空格) 將環(huán)境變量注冊(cè).

一般來(lái)說(shuō),在centos里面你可以通過(guò)在/etc/ld.so.conf.d/目錄下建一個(gè)新文件來(lái)實(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為端口號(hào)
五、 檢查驅(qū)動(dòng)配置
vi /etc/odbcinst.ini 在其中添加oracle驅(qū)動(dòng),如
[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 #對(duì)應(yīng)/usr/local/etc/odbcinst.ini中的驅(qū)動(dòng)配置名稱(chēng)
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 #對(duì)應(yīng)tnsnames.ora中配置的本地服務(wù)名SQLGetData extensions = F
Translation DLL =
Translation ption = 0
DisableRULEHint = T
UserID =
七、 測(cè)試
用命令:isql<數(shù)據(jù)源名稱(chēng)> <用戶名> <密碼> -v
[root@dwj~]$ isql OracleODBC-11g system oracle -v+---------------------------------------+|Connected! || ||sql-statement || help[tablename] ||quit || |+---------------------------------------+

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

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

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