Linux中OCI開發庫的配置


 

Oracle調用接口(Oracle Call Interface,簡稱OCI)提供了一組可對Oracle數據庫進行存取的接口子例程(函數),通過在第三代程序設計語言(如C語言)中進行調用可達到存取Oracle數據庫的目的。

1、Oracle客戶端

因為需要使用ocilib來操作部署在其他電腦上的數據庫,需要安裝Oracle客戶端;注意,無需下載完整的Oracle客戶端,下載安裝oracle-instantclient(即時客戶端)即可,官網下載地址是:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 。有很多類型的包可供下載,每種包又分為.zip和.rpm兩種格式,zip包相當於解壓后免安裝版,rpm包需要安裝。下載的版本要對應你所連接的數據庫的具體版本及位數,如我要連接的數據庫的版本信息是:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 -64bit Production

所以我選擇64位的11.2.0.4.0版本來下載。下面以rpm格式包安裝配置來詳細展開。

1)要遠程連接Oracle數據庫,且要使用ocilib來操作數據庫,則至少需要下載以下三個包:

oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm 
oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm 
oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm

其中

  basic是基礎包,使用其的目的是運行OCI、OCCI、JDBC-OCI這幾個應用程序;

  sqlplus是補充包/文件,目的是運行sql*plus的即時客戶端;

  devel等同於oracle-sdk,包含頭文件和示例文件,目的是開發Oracle應用程序;

以上三個千萬不要少。

其余的可選的還有:

oracle-instantclient11.2-odbc-11.2.0.4.0-1.x86_64.rpm  --補充包/文件,為運行ODBC環境附加庫;
oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm  --補充JDBC下的XA、國際標准、行集操作;

2)使用rpm -ivh [包名]進行安裝,

如:

rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm

安裝的文件默認放在兩個位置:

頭文件:/usr/include/oracle/11.2/client64/下,如果在使用時報錯找不到頭文件,記得看路徑是否是這個。

包文件:/usr/lib/oracle/11.2/client64/下,包含{bin、lib}兩個文件夾。

3)創建文件夾:#mkdir -p /usr/lib/oracle/11.2/client64/network/admin/

4)創建監聽文件,並添加內容:#vi /usr/lib/oracle/11.2/client64/network/admin/tnsnames.ora

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 200.31.157.65)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = *SID*)
    )
  )

5)配置環境變量

vi ~/.bashrc
#該種方法把使用這些環境變量的權限控制到用戶級別,即針對某一特定的用戶,如果你需要給某個用戶權限使用這些環境變量,你只需要修改其個人主目錄下的.bashrc文件就可以了。

export  ORACLE_HOME=/usr/lib/oracle/11.2/client64
export  TNS_ADMIN=$ORACLE_HOME/network/admin
export  NLS_LANG='simplified chinese_china'.ZHS16GBK
export  LD_LIBRARY_PATH=$ORACLE_HOME/lib 
export  PATH=$ORACLE_HOME/bin:$PATH

6)使配置完的環境變量生效 :#source ~/.bashrc

7)連接數據庫測試:#sqlplus /nolog

 

2、安裝配置OCI

1)下載地址:http://vrogier.github.io/ocilib/

2)配置環境變量:vi ~/.bashrc

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

因為前面已配置了oracle的鏈接庫路徑,執行前,LD_LIBRARY_PATH=:/usr/lib/oracle/11.2/client64/lib;

執行上述語句后,LD_LIBRARY_PATH=:/usr/lib/oracle/11.2/client64/lib:/usr/local/lib;

2)解壓ocilib

tar -xzvf ocilib-4.3.3-gnu.tar.gz

3)進入該目錄:cd ocilib-4.3.3;然后./configure進行配置(./configure是用來生成Makefile,為下一步的編譯做准備,--with用於指定ocilib所需的頭文件和庫文件位置)

./configure --with-oracle-lib-path=/usr/lib/oracle/11.2/client64/lib --with-oracle-headers-path=/usr/include/oracle/11.2/client64

4)make

make是用來編譯,它從Makefile中讀取指令,然后編譯。

5)make install

make install是用來安裝的,它從Makefile中讀取指令,安裝到指定的位置。

 

3、成功后示例

1)代碼:

#include "ocilib.h"
#include <stdio.h>

int main()
{
    OCI_Connection * cn = NULL;

    if ( !OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT) )
    {
        return -1;
    }

    cn = OCI_ConnectionCreate("192.168.1.218:1521/orcl","hr", "hr", OCI_SESSION_DEFAULT);
    if ( cn != NULL )
    {
        printf("%s\n", OCI_GetVersionServer(cn));

        OCI_ConnectionFree(cn);
    }
    
    OCI_Cleanup();

    return 0;
}

2)編譯

gcc ocitest.c -locilib

3)執行

4)注意事項

安裝完寫demo的時候,出現:

是因為LD_LIBRARY_PATH沒配置正確,在執行a.out時,找不到動態庫,需參照前面的步驟完成配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM