pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


ER/Studio 16.0 (2016) で IBM DB2 LUW に接続してリバースエンジニアリングするための環境を作る

ER/Studio はデータベースのモデリングツールであり、ER/Studio 上で論理モデルを編集した上で個別のデータベース向けの物理モデルを生成できるだけでなく、稼働中のデータベースに接続して物理モデルをリバース・エンジニアリングできるなど、なかなか便利なツールなのですが、DB2 LUW (Linux, Unix, Windows 向けのDB2) に接続しようとしたときに設定手順の文書が微妙に足りないので、手順のメモを残しておきます。

また、ER/Studio のバージョンは 16.0 (2016)、エディションは Developer Edition (RAD Studio Architect に含まれるエディション) を想定しています。

従って、ここで書いている手順は DB2 for z/OS (AS/400) 向けの手順ではありません。DB2 for z/OS へのネイティブ接続は ER/Studio Data Architect 以上でサポートされますので、RAD Studio Architect で ER/Stuido Developer Edition をインストールしても利用できません。(ODBC設定なら使えるかもしれませんが)

そもそもなぜ上手くいかないのか?

DB2に関する理解度が低い方が docwiki.embarcadero.com の記述を読むと、たぶん混乱するからだと思います。

ここらへんを見ると "IBM DB/2 OS/390 / IBM DB2 LUW" 向けの接続には "IBM DB2 Connect" が必要、と書かれています。 サポート対象データベース プラットフォーム - ER/Studio Data Architect

また、ここらへんを見ると "IBM DB2 クライアント ユーティリティの対応バージョン" を用いる旨、書かれています。 さらに IBM DB2 for LUW には "ODBC データ ソース アドミニストレータで指定した ODBC データ ソースを使用します。" と書かれています。 データベースに対するネイティブ接続または直接接続の使用 - ER/Studio Data Architect

結局、何が必要なのか、良く分からなくなってきませんか?

ネイティブ接続できるはずなのに、ODBCデータソースの設定が必要、みたいなことが書いてあるし。

では、と思って DB2 向けの ODBC ドライバだけインストールした環境で接続を試みてみても、ネイティブ接続は思ったようには動いてくれない。

db2abind64.dll が無い、みたいなメッセージが出て先に進めないし、db2abind64.dll で検索しても、そのものズバリの情報がイマイチ見当たらず、「後方互換性のために残されている」的な情報は見つかるものの、ODBCドライバにはこのDLLは含まれていないのです。

必要なもの

結局、ソフトウェアやドライバとして何が必要かというと、IBM Data Server Client Packages が必要です。この記事の作成時点では 11.1.* を使用していますが、もっと新しいバージョンが無いかどうかは個別に確認してください。

以下のリンクは11.1のダウンロードリンクです。IBM ID でのログインが必要なので、持っていない方は作成してください。

http://www.ibm.com/support/fixcentral/swg/quickorder?parent=ibm%7EInformation%20Management&product=ibm/Information+Management/IBM+Data+Server+Client+Packages&release=11.1.*&platform=Windows+64-bit,+x86&function=fixId&fixids=DSClients-111-ntx64-RECOMMENDED&includeRequisites=1&includeSupersedes=0&downloadMethod=http&source=fc

ここで "v11.1.3fp3_ntx64_client.exe (691.37 MB)" という、一番大きいインストーラを入手しておきます。(他のインストーラでも良いかもしれないけど、最小構成については検証していません)

インストールのサマリ

v11.1.3fp3_ntx64_client.exe は WinZip の自己展開型アーカイブなので、実行して展開された中身の setup.exe を実行します。(しかし、今の時代に自己展開型アーカイブで配布するのはアリなのだろうか?)

インストール構成としては、下記2点くらいが注意点でしょうか。

  • IBM Data Server Client バージョン 11.1.3.3
  • コンパクト構成 (200 - 300MB)

環境設定のサマリ

環境設定では、ODBC接続設定が必要です。ER/StudioからのDB2接続では、ODBCの機能とネイティブドライバの機能を併用するのですが、基本的な接続はODBCで設定された内容を参照しているようです。

ここらへんは RAD Studio/Delphi/C++Builder のデータベース接続機能である FireDAC の DB2 コネクタでも同じような挙動のようです。

ここでは DB2 側で接続エイリアスを作成したのち、それを ODBC ドライバで使用するように設定しています。

db2 catalog tcpip node [ノード名] remote [DB2サーバのホスト名またはIPアドレス] server [ポート番号(50000)]
db2 catalog database [データベース名] as [DB接続エイリアス名] at node [ノード名]

ER/Studio のリバースエンジニアリング設定

  • 接続方法 = ネイティブ/直接族
  • 対象データベース = IBM DB2 UDB
  • データソース = ODBC接続名
  • ユーザ名、パスワードは DB2 側で設定されているものを指定

おおむね、こんな流れでER/StudioからDB2 LUWへの接続やデータベースのリバースエンジニアリングが行えるようになります。