3 Autonomous Database Serverlessで使用するためのLinux向けOML4Pyクライアントのインストール

Linux用のOML4Pyクライアントをインストールして使用し、サーバーレスExadataインフラストラクチャ上のOracle Autonomous DatabaseでOML4Pyを操作できます。

オンプレミスのOML4Pyは、64ビットのプラットフォームでのみ稼働します。サポートされているプラットフォームは、「オンプレミスのOML4Pyのシステム要件」を参照してください。

次の手順では、Pythonのダウンロードとインストール、環境の構成、クライアント資格証明のインストールと管理、Oracle Instant ClientのインストールおよびOML4Pyクライアントのインストール方法を説明します。

  1. Python 3.12.0ソースをダウンロードして解凍します。

    wget https://www.python.org/ftp/python/3.12.0/Python-3.12.0.tar.xz
    tar xvf Python-3.12.0.tar.xz
  2. OML4Pyには、perl-Envlibffi-developensslopenssl-develtk-develxz-develzlib-develbzip2-develreadline-devellibuuid-develおよびncurses-develの各ライブラリが存在する必要があります。これらのパッケージをsudoまたはrootユーザーとしてインストールします:

    ノート:

    RPMはsudoまたはroot下にインストールする必要があります。
    sudo yum install perl-Env libffi-devel openssl openssl-devel tk-devel xz-devel zlib-devel bzip2-devel readline-devel libuuid-devel ncurses-devel
  3. Pythonをビルドするには、次のコマンドを入力します(PREFIXは、Python-3.12.0をインストールしたディレクトリです)。make altinstallを使用して、システム・デフォルトのPythonインストールのオーバーライドを回避します。

    export PREFIX=`pwd`/Python-3.12.0
    cd $PREFIX
    ./configure --prefix=$PREFIX --enable-shared
    
    make clean; make
    make altinstall
  4. 環境変数PYTHONHOMEを設定してPATHに追加し、環境変数LD_LIBRARY_PATHを設定します。

    export PYTHONHOME=$PREFIX
    export PATH=$PYTHONHOME/bin:$PATH
    export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH

    $PYTHONHOME/binディレクトリにシンボリック・リンクを作成します。これをpython3.12実行可能ファイルにリンクする必要があります。これは、次のコマンドを使用して実行できます:

    cd $PYTHONHOME/bin 
    ln -s python3.12 python3

    これで、python3スクリプトを使用してPythonを起動できます。

    python3

    最新バージョンがインストールされていない場合は、パッケージのインストール中にpipから警告が返されます。pipのバージョンをアップグレードしてこのような警告を回避できます。

    python3 -m pip install --upgrade pip
  5. 次のように、Autonomous Database用のOracle Instant Clientをインストールします。

    使用しているシステム用のOracle Instant Clientをダウンロードします。「Oracle Instant Client Downloads」ページに移動し、「Instant Client for Linux x86-64」を選択します。詳細は、「オンプレミス・データベース用のOracle Instant Client for Linuxのインストール」を参照してください。

    オンプレミス用のOracle Instant Clientをインストールする手順は、「オンプレミスOracleデータベース用のOML4Pyクライアントのインストール」を参照してください。

    クライアント・システムにRPMをインストールするためのrootアクセス権がある場合。あるいは、次の項に従って、zipファイル・インストーラをダウンロードしてファイルを解凍し、解凍したファイルの場所をLD_LIBRARY_PATHに追加することもできます。

    wget https://download.oracle.com/otn_software/linux/instantclient/1914000/oracle-instantclient19.14-basic-19.14.0.0.0-1.x86_64.rpm
    
    rpm -ivh oracle-instantclient19.14-basic-19.14.0.0.0-1.x86_64.rpm
    
    export LD_LIBRARY_PATH=/usr/lib/oracle/19.14/client64/lib:$LD_LIBRARY_PATH

    クライアント・システムにRPMをインストールするためのrootアクセス権がない場合。

    wget https://download.oracle.com/otn_software/linux/instantclient/1914000/instantclient-basic-linux.x64-19.14.0.0.0dbru.zip
    
    unzip instantclient-basic-linux.x64-19.14.0.0.0dbru.zip
    
    export LD_LIBRARY_PATH=/path/to/instantclient_19_4:$LD_LIBRARY_PATH
  6. Autonomous Databaseからクライアント資格証明(ウォレット)をダウンロードします。ウォレットの内容のためのディレクトリを作成します。ウォレットのzipファイルを新しく作成したディレクトリに解凍します。

    ノート:

    クライアント・ウォレットを使用したmTLS接続が必要です。TLS接続は現在サポートされていません。
    mkdir -p mywalletdir
    unzip Wallet.name.zip -d mywalletdir
    cd mywalletdir/
    ls
    README       ewallet.p12   ojdbc.properties  tnsnames.ora
    cwallet.sso  keystore.jks  sqlnet.ora        truststore.jks
    
  7. sqlnet.oraをウォレットの場所で更新します。プロキシ・ファイアウォールの内側で作業している場合は、SQLNET.USE_HTTPS_PROXY環境変数をonに設定します。

    
    WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="mywalletdir")))
    SSL_SERVER_DN_MATCH=yes
    SQLNET.USE_HTTPS_PROXY=on
  8. tnsnames.oraですべてのサービス・レベルにプロキシ・アドレス情報を追加し、すべてのサービス・レベルの接続プールを追加します。ファイアウォールの内側にいる場合は、tnsnames.oraですべてのサービス・レベルにプロキシ・アドレスおよびポート番号を入力します。次に示すように、AutoML接続プール用に3つの新しいエントリを追加する必要もあります。

    ノート:

    設定した期間内に接続を終了するファイアウォールがプロキシ・サーバーに含まれている場合、データベース接続も終了します。

    たとえば、myadb_medium_poolは、SERVER=POOLEDmyadb_mediumの対応する別名に追加された接続文字列の別の別名です。

    myadb_low = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

    myadb_medium = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

    myadb_high = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

    myadb_low_pool = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com)(SERVER=POOLED))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

    myadb_medium_pool = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com)(SERVER=POOLED))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

    myadb_high_pool = (description= (retry_count=20)(retry_delay=3)(address=(https_proxy=your proxy address here)(https_proxy_port=80)(protocol=tcps)(port=1522)(host=adb.us-sanjose-1.oraclecloud.com))(connect_data=(service_name=qtraya2braestch_myadb_medium.adb.oraclecloud.com)(SERVER=POOLED))(security=(ssl_server_cert_dn="CN=adb.us-sanjose-1.oraclecloud.com,OU=Oracle ADB SANJOSE,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))

  9. TNS_ADMIN環境変数を、ウォレット・ディレクトリに設定します。

    export TNS_ADMIN=mywalletdir
  10. OML4Pyライブラリの依存関係をインストールします。ここに示すバージョンは、オラクル社でテストおよびサポートしているバージョンです。

    • pip3.12 install pandas==2.1.1
    • pip3.12 install scipy==1.12.0
    • pip3.12 install matplotlib==3.7.2
    • pip3.12 install python-oracledb==2.0.1
    • pip3.12 install threadpoolctl==3.1.0
    • pip3.12 install joblib==1.2.0
    • pip3.12 install scikit-learn==1.2.1 --no-deps
    • pip3.12 install numpy==1.26.4
    • OML4Pyクライアントをインストールします。

      OML4Pyクライアントのインストールzipファイルをダウンロードするには、Oracle Technology Networkの「Oracle Machine Learning for Python Downloads」ページにアクセスします。詳細は、「オンプレミス・データベース用のLinux向けOML4Pyクライアントのインストール」を参照してください。

      unzip oml4py-client-linux-x86_64-2.0.zip
      perl -Iclient client/client.pl
      Oracle Machine Learning for Python 2.0 Client.
      
      Copyright (c) 2018, 2022 Oracle and/or its affiliates. All rights reserved.
      Checking platform .................. Pass
      Checking Python .................... Pass
      Checking dependencies .............. Pass
      Checking OML4P version ............. Pass
      Current configuration
        Python Version ................... 3.12.0
        PYTHONHOME ....................... /opt/Python-3.12.0
        Existing OML4P module version .... None
      
        Operation ........................ Install/Upgrade
      
      Proceed? [yes]
      Processing ./client/oml-2.0-cp312-cp312-linux_x86_64.whl
      Installing collected packages: oml
      Successfully installed oml-2.0
      
      Done
    • Pythonを起動し、omlライブラリをロードします。

      python3
      import oml
      
    • データベース接続を作成します。OMLクライアントはウォレットを使用して接続します。dsnおよびautoml引数をウォレットのtnsnamesの別名に設定します。

      oml.connect(user="oml_user", password="oml_user_password", dsn="myadb_medium", automl="myadb_medium_pool")

      Oracle Machine Learningのユーザー資格証明をクリア・テキストで公開せずに接続するために、ユーザーおよびパスワードのパラメータに空の文字列を指定するには、次のようにします。

      oml.connect(user="", password="", dsn="myadb_medium", automl="myadb_medium_pool")