OceanBaseデータベースのOracleテナントがDBLinkを使用してリモートのOracleデータベースのデータを読み書きする場合、OCIライブラリをインストールして設定する必要があります。
操作手順
OceanBase V4.2.1以降のバージョンでDBLink機能を使用してリモートOracleデータベースにアクセスする場合は、本記事を参照してクラスタ内のすべてのOBServerノードにOCI-12.2をインストールおよび設定する必要があります。
以下は、OBServerノードを例に、OCIライブラリのインストールと設定の手順を説明します。
Oracleデータベース公式サイトにアクセスし、対応するバージョンを選択して、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ノードを再起動せずに、その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ファイルを本記事の設定方法に従って設定するだけです。