Oracle數據庫各平臺的安裝與連接

原始鏈接:https://oracle.github.io/odpi/doc/installation.html

概述

要在自己的項目中使用ODPI-C,請從GitHub下載其源代碼。如果您希望將ODPI-C構建爲共享庫,則提供一個示例Makefile。否則,將ODPI-C源代碼添加到您的項目中。在Windows上,需要Visual Studio 2008或更高版本。在macOS上,需要Xcode 6或更高版本。在Linux上,需要GCC 4.4或更高版本。

使用ODPI-C的項目需要安裝Oracle客戶端庫。這些庫提供必要的網絡連接,允許應用程序訪問Oracle數據庫實例。它們還爲ODPI-C應用程序提供基本和高級的連接管理和數據功能。

最簡單的Oracle Client是免費的Oracle Instant Client。僅需要“ Basic”或“ Basic Light”軟件包。Oracle客戶端庫在任何Oracle數據庫安裝或完整的Oracle客戶端安裝中也可用。

ODPI-C在運行時顯式加載可用的Oracle Client庫。這樣一來,使用ODPI-C的代碼只能構建一次,然後使用可用的Oracle Client 19、18、12或11.2庫運行。如果找不到Oracle客戶端庫,則會引發錯誤“ DPI-1047:無法找到Oracle客戶端庫”。如果找到了Oracle客戶端庫,但無法確定版本,則會引發錯誤“ DPI-1072:不支持Oracle客戶端庫版本”。這可能是由於Oracle客戶端庫版本太舊(10g之前)或完全不受支持(例如Oracle Client 19和Windows 7)。

在Windows上,首先在ODPI-C庫(或應用程序二進制文件)所在的目錄中查找Oracle Client庫。如果找不到它們,則應將Oracle Client庫目錄包含在PATH環境變量中。

在非Windows平臺上,如果標準操作系統搜索路徑(例如,$LD_LIBRARY_PATH)中沒有Oracle Client ,則將對其 $ORACLE_HOME進行搜索。

以下各節說明如何確保在各種平臺上正確安裝和配置Oracle Client,以便ODPI-C能夠找到它。

ODPI-C已在Linux,Windows和macOS上進行了測試。其他平臺也應該工作,但未經測試。

Oracle客戶端和Oracle數據庫的互操作性

ODPI-C可以使用Oracle Client 19、18、12或11.2庫。

Oracle的標準客戶端-服務器網絡互操作性允許在不同版本的Oracle Client和Oracle Database之間建立連接。有關認證的配置,請參見Oracle支持的Doc ID 207303.1。總之,Oracle Client 19、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 Client版本,該函數 dpiConn_getServerVersion()可用於確定連接正在訪問哪個Oracle數據庫版本。然後可以使用它們來相應地調整應用程序行爲。嘗試使用某些特定的客戶機/服務器組合不支持的Oracle功能可能會導致運行時錯誤。這些包括:

  • 嘗試訪問當前Oracle客戶端庫不支持的屬性時,將顯示錯誤“ ORA-24315:非法屬性類型”
  • 嘗試將針對Oracle Database 12c的Oracle Client 11.2使用隱式結果時,您將收到錯誤“ ORA-29481:隱式結果無法返回給客戶端”
  • 嘗試使用Oracle Client 11.2獲取數組DML行數時,您將收到錯誤“ DPI-1050:Oracle Client庫必須爲12.1版或更高版本”

Linux

ODPI-C需要Oracle客戶端庫,這些庫可在Oracle Instant Client,Oracle數據庫安裝或完整的Oracle Client安裝中找到。這些庫必須爲32位或64位,與您的應用程序和ODPI-C庫匹配(如果單獨創建的話)。

在Linux上,ODPI-C首先使用標準庫搜索順序搜索名爲“ libclntsh.so”的。如果找不到此文件,它將搜索特定於版本的文件,例如“ libclntsh.so.19.1”。如果未找到庫,則將對其 $ORACLE_HOME/lib/libclntsh.so進行檢查。如果在該處找不到庫,則返回錯誤。

Oracle Instant Client Zip

