Db2ConnectorのDb2Client libの設定
DB2コネクターで外部DBへ接続するときだけ指定したDb2クライアントのライブラリを読むような設定をする機能がDB2コネクターの「DB2クライアント・ライブラリー・ファイル」の機能になります。
しかし、これにはジョブの修正が伴います。
開発部門に確認したところ、dsenvファイルの「LD_LIBRARY_PATH」にあるDB2ライブラリパスはリポジトリDB(XMETADB)へのアクセスで使用されているものではなく(XMETADBへのアクセスにはJavaのJDBCドライバーが使用されています)、IISのインストーラーがバンドルされたDB2を同時に導入する際に自動的に追加するようですので、「LD_LIBRARY_PATH」の変更によってリポジトリ層へのアクセスに影響を与えることはないと考えます。
ただし、こちらで製品サポート環境で試験したところ、「LD_LIBRARY_PATH」に「11.5.6のDB2ライブラリパス」と「11.5.9のDB2ライブラリパス」の両方が存在していると、「DB2クライアント・ライブラリー・ファイル」使用時にライブラリの競合によりエラーが発生するケースがありましたので、複数のバージョンのDB2ライブラリパスをdsenv内のLD_LIBRARY_PATHに指定するのは避けた方が良いかもしれません。
用途/目的によって、以下のように使い分けるのはいかがでしょうか?
1. DB2コネクターでリモートDB2へのアクセスにDB2クライアント(11.5.9)のみを使用したい場合(a~cのいずれか)
a) dsenvのLD_LIBRARY_PATHに11.5.9用のDB2ライブラリパス「/home/db2dpfc/sqllib/lib64」のみを指定する。
b) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64) を外し、DB2コネクターの「DB2クライアント・ライブラリー・ファイル」フィールドに11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する。
c) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64) を外し、環境変数LD_LIBRARY_PATHに、11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する。
2. DB2コネクターでリモートDB2へのアクセスにDB2クライアント(11.5.6)のみを使用したい場合(a~cのいずれか)
a) dsenvのLD_LIBRARY_PATHに11.5.6用のDB2ライブラリパス「/opt/IBM/db2/V11/lib64」のみを指定する。
b) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64) を外し、DB2コネクターの「DB2クライアント・ライブラリー・ファイル」フィールドに11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定する。
c) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64)を外し、環境変数LD_LIBRARY_PATHに、11.5.9用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定する
3. DB2コネクターでリモートDB2へのアクセスの際にDB2クライアント(11.5.9)でもDB2クライアント(11.5.6)でもどちらでもアクセスできるようにしたい場合(a~bのいずれか)
a) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64/, /opt/IBM/db2/V11/lib64)を外し、DB2コネクターの「DB2クライアント・ライブラリー・ファイル」フィールドに11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定するか、もしくは、11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する
b) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64/, /opt/IBM/db2/V11/lib64)を外し、環境変数LD_LIBRARY_PATHに、11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定するか、もしくは、11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する
DB2コネクターでリモートDB2にDB2クライアント(11.5.9)だけで接続する必要があるのであれば、dsenv内の「LD_LIBRARY_PATH」の11.5.6のDB2ライブラリパス(/opt/IBM/db2/V11/lib64)を11.5.9のDB2ライブラリパス(/home/db2dpfc/sqllib/lib64)に変更するのが簡単です(dsenvの変更後はエンジンの再起動が必要です)。
DataStageのジョブを修正せず、また、「LD_LIBRARY_PATH」のDataStage側のライブラリファイルが読めなくなるような変更もせずにDB2コネクターで外部DBへ接続するときだけ指定したDb2クライアントのライブラリを読むような設定をするには、3-b)の方法を適用して、dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64)を外し、プロジェクトレベルの環境変数LD_LIBRARY_PATHに、11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定するか、
しかし、これにはジョブの修正が伴います。
開発部門に確認したところ、dsenvファイルの「LD_LIBRARY_PATH」にあるDB2ライブラリパスはリポジトリDB(XMETADB)へのアクセスで使用されているものではなく(XMETADBへのアクセスにはJavaのJDBCドライバーが使用されています)、IISのインストーラーがバンドルされたDB2を同時に導入する際に自動的に追加するようですので、「LD_LIBRARY_PATH」の変更によってリポジトリ層へのアクセスに影響を与えることはないと考えます。
ただし、こちらで製品サポート環境で試験したところ、「LD_LIBRARY_PATH」に「11.5.6のDB2ライブラリパス」と「11.5.9のDB2ライブラリパス」の両方が存在していると、「DB2クライアント・ライブラリー・ファイル」使用時にライブラリの競合によりエラーが発生するケースがありましたので、複数のバージョンのDB2ライブラリパスをdsenv内のLD_LIBRARY_PATHに指定するのは避けた方が良いかもしれません。
用途/目的によって、以下のように使い分けるのはいかがでしょうか?
1. DB2コネクターでリモートDB2へのアクセスにDB2クライアント(11.5.9)のみを使用したい場合(a~cのいずれか)
a) dsenvのLD_LIBRARY_PATHに11.5.9用のDB2ライブラリパス「/home/db2dpfc/sqllib/lib64」のみを指定する。
b) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64) を外し、DB2コネクターの「DB2クライアント・ライブラリー・ファイル」フィールドに11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する。
c) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64) を外し、環境変数LD_LIBRARY_PATHに、11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する。
2. DB2コネクターでリモートDB2へのアクセスにDB2クライアント(11.5.6)のみを使用したい場合(a~cのいずれか)
a) dsenvのLD_LIBRARY_PATHに11.5.6用のDB2ライブラリパス「/opt/IBM/db2/V11/lib64」のみを指定する。
b) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64) を外し、DB2コネクターの「DB2クライアント・ライブラリー・ファイル」フィールドに11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定する。
c) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64)を外し、環境変数LD_LIBRARY_PATHに、11.5.9用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定する
3. DB2コネクターでリモートDB2へのアクセスの際にDB2クライアント(11.5.9)でもDB2クライアント(11.5.6)でもどちらでもアクセスできるようにしたい場合(a~bのいずれか)
a) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64/, /opt/IBM/db2/V11/lib64)を外し、DB2コネクターの「DB2クライアント・ライブラリー・ファイル」フィールドに11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定するか、もしくは、11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する
b) dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64/, /opt/IBM/db2/V11/lib64)を外し、環境変数LD_LIBRARY_PATHに、11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定するか、もしくは、11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定する
DB2コネクターでリモートDB2にDB2クライアント(11.5.9)だけで接続する必要があるのであれば、dsenv内の「LD_LIBRARY_PATH」の11.5.6のDB2ライブラリパス(/opt/IBM/db2/V11/lib64)を11.5.9のDB2ライブラリパス(/home/db2dpfc/sqllib/lib64)に変更するのが簡単です(dsenvの変更後はエンジンの再起動が必要です)。
DataStageのジョブを修正せず、また、「LD_LIBRARY_PATH」のDataStage側のライブラリファイルが読めなくなるような変更もせずにDB2コネクターで外部DBへ接続するときだけ指定したDb2クライアントのライブラリを読むような設定をするには、3-b)の方法を適用して、dsenvのLD_LIBRARY_PATHからすべてのDB2ライブラリパス(/home/db2dpfc/sqllib/lib64, /opt/IBM/db2/V11/lib64)を外し、プロジェクトレベルの環境変数LD_LIBRARY_PATHに、11.5.6用の「/opt/IBM/db2/V11/lib64/libdb2.so」を指定するか、
もしくは、11.5.9用の「/home/db2dpfc/sqllib/lib64/libdb2.so」を指定するのが比較的要件に近いのではないかと思われますが、いかがでしょうか?
コメント
コメントを投稿