步驟如下:
//
// 1. 從安裝好的 Oracle 11g R2 for X64 Linux 上複製OCCI標頭檔和庫檔案:
// (1). 複製標頭檔
// mkdir -p ~/OCCI-11gR2-X64/include
// cp $ORACLE_HOME/rdbms/public/* ~/OCCI/include/
//
// (2). 複製庫檔案並建立軟連結
// mkdir -p ~/OCCI-11gR2-X64/lib;
// cp $ORACLE_HOME/lib/libocci.so.11.1 ~/OCCI-11gR2-X64/lib/
// cp $ORACLE_HOME/lib/libclntsh.so.11.1 ~/OCCI-11gR2-X64/lib/
// cp $ORACLE_HOME/lib/libocci11.a ~/OCCI-11gR2-X64/lib/
// cp $ORACLE_HOME/lib/libclntst11.a ~/OCCI-11gR2-X64/lib/
// cp $ORACLE_HOME/lib/libnnz11.so ~/OCCI-11gR2-X64/lib/ <這個庫也必須拷貝, 它是libclntsh.so.11.1所依賴的>
// cd ~/OCCI/lib;
// ln -s libclntsh.so.11.1 libclntsh.so;
// ln -s libclntsh.so libclntsh.so.10.1
// ln -s libocci.so.11.1 libocci.so
//
// (3). OCCI-11gR2-X64/lib 目錄結構如下
/*
[oracle@gd47 lib]$ ls -l
總計 58424
lrwxrwxrwx 1 oracle oinstall 17 12-07 20:50 libclntsh.so -> libclntsh.so.11.1
lrwxrwxrwx 1 oracle oinstall 12 12-07 20:51 libclntsh.so.10.1 -> libclntsh.so
-rwxr-xr-x 1 oracle oinstall 48725793 12-07 20:46 libclntsh.so.11.1
-rw-r--r-- 1 oracle oinstall 0 12-07 20:46 libclntst11.a
-rw-r--r-- 1 oracle oinstall 7899997 12-07 21:12 libnnz11.so
-rw-r--r-- 1 oracle oinstall 1863334 12-07 20:45 libocci11.a
lrwxrwxrwx 1 oracle oinstall 15 12-07 20:49 libocci.so -> libocci.so.11.1
-rwxr-xr-x 1 oracle oinstall 1260923 12-07 20:45 libocci.so.11.1
*/
//
// 2. 將 OCCI-11gR2-X64 目錄打包成 OCCI-11gR2-X64.tar.gz (下載),拷貝到客戶機器上.
//
// 3. 客戶機器上解壓 OCCI-11gR2-X64.tar.gz,例如目錄結構為:/home/zhankunlin/oracle/OCCI-11gR2-X64
//
// 4. 客戶機器上編譯OCCI程式,Makefile 可以按如下方式寫
//
/*
OCCI_HOME=/home/zhankunlin/oracle/OCCI-11gR2-X64
OCCI_INCLUDE_DIR=$(OCCI_HOME)/include
OCCI_LIBRARY_PATH=$(OCCI_HOME)/lib
# Attention: You must add "-lnnz11".
cppOracle:
g++ cppOrcl.cpp -o test -I$(OCCI_INCLUDE_DIR) -L$(OCCI_LIBRARY_PATH) -locci -lclntsh -lnnz11 <注意,必須加上 lnnz11連結libnnz11.so>
*/
//
// 5. 運行,首先設定 LD_LIBRARY_PATH 環境變數,然後執行程式
//
export LD_LIBRARY_PATH=/home/zhankunlin/oracle/OCCI-11gR2-X64/lib
./test
注意:
儘管編譯沒有問題,但是發現運行時有問題,報出異常錯誤,
“Error while trying to retrieve text for error ORA-01804”
可能與 Linux下非Oracle資料庫安裝使用者執行OCCI程式
提到的問題有關。