要使用Oracle Instant Client zip文件運行ODPI-C應用程序:

  1. 下載Oracle 19、18、12或11.2“ Basic”或“ Basic Light” zip文件:64位32位,與您的應用程序的64位或32位體系結構匹配。

  2. 將軟件包解壓縮到應用程序可訪問的目錄中。例如:

    mkdir -p /opt/oracle
    cd /opt/oracle
    unzip instantclient-basic-linux.x64-19.3.0.0.0dbru.zip
    
  3. libaio以sudo或以root用戶身份安裝操作系統軟件包。例如:

    sudo yum install libaio
    

    在某些Linux發行版中,此軟件包被稱爲libaio1

  4. 如果計算機上沒有其他會受影響的Oracle軟件,則將Instant Client永久添加到運行時鏈接路徑。例如,使用sudo或以root用戶身份:

    sudo sh -c "echo /opt/oracle/instantclient_19_3 > /etc/ld.so.conf.d/oracle-instantclient.conf"
    sudo ldconfig
    

    或者,將環境變量設置LD_LIBRARY_PATH爲Instant Client版本的適當目錄。例如:

    export LD_LIBRARY_PATH=/opt/oracle/instantclient_19_3:$LD_LIBRARY_PATH
    
  5. 如果您打算共同找到可選的Oracle配置文件,如tnsnames.orasqlnet.oraoraaccess.xml與即時客戶端,然後創建一個network/admin子目錄,如果它不存在。例如:

    mkdir -p /opt/oracle/instantclient_12_2/network/admin
    

    這是與此即時客戶端鏈接的應用程序的默認Oracle配置目錄。

    或者,可以將Oracle配置文件放在另一個可訪問的目錄中。然後將環境變量 TNS_ADMIN設置爲該目錄名稱。

Oracle Instant Client RPM

要使用Oracle Instant Client RPM運行ODPI-C應用程序:

  1. 下載Oracle 19、18、12或11.2“ Basic”或“ Basic Light” RPM:64位32位,與您的應用程序體系結構相匹配。

    Oracle的百勝服務器的Oracle Linux的7即時客戶端的RPM ,並爲Oracle Linux 6的即時客戶端的RPM ,可以無需點擊後進行下載。

  2. 以sudo或以root用戶身份安裝下載的RPM。例如:

    sudo yum install oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm
    

    Yum將自動安裝所需的依賴項,例如libaio

    Oracle Linux用戶可以選擇自動進行下載和安裝。例如:

    yum -y install oracle-release-el7
    yum-config-manager --enable ol7_oracle_instantclient
    yum -y install oracle-instantclient19.3-basic
    
  3. 對於Instant Client 19 RPM,在安裝過程中會自動配置系統庫搜索路徑。

    對於較舊的版本,如果計算機上沒有其他受影響的Oracle軟件,則將Instant Client永久添加到運行時鏈接路徑。例如,使用sudo或以root用戶身份:

    sudo sh -c "echo /usr/lib/oracle/18.5/client64/lib > /etc/ld.so.conf.d/oracle-instantclient.conf"
    sudo ldconfig
    

    或者,對於版本18和更早版本,每個外殼都需要將環境變量LD_LIBRARY_PATH設置爲Instant Client版本的適當目錄。例如:

    export LD_LIBRARY_PATH=/usr/lib/oracle/18.5/client64/lib:$LD_LIBRARY_PATH
    
  4. 如果您打算共同找到可選的Oracle配置文件,如tnsnames.orasqlnet.oraoraaccess.xml與即時客戶端,然後創建一個network/admin子目錄下 lib/,如果它不存在。例如:

    sudo mkdir -p /usr/lib/oracle/12.2/client64/lib/network/admin
    

    這是與此即時客戶端鏈接的應用程序的默認Oracle配置目錄。

    或者,可以將Oracle配置文件放在另一個可訪問的目錄中。然後將環境變量 TNS_ADMIN設置爲該目錄名稱。

本地數據庫或完整的Oracle客戶端

