OceanBaseデータベースのOracleテナントがDBLinkを介してリモートのOracleデータベースのデータを読み書きする場合、OCIライブラリをインストールして設定する必要があります。
手順
OceanBase V4.2.1以降のバージョンでDBLink機能を使用してリモートのOracleデータベースにアクセスする場合は、このドキュメントを参照して、クラスタ内のすべてのOBServerノードにOCI-12.2をインストールおよび設定する必要があります。
以下では、OBServerノード1台を例に、OCIライブラリのインストールと設定の手順を説明します。
Oracleデータベースの公式Webサイトにアクセスし、対応するバージョンを選択して、OCIライブラリをダウンロードします。
adminユーザーでOBServerノードにログインし、ダウンロードしたRPMパッケージをOBServerノードにコピーして、以下のコマンドを実行してOCIライブラリをインストールします。sudo rpm -ivh oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpmOCIライブラリのインストールが完了したら、以下のコマンドを実行して、OCIライブラリのインストールディレクトリを取得します。
rpm -ql oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64結果は次のとおりです:
/usr/lib/oracle/12.2/client64/bin/adrci /usr/lib/oracle/12.2/client64/bin/genezi /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1 /usr/lib/oracle/12.2/client64/lib/libclntshcore.so.12.1 /usr/lib/oracle/12.2/client64/lib/libipc1.so /usr/lib/oracle/12.2/client64/lib/libmql1.so /usr/lib/oracle/12.2/client64/lib/libnnz12.so /usr/lib/oracle/12.2/client64/lib/libocci.so.12.1 /usr/lib/oracle/12.2/client64/lib/libociei.so /usr/lib/oracle/12.2/client64/lib/libocijdbc12.so /usr/lib/oracle/12.2/client64/lib/libons.so /usr/lib/oracle/12.2/client64/lib/liboramysql12.so /usr/lib/oracle/12.2/client64/lib/ojdbc8.jar /usr/lib/oracle/12.2/client64/lib/xstreams.jarOCIライブラリを設定します。
OceanBaseデータベースノードのインストールディレクトリに
libディレクトリがあるか確認します。該当ディレクトリがない場合は、OceanBaseデータベースノードのインストールディレクトリにlibフォルダを作成して権限を付与する必要があります。OceanBaseデータベースノードのインストールディレクトリにlibディレクトリが既に存在する場合は、この操作を無視してください。本記事では、OceanBaseデータベースノードのインストールディレクトリを
/home/admin/oceanbaseと仮定します。sudo mkdir /home/admin/oceanbase/libsudo chown admin:admin -R /home/admin/oceanbase/libOCIライブラリのインストールディレクトリに移動します。
cd /usr/lib/oracle/12.2/client64/lib/OCIライブラリのインストールディレクトリから、
libclntshcore.so.12.1、libclntsh.so.12.1、libipc1.so、libmql1.so、libnnz12.so、libocci.so.12.1、libociei.so、libocijdbc12.so、libons.so、liboramysql12.soの10個の必要なライブラリファイルを、OceanBaseデータベースのインストールディレクトリにコピーします。ここで、
$DIRはOceanBaseデータベースノードのインストールディレクトリに置き換える必要があります。本記事では、OceanBaseデータベースノードのインストールディレクトリを/home/admin/oceanbaseと仮定します。注意
OCIインストールディレクトリ内の10個のsoファイルをOceanBaseデータベースノードのインストールディレクトリにコピーした後、インストールディレクトリ内で
libclntsh.so.12.1ファイルをコピーしてlibclntsh.soという名前に変更します(または、インストールディレクトリ内にインストールディレクトリ内のlibclntsh.so.12.1ライブラリファイルを指すソフトリンクを作成し、そのソフトリンクをlibclntsh.soと命名することもできます)。cp libclntshcore.so.12.1 $DIR/libcp libclntsh.so.12.1 $DIR/libcp libclntsh.so.12.1 $DIR/lib/libclntsh.socp libipc1.so $DIR/libcp libmql1.so $DIR/libcp libnnz12.so $DIR/libcp libocci.so.12.1 $DIR/libcp libociei.so $DIR/libcp libocijdbc12.so $DIR/libcp libons.so $DIR/libcp liboramysql12.so $DIR/lib
LD_LIBRARY_PATH環境変数を設定します。OceanBaseデータベースが
libclntsh.soを読み込む際、libclntsh.soは他のライブラリファイルに依存しており、LD_LIBRARY_PATHのパスから関連するライブラリファイルを検索する必要があるため、LD_LIBRARY_PATHにOCIライブラリが配置されているディレクトリを設定する必要があります。例えば、本記事のOCIライブラリのディレクトリは
home/admin/oceanbase/libです。設定例は以下のとおりです:export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/admin/oceanbase/lib:"注意
環境変数を設定する際、
/home/admin/oceanbase/libの後のコロン(:)は必ず追加してください。OCIライブラリの設定と
LD_LIBRARY_PATH環境変数の設定が完了した後、OBServerノードが依然としてOCIのすべてのsoファイルを正しく読み込めない場合は、OBServerノードを再起動する必要があります。OBServerノードの再起動手順の詳細については、ノードの再起動を参照してください。OBServerノードの再起動が困難な場合は、上記の
$DIR/lib/ディレクトリにある10個のOCIライブラリsoファイルをすべてmvコマンドで/lib64ディレクトリに移動し、$DIR/lib/ディレクトリにはlibclntsh.soファイルのみを残すことで、OBServerノードを再起動せずにOCIライブラリを読み込ませることができます。cd /home/admin/oceanbase/libmv libclntshcore.so.12.1 /lib64mv libclntsh.so.12.1 /lib64mv libipc1.so /lib64mv libmql1.so /lib64mv libnnz12.so /lib64mv libocci.so.12.1 /lib64mv libociei.so /lib64mv libocijdbc12.so /lib64mv libons.so /lib64mv liboramysql12.so /lib64
設定後の注意事項
クラスタ内のすべてのOBServerノードにOCIライブラリを設定した後、以下の点にご注意ください:
OceanBaseデータベースはOCIライブラリをロードする際に他の依存ライブラリのサポートが必要となるため、OCIライブラリの設定後、設定したディレクトリ(このドキュメントでは
home/admin/oceanbase/libに配置されます)でlddコマンドを使用して、OCIライブラリlibclntsh.soがLinux環境のどのようなライブラリに依存しているかを確認できます。必要な依存ライブラリが欠けていることを確認した場合は、テクニカルサポートにお問い合わせいただき、該当する依存ライブラリの設定を支援いたします。ldd libclntsh.sox86プラットフォームでは、V4.2.1以降のバージョンのOBServerノードには
oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpmのOCIライブラリファイルのみを設定できます。より高いまたは低いバージョンのOCIライブラリ、または複数のバージョンのOCIライブラリのsoファイルを混在させて使用すると、OBServerノードでプロセスがクラッシュするリスクが生じる可能性があります。x86プラットフォームでは、V4.2.1(このバージョンを除く)以前のバージョンのOBServerノードにはOCI-11.2を設定する必要があります。具体的な操作については、OCI-11.2のインストールと設定を参照してください。
ARMプラットフォームでは、すべてのバージョンのOBServerノードには
oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch64.rpmのOCIライブラリファイルのみを設定できます。oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch64.rpmをダウンロードするには、oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch64.rpmをクリックしてください。ARMプラットフォームでOCIライブラリを設定する方法はx86プラットフォームと同様です。
oracle-instantclient19.10-basic-19.10.0.0.0-1.aarch64.rpmに含まれるすべてのsoファイルを、本文の設定方法に従って設定するだけです。