要在您本身的項目中使用ODPI-C,請從GitHub下載其源代碼。若是您但願將ODPI-C構建爲共享庫,則會提供示例Makefile。不然,將ODPI-C源代碼添加到項目中。在Windows上,須要Visual Studio 2008或更高版本。在macOS上,須要Xcode 6或更高版本。在Linux上,須要GCC 4.4或更高版本。html
使用ODPI-C的項目須要安裝Oracle客戶端庫。這些庫提供必要的網絡鏈接,容許應用程序訪問Oracle數據庫實例。它們還爲ODPI-C應用程序提供基本和高級鏈接管理和數據功能。java
最簡單的Oracle客戶端是免費的Oracle Instant Client。只須要「基本」或「基本燈」包。任何Oracle數據庫安裝或完整Oracle客戶端安裝中也提供Oracle客戶端庫。linux
ODPI-C在運行時顯式加載可用的Oracle客戶端庫。這容許使用ODPI-C的代碼只構建一次,而後使用可用的Oracle Client 18,12或11.2庫運行。若是未找到Oracle客戶端庫,則會引起錯誤「DPI-1047:沒法加載Oracle客戶端庫」。git
在Windows上,首先在ODPI-C庫(或應用程序二進制文件)所在的同一目錄中查找Oracle客戶端庫。若是找不到它們,則Oracle客戶端庫目錄應包含在PATH
環境變量中。github
在非Windows平臺上,若是沒有Oracle客戶端位於標準操做系統搜索路徑(例如$LD_LIBRARY_PATH
)中,則 $ORACLE_HOME
搜索。sql
如下各節說明如何確保在各類平臺上正確安裝和配置Oracle客戶端,以便ODPI-C可以找到它。數據庫
ODPI-C已經在Linux,Windows和macOS上進行了測試。其餘平臺也應該有效,但還沒有通過測試。windows
ODPI-C可使用Oracle Client 18,12或11.2庫。服務器
Oracle的標準客戶端 - 服務器網絡互操做性容許不一樣版本的Oracle客戶端和Oracle數據庫之間的鏈接。有關認證配置,請參閱Oracle Support的Doc ID 207303.1。總之,Oracle Client 18和12.2能夠鏈接到Oracle Database 11.2或更高版本。Oracle Client 12.1能夠鏈接到Oracle Database 10.2或更高版本。Oracle Client 11.2能夠鏈接到Oracle Database 9.2或更高版本。建立鏈接的技術限制可能更靈活。例如,Oracle Client 12.2能夠成功鏈接到Oracle Database 10.2。網絡
因爲單個ODPI-C二進制文件可使用多個客戶端版本並訪問多個數據庫版本,所以在您的預期發佈環境中測試應用程序很是重要。較新的Oracle客戶端支持新功能,例如12.1或更高版本客戶端可用的oraaccess.xml外部配置文件,會話池改進,18或更高版本客戶端的呼叫超時以及其餘加強功能。
該函數dpiContext_getClientVersion()
可用於肯定正在使用的Oracle客戶端版本,該函數 dpiConn_getServerVersion()
可用於肯定鏈接正在訪問哪一個Oracle數據庫版本。而後可使用它們來相應地調整應用程序行爲。嘗試使用特定客戶端/服務器組合不支持的某些Oracle功能可能會致使運行時錯誤。這些包括:
- 嘗試訪問當前Oracle客戶端庫不支持的屬性時,您將收到錯誤「ORA-24315:非法屬性類型」
- 嘗試對Oracle Database 12c使用Oracle Client 11.2的隱式結果時,您將收到錯誤「ORA-29481:沒法將隱式結果返回給客戶端」
- 嘗試使用Oracle Client 11.2獲取陣列DML行計數時,您將收到錯誤「DPI-1050:Oracle客戶端庫必須爲12.1或更高版本」
ODPI-C須要Oracle客戶端庫,能夠在Oracle Instant Client或Oracle數據庫安裝中找到,也能夠在完整的Oracle客戶端安裝中找到。這些庫必須是32位或64位,與您的應用程序和ODPI-C庫(若是單首創建)匹配。
在Linux上,ODPI-C首先使用標準庫搜索順序搜索名爲「libclntsh.so」的庫。若是找不到,則會搜索「libclntsh.so.18.1」,「libclntsh.so.12.1」,而後搜索「libclntsh.so.11.1」。若是找不到庫,則$ORACLE_HOME/lib/libclntsh.so
檢查。若是沒有找到庫,則返回錯誤。
使用Oracle Instant Client zip文件運行ODPI-C應用程序:
下載Oracle 18,12或11.2「Basic」或「Basic Light」zip文件:64位 或32位,與您的應用程序架構相匹配。
將程序包解壓縮到應用程序可訪問的單個目錄中。例如:
mkdir -p /opt/oracle cd /opt/oracle unzip instantclient-basic-linux.x64-12.2.0.1.0.zip
libaio
使用sudo或root用戶安裝軟件包。例如:
sudo yum install libaio
在某些Linux發行版上,會調用此包libaio1
。
若是計算機上沒有其餘Oracle軟件會受到影響,請將Instant Client永久添加到運行時連接路徑。例如,使用sudo或root用戶:
sudo sh -c "echo /opt/oracle/instantclient_12_2 > /etc/ld.so.conf.d/oracle-instantclient.conf" sudo ldconfig
或者,將環境變量設置LD_LIBRARY_PATH
爲Instant Client版本的相應目錄。例如:
export LD_LIBRARY_PATH=/opt/oracle/instantclient_12_2:$LD_LIBRARY_PATH
若是您打算同定位可選的Oracle配置文件,如tnsnames.ora
,sqlnet.ora
或oraaccess.xml
與即時客戶端,而後建立一個network/admin
子目錄,若是它不存在。例如:
mkdir -p /opt/oracle/instantclient_12_2/network/admin
這是與此Instant Client連接的應用程序的默認Oracle配置目錄。
或者,Oracle配置文件能夠放在另外一個可訪問的目錄中。而後將環境變量 TNS_ADMIN
設置爲該目錄名稱。
使用Oracle Instant Client RPM運行ODPI-C應用程序:
下載適用於您的應用程序架構的Oracle 18,12或11.2「Basic」或「Basic Light」RPM:64位 或32位。
使用sudo或root用戶安裝下載的RPM。例如:
sudo yum install oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm
Yum會自動安裝所需的依賴項,例如libaio
。
若是計算機上沒有其餘Oracle軟件會受到影響,請將Instant Client永久添加到運行時連接路徑。例如,使用sudo或root用戶:
sudo sh -c "echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf" sudo ldconfig
或者,將環境變量設置LD_LIBRARY_PATH
爲Instant Client版本的相應目錄。例如:
export LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib:$LD_LIBRARY_PATH
若是您打算共同定位可選的Oracle配置文件,例如tnsnames.ora
,sqlnet.ora
或oraaccess.xml
使用Instant Client,則network/admin
在lib/
其下建立一個子目錄 (若是它不存在)。例如:
sudo mkdir -p /usr/lib/oracle/12.2/client64/lib/network/admin
這是與此Instant Client連接的應用程序的默認Oracle配置目錄。
或者,Oracle配置文件能夠放在另外一個可訪問的目錄中。而後將環境變量 TNS_ADMIN
設置爲該目錄名稱。
ODPI-C應用程序可使用本地Oracle數據庫或完整Oracle客戶端安裝中的Oracle Client 18,12或11.2庫。
這些庫必須是32位或64位,與您的應用程序和ODPI-C庫(若是單首創建)匹配。
經過運行Oracle環境腳原本設置所需的Oracle環境變量。例如:
source /usr/local/bin/oraenv
對於Oracle Database XE 11.2,運行:
source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
可選的Oracle配置文件,例如tnsnames.ora
, sqlnet.ora
或者oraaccess.xml
能夠放在其中 $ORACLE_HOME/network/admin
。
或者,Oracle配置文件能夠放在另外一個可訪問的目錄中。而後將環境變量 TNS_ADMIN
設置爲該目錄名稱。
ODPI-C須要Oracle客戶端庫,能夠在Oracle Instant Client或Oracle數據庫安裝中找到,也能夠在完整的Oracle客戶端安裝中找到。這些庫必須是32位或64位,與您的應用程序和ODPI-C庫(若是單首創建)匹配。
在Windows上,ODPI-C首先在包含ODPI-C庫(或應用程序)的目錄中查找Oracle客戶端庫「OCI.dll」,而後使用標準庫搜索順序進行搜索。
Oracle客戶端庫須要存在正確的Visual Studio可再發行組件。
- Oracle 18和12.2須要VS 2013
- Oracle 12.1須要VS 2010
- Oracle 11.2須要VS 2005 64位或VS 2005 32位
使用Oracle Instant Client zip文件運行ODPI-C應用程序:
下載Oracle 18,12或11.2「Basic」或「Basic Light」zip文件:64位 或32位,與您的應用程序架構相匹配。
例如,將程序包解壓縮到應用程序可訪問的單個目錄中C:\oracle\instantclient_12_2
。
設置環境變量PATH
以包括您在步驟2中建立的路徑。例如,在Windows 7上,PATH
在控制面板 - >系統 - >高級系統設置 - >高級 - >環境變量 - >系統變量 - >路徑中更新。
若是您打算共同定位可選的Oracle配置文件,例如tnsnames.ora
,sqlnet.ora
或oraaccess.xml
與Instant Client,則建立network\admin
子目錄(若是它不存在),例如 C:\oracle\instantclient_12_2\network\admin
。
這是與此Instant Client連接的應用程序的默認Oracle配置目錄。
或者,Oracle配置文件能夠放在另外一個可訪問的目錄中。而後將環境變量 TNS_ADMIN
設置爲該目錄名稱。
若是要將Instant Client與應用程序打包在一塊兒,能夠將Instant Client庫移動到與ODPI-C庫(或應用程序)相同的目錄中。 有關所需的最小Instant Client文件集,請參閱Instant Client文檔。沒有必要設置PATH
。這僅適用於Windows。
Oracle庫必須是32位或64位,與您的應用程序和ODPI-C庫(若是單首創建)匹配。
要使用本地Oracle數據庫(或完整Oracle客戶端)18,12或11.2安裝中的客戶端庫來運行ODPI-C應用程序:
設置環境變量PATH
以包含包含OCI.dll的路徑(若是還沒有設置)。例如,在Windows 7上, PATH
在控制面板 - >系統 - >高級系統設置 - >高級 - >環境變量 - >系統變量 - >路徑中更新。
可選的Oracle配置文件,例如tnsnames.ora
, sqlnet.ora
或者oraaccess.xml
能夠放在network/admin
Oracle軟件的 子目錄中。
或者,Oracle配置文件能夠放在另外一個可訪問的目錄中。而後將環境變量 TNS_ADMIN
設置爲該目錄名稱。