ODPI-C應用程序可以使用本地Oracle數據庫中的Oracle Client 19、18、12或11.2庫,也可以使用完整的Oracle Client安裝。

這些庫必須爲32位或64位,與您的應用程序和ODPI-C庫匹配(如果單獨創建的話)。

  1. 通過運行Oracle環境腳本來設置必需的Oracle環境變量。例如:

    source /usr/local/bin/oraenv
    

    對於Oracle數據庫XE 11.2,運行:

    source /u01/app/oracle/product/11.2.0/xe/bin/oracle_env.sh
    
  2. 可選Oracle配置文件,如tnsnames.orasqlnet.oraoraaccess.xml可以放置在 $ORACLE_HOME/network/admin

    或者,可以將Oracle配置文件放在另一個可訪問的目錄中。然後將環境變量 TNS_ADMIN設置爲該目錄名稱。

Docker文件

通過將部署基於GitHub上的Instant Client Dockerfile,可以輕鬆地在Docker中使用ODPI-C應用程序。

要構建即時客戶端映像,請創建一個Dockerfile,例如:

FROM oraclelinux:7-slim

ARG release=19
ARG update=3

RUN  yum -y install oracle-release-el7 && \
     yum-config-manager --enable ol7_oracle_instantclient && \
     yum -y install oracle-instantclient${release}.${update}-basic && \
     rm -rf /var/cache/yum

然後運行:

docker build -t oracle/instantclient:19 .

新images可以用作您的應用程序的基礎。

Windows

ODPI-C需要Oracle客戶端庫,這些庫可在Oracle Instant Client,Oracle數據庫安裝或完整的Oracle Client安裝中找到。這些庫必須爲32位或64位,與您的應用程序和ODPI-C庫匹配(如果單獨創建的話)。

在Windows上,ODPI-C首先在包含ODPI-C庫(或應用程序)的目錄中查找Oracle客戶端庫“ OCI.dll”,然後使用標準庫搜索順序進行搜索

Oracle客戶端庫要求存在正確的Visual Studio可再發行組件。

Oracle Instant Client Zip

