MAC EI Capitan 下安裝ruby-oci8

本來(lái)在osx下開(kāi)發(fā)好好的,因?yàn)樯?jí)到EI Capitan連不上oracle數(shù)據(jù)庫(kù)而報(bào)廢,經(jīng)過(guò)漫長(zhǎng)的研究和查資料終于解決了這個(gè)大BUG
根本原因是新版本的系統(tǒng)因?yàn)榘踩虿辉试S設(shè)置 DYLD_LIBRARY_PATH這個(gè)變量了,所以新版的ruby-oci8已經(jīng)做了調(diào)整可以使用OCI_DIR解決,但是如果你想安裝舊版本的就只能編譯一個(gè)自己的修改版本安裝了.
以下過(guò)程安裝最新版本可以通過(guò)了

  • 1、下載instantclient
    http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html
    到這里下載
    instantclient-basic-macos.x64-11.2.0.3.0.zip
    instantclient-sqlplus-macos.x64-11.2.0.3.0.zip
    instantclient-sdk-macos.x64-11.2.0.3.0.zip

  • 2、解壓
    cd ~/Downloads
    unzip -qq instantclient-basic-macos.x64-11.2.0.4.0.zip
    unzip -qq instantclient-sqlplus-macos.x64-11.2.0.4.0.zip
    unzip -qq instantclient-sdk-macos.x64-11.2.0.4.0.zip

  • 3、拷貝文件

    #創(chuàng)建文件夾--------------------------------------------
    cd instantclient_11_2
    mkdir -p /usr/local/oracle/product/instantclient_64/11.2.0.3.0/bin
    mkdir -p /usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib
    mkdir -p /usr/local/oracle/product/instantclient_64/11.2.0.3.0/jdbc/lib
    mkdir -p /usr/local/oracle/product/instantclient_64/11.2.0.3.0/rdbms/jlib
    mkdir -p /usr/local/oracle/product/instantclient_64/11.2.0.3.0/sqlplus/admin
    
    #開(kāi)始拷貝文件-------------------------------------------
    mv ojdbc* /usr/local/oracle/product/instantclient_64/11.2.0.3.0/jdbc/lib/
    mv x*.jar /usr/local/oracle/product/instantclient_64/11.2.0.3.0/rdbms/jlib/
    # rename glogin.sql to login.sql
    mv glogin.sql /usr/local/oracle/product/instantclient_64/11.2.0.3.0/sqlplus/admin/login.sql
    # Move lib & sdk
    mv *dylib* /usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib/
    mv sdk /usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib/sdk
    mv *README /usr/local/oracle/product/instantclient_64/11.2.0.3.0/
    mv * /usr/local/oracle/product/instantclient_64/11.2.0.3.0/bin/
    
    #處理文件-----------------------------------------
    cd /usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib
    ln -s libclntsh.dylib.11.1 libclntsh.dylib
    ln -s libocci.dylib.11.1 libocci.dylib
    
  • 4、設(shè)置TNS
    mkdir -p /usr/local/oracle/admin/network
    touch/usr/local/oracle/admin/network/tnsnames.ora
    tnsnames.ora 內(nèi)容如下

REACH =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.27)(PORT = 1521))
)
(CONNECT_DATA =(SERVICE_NAME = reach1)
)
)

  • 5、編輯.bash_profile文件,加入如下代碼:
    export ORACLE_BASE=/usr/local/oracle
    export ORACLE_HOME=$ORACLE_BASE/product/instantclient_64/11.2.0.3.0
    export PATH=$ORACLE_HOME/bin:$PATH
    export DYLD_LIBRARY_PATH=$ORACLE_HOME/lib:$DYLD_LIBRARY_PATH
    export TNS_ADMIN=$ORACLE_BASE/admin/network
    export SQLPATH=$ORACLE_HOME/sqlplus/admin
    export OCI_DIR=/usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib
    然后執(zhí)行 source ~/.bash_profile

  • 6、測(cè)試
    sqlplus user/pass@orademo

    SQL*Plus: Release 11.2.0.3.0 Production on Thu Sep 12 09:19:55 2013
    
    Copyright (c) 1982, 2012, Oracle.  All rights reserved.
    
    Connected to:
    Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    
    SQL> select table_name from user_tables;
    
  • 7、這時(shí)候依然不能安裝ruby-oci8,還需要fix_oralib.rb
    cd /usr/local/oracle/product/instantclient_64/11.2.0.3.0/lib
    curl -O https://raw.githubusercontent.com/kubo/fix_oralib_osx/master/fix_oralib.rb
    ruby fix_oralib.rb
    如果上面下載fix_oralib.rb因?yàn)闄?quán)限問(wèn)題失敗,可下載到其他目錄再拷貝過(guò)去即可
    這時(shí)候可以安裝ruby-oci8了
    參考地址
    1.https://github.com/kubo/ruby-oci8/issues/89
    2.http://blog.codiez.co.za/2013/09/setup-oracle-instant-client-ruby-oci8-gem-mac/

或者可以直接修改ruby-oci8源碼,將使用DYLD_LIBRARY_PATH的地方替換成OCI_DIR即可
然后自己編譯一個(gè)gem文件安裝也是可以解決的

最后編輯于
?著作權(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)容