3 Autonomous Database Serverlessで使用するためのLinux向けOML4Pyクライアントのインストール
Linux用のOML4Pyクライアントをインストールして使用し、サーバーレスExadataインフラストラクチャ上のOracle Autonomous DatabaseでOML4Pyを操作できます。
オンプレミスのOML4Pyは、64ビットのプラットフォームでのみ稼働します。サポートされているプラットフォームは、「オンプレミスのOML4Pyのシステム要件」を参照してください。
次の手順では、Pythonのダウンロードとインストール、環境の構成、クライアント資格証明のインストールと管理、Oracle Instant ClientのインストールおよびOML4Pyクライアントのインストール方法を説明します。
-
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
-
OML4Pyには、
perl-Env
、libffi-devel
、openssl
、openssl-devel
、tk-devel
、xz-devel
、zlib-devel
、bzip2-devel
、readline-devel
、libuuid-devel
およびncurses-devel
の各ライブラリが存在する必要があります。これらのパッケージを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
-
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
-
環境変数
PYTHONHOME
を設定してPATH
に追加し、環境変数LD_LIBRARY_PATH
を設定します。export PYTHONHOME=$PREFIX export PATH=$PYTHONHOME/bin:$PATH export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH
$PYTHONHOME/bin
ディレクトリにシンボリック・リンクを作成します。これをPython 3.12.0実行可能ファイルにリンクする必要があります。これは、次のコマンドを使用して実行できます:cd $PYTHONHOME/bin ln -s python3.12 python3
これで、
python3
スクリプトを使用してPythonを起動できます。python3
最新バージョンがインストールされていない場合は、パッケージのインストール中にpipから警告が返されます。pipのバージョンをアップグレードしてこのような警告を回避できます。
python3 -m pip install --upgrade pip
-
次のように、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アクセス権がない場合。
https://download.oracle.com/otn_software/linux/instantclient/2340000/instantclient-basic-linux.x64-23.4.0.24.05dbru.zip instantclient-basic-linux.x64-23.4.0.24.05dbru.zip export LD_LIBRARY_PATH=/path/to/instantclient_23_4:$LD_LIBRARY_PATH
-
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
-
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
-
tnsnames.ora
ですべてのサービス・レベルにプロキシ・アドレス情報を追加し、すべてのサービス・レベルの接続プールを追加します。ファイアウォールの内側にいる場合は、tnsnames.ora
ですべてのサービス・レベルにプロキシ・アドレスおよびポート番号を入力します。次に示すように、AutoML接続プール用に3つの新しいエントリを追加する必要もあります。ノート:
設定した期間内に接続を終了するファイアウォールがプロキシ・サーバーに含まれている場合、データベース接続も終了します。たとえば、
myadb_medium_pool
は、SERVER=POOLED
がmyadb_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")))
-
TNS_ADMIN
環境変数を、ウォレット・ディレクトリに設定します。export TNS_ADMIN=mywalletdir
-
OML4Pyライブラリの依存関係をインストールします。ここに示すバージョンは、オラクル社でテストおよびサポートしているバージョンです。
-
pip3.12 install pandas==2.1.1
-
pip3.12 install scipy==1.12.0
-
pip3.12 install matplotlib==3.8.4
-
pip3.12 install oracledb==2.2.0
-
pip3.12 install threadpoolctl==3.1.0
-
pip3.12 install joblib==1.2.0
-
pip3.12 install scikit-learn==1.4.1.post1
-
pip3.12 install setuptools==68.0.0
-
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")
-