要使用Oracle Instant Client zip文件運行ODPI-C應用程序:

  1. 下載Oracle 19、18、12或11.2“ Basic”或“ Basic Light” zip文件:64位32位,與您的應用程序體系結構相匹配。

    請注意,Windows 7不支持19c。

  2. 將軟件包解壓縮到應用程序可訪問的目錄中。例如解壓縮 instantclient-basic-windows.x64-19.3.0.0.0dbru.zipC:\oracle\instantclient_19_3

  3. 將此目錄添加到PATH環境變量。例如,在Windows 7上,PATH在控制面板->系統->高級系統設置->高級->環境變量->系統變量-> PATH中進行更新。Instant Client目錄必須出現在PATH任何其他Oracle目錄之前。

    重新啓動所有打開的命令提示符窗口。

    爲了避免干擾需要其他Oracle Client版本的現有工具,而不是更新系統範圍的PATH變量,您可能希望編寫一個set的批處理文件,PATH例如:

    REM mywrapper.bat
    SET PATH=C:\oracle\instantclient_19_3;%PATH%
    myapp %*
    

    每次您要運行應用程序時都調用此批處理文件。

    或者SETPATH在運行python之前,在每個命令提示符窗口中使用更改您的代碼。

    另一個選擇是將解壓縮後的Instant Client文件移動到與ODPIC.DLL相同的目錄(如果將ODPI-C編譯到應用程序中,則移動到應用程序二進制文件的目錄中)。如果執行此操作,則PATH無需設置。

  4. 如果打算將可選的Oracle配置文件(例如tnsnames.orasqlnet.oraoraaccess.xml與Instant Client一起network\admin放置,請創建一個子目錄(如果它不存在),例如 C:\oracle\instantclient_19_3\network\admin

    這是與此即時客戶端鏈接的應用程序的默認Oracle配置目錄。

    或者,可以將Oracle配置文件放在另一個可訪問的目錄中。然後將環境變量 TNS_ADMIN設置爲該目錄名稱。

如果希望將Instant Client與應用程序打包在一起,則可以將Instant Client庫移至與ODPI-C庫(或應用程序)相同的目錄。 有關所需的最少數量的Instant Client文件集,請參考Instant Client文檔。無需設置PATH。這僅適用於Windows。

本地數據庫或完整的Oracle客戶端

Oracle庫必須爲32位或64位,與您的應用程序和ODPI-C庫匹配(如果單獨創建的話)。

要使用本地Oracle數據庫(或完整的Oracle客戶端)19、18、12或11.2安裝中的客戶端庫運行ODPI-C應用程序,請執行以下操作:

  1. 設置環境變量PATH以包含包含OCI.dll的路徑(如果尚未設置)。例如,在Windows 7上, PATH在控制面板->系統->高級系統設置->高級->環境變量->系統變量-> PATH中進行更新。

    重新啓動所有打開的命令提示符窗口。

  2. 可選Oracle配置文件,如tnsnames.orasqlnet.oraoraaccess.xml可以放置在 network/adminOracle軟件的子目錄。

    或者,可以將Oracle配置文件放在另一個可訪問的目錄中。然後將環境變量 TNS_ADMIN設置爲該目錄名稱。

MACOS

ODPI-C需要Oracle客戶端庫,可在macOS的Oracle Instant Client中找到。

在macOS上,ODPI-C首先使用標準庫搜索順序搜索名爲“ libclntsh.dylib”的。如果沒有找到,它將在返回錯誤之前搜索“ libclntsh.dylib.18.1”,“ libclntsh.dylib.12.1”,然後搜索“ libclntsh.dylib.11.1”。

Oracle Instant Client Zip

要使用Oracle Instant Client zip文件運行ODPI-C應用程序:

  1. 此處下載19、18、12或11.2“ Basic”或“ Basic Light” zip文件。選擇與您的應用程序體系結構匹配的64位或32位程序包。大多數應用程序使用64位。

  2. 將包解壓縮到應用程序可訪問的單個目錄中。例如:

    mkdir -p /opt/oracle
    unzip instantclient-basic-macos.x64-19.3.0.0.0dbru.zip
    
  3. 添加鏈接$HOME/lib/usr/local/lib使應用程序能夠找到該庫。例如:

    mkdir ~/lib
    ln -s /opt/oracle/instantclient_19_3/libclntsh.dylib ~/lib/
    

    或者,複製所需的OCI庫。例如:

    mkdir ~/lib
    cp /opt/oracle/instantclient_19_3/{libclntsh.dylib.19.1,libclntshcore.dylib.19.1,libons.dylib,libnnz12.dylib,libociei.dylib} ~/lib/
    

    對於Instant Client 11.2,必須複製OCI庫。例如:

    mkdir ~/lib
    cp /opt/oracle/instantclient_11_2/{libclntsh.dylib.11.1,libnnz11.dylib,libociei.dylib} ~/lib/
    
  4. 如果您打算共同找到可選的Oracle配置文件,如tnsnames.orasqlnet.oraoraaccess.xml與即時客戶端,然後創建一個network/admin子目錄,如果它不存在。例如:

    mkdir -p /opt/oracle/instantclient_12_2/network/admin
    

    這是與此即時客戶端鏈接的應用程序的默認Oracle配置目錄。

    或者,可以將Oracle配置文件放在另一個可訪問的目錄中。然後將環境變量 TNS_ADMIN設置爲該目錄名稱。

其他平臺

要在其他平臺(例如Solaris和AIX)上運行ODPI-C應用程序,請遵循與Linux Instant Client zip文件或本地數據庫相同的一般說明。將Oracle庫添加到適當的庫路徑變量,例如LD_LIBRARY_PATH 在Solaris或LIBPATHAIX上。

其它的安裝教程參考;
python cx_Oracle模塊的安裝和使用(linux環境)
Python(cx_Oracle ,ibm_db)模塊離線安裝

python2.7 環境安裝pandas
numpy https://pypi.org/project/numpy/1.7.1/#files
pandas https://pypi.org/project/pandas/0.19.2/#files

pip install numpy==1.7.1
pip install pandas==0.19.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章