Linux 下進行 OCCI ( Oracle C++ Call Interface ) 開發

來源:互聯網
上載者:User

Oracle 調用介面 (Orale Call Interface,OCI) 是最全面、效能最高、基於原生“C”語言的 Oracle 資料庫介面,它可以提供 Oracle 資料庫的全部功能。

OCI 為構建各種語言專用介面(如 Oracle JDBC-OCI、ODP.Net、Oracle 先行編譯器、Oracle ODBC 和 Oracle C++ Call Interface (OCCI)驅動程式)提供了基礎。

使用C/C++操作Oracle資料庫,我們經常採用 Oracle C++ Call Interface (OCCI) 來進行編程,下面介紹 Linux 下如何做 OCCI 開發.

要在Linux 下做 OCCI 開發,首先必須在開發機器上安裝有 OCCI 相關庫(包含開發所需的庫和運行所需的庫)和標頭檔, OCCI 庫和標頭檔可以通過以下三種途徑得到:

(i) 安裝 Oracle 資料庫引擎  (2) 安裝 Oracle Client  (3) 安裝 Oracle Instant Client.

其中,前兩種方式下,

庫所在位置一般是: /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/lib

標頭檔所在位置一般是: /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/rdbms/public/

只要安裝了Oracle資料庫引擎或者用戶端,庫檔案和標頭檔就能夠很方便的得到。然而,通常我們的開發都是安裝一台資料庫伺服器,然後在客戶機器上做開發,所以安裝Oracle資料庫引擎不可取,鑒於安裝Oracle Client也相對比較繁瑣,我們採用第三種方式可以減少很多不必要的工作。儘管如此,我們還是有必要首先簡單介紹在前兩種方式下如何做OCCI開發。

(1) OCCI 開發方式一

     (i)編譯

       編寫好程式後,Makefile 定義相關變數,然後進行編譯,例如:

       OCCI_HOME= /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1

       OCCI_INCLUDE_DIR=$(OCCI_HOME)/rdbms/public/

       OCCI_LIBRARY_PATH=$(OCCI_HOME)/lib

      default:

g++ *.cpp  -I$(OCCI_INCLUDE_DIR)  -L$(OCCI_LIBRARY_PATH)  -locci  -lclntsh

     (ii)運行

       編譯完成後,運行程式,運行OCCI程式必須設定以下環節變數:

       export ORACLE_BASE=/sdb1/oracle/11gR2_database_X64
       export ORACLE_HOME=$ORACLE_BASE/product/11.2.0.1.0/db_1
       export NLS_LANG='simplified chinese'_china.ZHS16GBK
       export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

     (iii) 附加問題

       若想將OCCI標頭檔和庫檔案拷貝到其它機器進行OCCI開發,則按如下步驟做,參照http://blog.csdn.net/zklth/article/details/7184032 :

[plain]  view plain copy (1) 方法一:使用 Oracle 11.2.0.1 資料庫軟體中內建的 OCCI 相關庫和標頭檔.   在一個安裝好Oracle 11.2.0.1 R2 資料庫的機器上拷貝occi相關標頭檔和庫檔案到目錄 /opt/OCCI_11g_R2/include 和 /opt/OCCI_11g_R2/lib 下,    標頭檔:   mkdir  /opt/OCCI_11g_R2/include   cp -r /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/rdbms/public/*     /opt/OCCI_11g_R2/include/   庫檔案:   mkdir  /opt/OCCI_11g_R2/lib   cp /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/lib/libclntsh.so.11.1    /opt/OCCI_11g_R2/lib/   cp /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/lib/libocci.so.11.1    /opt/OCCI_11g_R2/lib/   cp /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/libocci11.a    /opt/OCCI_11g_R2/lib/   cp /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/libnnz11.so    /opt/OCCI_11g_R2/lib/   cp /sdd1/oracle/11gR2_database_X64/product/11.2.0.1.0/db_1/libnnz11.a   /opt/OCCI_11g_R2/lib/   cd /opt/OCCI_11g_R2/lib   建立3個軟連結   ln -s libocci.so.11.1  libocci.so   ln -s libclntsh.so.11.1   libclntsh.so   ln -s libclntsh.so libclntsh.so.10.1     [root@localhost lib]# ll   總計 69764   lrwxrwxrwx 1 root root       17 01-07 13:33 libclntsh.so -> libclntsh.so.11.1   lrwxrwxrwx 1 root root       12 01-07 13:33 libclntsh.so.10.1 -> libclntsh.so   -rwxr-xr-x 1 root root 48724689 01-07 12:58 libclntsh.so.11.1   -rw-r--r-- 1 root root 11595642 2012-01-07 libnnz11.a   -rw-r--r-- 1 root root  7899997 2012-01-07 libnnz11.so   -rw-r--r-- 1 root root  1863334 01-07 12:50 libocci11.a   lrwxrwxrwx 1 root root       15 01-07 13:33 libocci.so -> libocci.so.11.1   -rwxr-xr-x 1 root root  1260923 01-07 12:50 libocci.so.11.1      編譯OCCI程式時使用如下選項:   OCCI_HOME=/opt/OCCI_11g_R2   OCCI_INCLUDE_DIR=$(OCCI_HOME)/include   OCCI_LIBRARY_PATH=$(OCCI_HOME)/lib   g++ *.cpp  -I$(OCCI_INCLUDE_DIR)  -L$(OCCI_LIBRARY_PATH)  -locci  -lclntsh  -lnnz11      # 注意要加上 lnnz11,libclntsh.so 中使用到了 libnnz11.so 中的函數.      編譯成功。  

(2) 安裝 ORACLE Instant  Client 做 OCCI 開發

      (i) 安裝ORACLE Instant  Client 

            安裝請參見帖  http://blog.csdn.net/zklth/article/details/7190035   或者 http://blog.csdn.net/zklth/article/details/7184032

            包含 zip 安裝 和 rpm 安裝.  注意,做開發必須安裝 basic、sdk 兩個包.

            對於 zip 包.

            開發相關的標頭檔在:/root/linux-11.2.0.1.0-1.x86_64/instantclient_11_2/sdk/include

            開發相關的庫檔案在:/root/linux-11.2.0.1.0-1.x86_64/instantclient_11_2.

            對於rpm包

            開發相關的標頭檔在:/usr/include/oracle/11.2/client64

            開發相關的庫檔案在:/usr/lib/oracle/11.2/client64/lib

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.