今回はDb2 for i のODBCサポートとそれに関連した機能拡張等をご紹介いたします。
Db2 for iのODBCサポート概要
Db2 for i用のODBCドライバーは以前からIBM i Access for Windows(IAW)で提供されていました。
現在はACS(IBM Access Client Solutions)のオプションパッケージとして提供されています。
ACSのODBCドライバーはWindowsのほかに、Linux, macOSそしてIBM i(PASEで実行)用も提供されています。
(図1)ACS ODBCドライバーはOLE DBプロバイダー、.NET Dataプロバイダーもサポートしています。

図1: IBM i のODBCサポート
macOS用のODBCドライバーはunixODBCに対応しています。(iODBCには対応していません。)
各クライアントからのODBC接続による要求はIBM i 上のQUSRWRKサブシステム内の事前開始ジョブ QZDASOINITで処理されます。(QZDASOINITサーバージョブはJDBC接続要求にも使用されます。)
QZDASOINITはコネクションプールの機能も提供しており、クライアントからの接続要求数やアクティブなODBC/JDBC処理要求数などを勘案して実行ジョブ数が動的に変化します。
QZDASOINITのジョブ数はODBC/JDBCのデータベースアクセスのパフォーマンスに影響を及ぼします。
ACSで提供されるODBCドライバーに対して追加の57xx-XW1 IBM i Access ファミリーのライセンス料金は発生しませんが、接続するIBM i OS上には接続するユーザー数を許容するだけのIBM i OSライセンスが必要です。
IBM i Access のライセンス情報は下記に記載があります。
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_74/rzajr/rzajrlicenseinfo.htm
以下では主にWindowsでのACS ODBCについて記述します。IBM i (PASE環境)のODBCドライバーについては以下のリンクをご参照ください。
(iWorld記事)IBM i へのODBCドライバーの導入法
https://iworldweb.info/column/product/odbc-driver-for-ibm-i
(IBM Support)ODBC Driver for the IBM i PASE environment
https://www.ibm.com/support/pages/node/885929
WindowsでのACS ODBCセットアップ手順
以下ではWindowsを例にDb2 for i へのODBCアクセスのセットアップ手順をご紹介します。全体の流れは図2になります。
図2:WindowsへのODBCセットアップ手順
1. IBM i でODBC接続用のサーバージョブを起動する
ODBCでIBM iにアクセス可能とするにはIBM i上でサーバージョブQZDASOINITを開始します。
デフォルトではQUSRWRKサブシステムで実行されます。
WRKACTJOBコマンド等でこのジョブが起動しているか確認してください。
もし起動していない場合は STRHOSTSVR *ALLコマンドを実行します。
2. WindowsへのACS ODBCドライバーを導入する
Windows10へACS ODBCドライバーを導入します。
詳細な導入手順は後述するACSのWindows用アプリケーションパッケージを展開した際作成されるdocumentationフォルダーのreadme_ja.txt をご参照ください。
また、ACS ODBCサポートの詳細は以下のリンクにも情報があります。
参考:IBM i Access ODBC Installation
https://ibmi-oss-docs.readthedocs.io/en/latest/odbc/installation.html
ACSは以下のサイトからダウンロード可能です。
http://ibm.biz/IBMi_ACS
上記リンクからIBM MRS(Marketing Registration Services)サイトにログインします。(IBM id(無償)が必要です。)
使用許諾に同意すると図3 のダウンロード画面が表示されます。
Windows用のODBCドライバーはWindows アプリケーションパッケージ(ACS Windows App Pkg English(64bit) IBMiAccess_v1r1_WindowsAP_English.zip)に含まれます。
すでにACSを導入済みの場合はこのパッケージだけをダウンロードします。
まだACSを導入していない場合や導入済みのACSのバージョンが古い場合は、併せてACSのベースモジュール(IBM i Access Client Solutions IBMiAccess_v1r1.zip) もダウンロードします。
参考:ACS Windowsアプリケーションパッケージ
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_74/rzahg/rzahgiciaw.htm

ACSのベースモジュールのIBMiAccess_v1r1.zipを任意のフォルダーに展開しただけでも5250端末や当連載記事第2回 ACS すぐに使える新機能 で紹介した機能は使用可能です。(zipを展開した際作成される¥Start_Programs¥Windows_x86-64¥acslaunch_win-64.exe等を実行します。)
ACSのアイコン作成などを行いたい場合は上記zipを展開して¥Windows_Application下のinstall_acs_64.jsかinstall_acs_64_allusers.js を実行します。(ACSのアイコンが登録されるのでそれをクリックしてACS起動します。)
ODBCドライバーを導入するには、IBMiAccess_v1r1_WindowsAP_English.zipを任意のフォルダーに展開し、¥Image64a¥setup.exeを実行します。(図4)

Setup.exeを実行するとインストールウィザードが実行されます。
画面に従ってインストールを行ってください。
必要に応じてインストールするモジュールを選択してくさい。
特に要件がなければすべてのコンポーネントを導入します。(図5)

3. ACSにIBM i システム構成(接続情報)を作成
すでにACSで5250端末などを利用している場合はこのステップは設定済みになっていると思われます。
今回初めてACSを設定するWindowsの場合は、ACSのアイコンをクリックするかacsbundle.jarをクリックする等して図6の管理画面を起動し、システム構成をクリックします。
システム構成の画面で追加ボタンを押し、一般タブのシステム名にIBM i TCP/IPホスト名かIPアドレスを入力します。
その他のタブについても確認し、必要があれば変更してください。
最後にOKを押して、システム構成の画面にIBM i システムが登録されていることを確認します。

4. WindowsにODBCデータソースを追加する
Windowsのコントロールパネルを開き、管理ツールをクリックします。
さらにODBCデータソースのアイコンをクリックしてユーザーDSN、システムDSNなどから必要とするODBCデータソース登録画面を表示します。
ACS ODBCドライバーが導入済みの場合、図7のようにACSのドライバーが表示されます。
ACS ODBCを登録すると3つのドライバーが登録されますが、これは過去との互換性維持の為で実際に使用されるドライバーはすべて共通です。

ACSのODBCドライバーを選択して完了ボタンを押すと、図8のようなデータソース作成画面が表示されます。
Generalタブでは任意のデータソース名(Data source name)を入力し、Systemに③で登録したIBM i システム名を指定します。
Connection OptionsにはユーザーIDの指定がありますので必要に応じて変更してください。
Serverタブでは Default SQL Schema or LibraryとLibrary ListにODBCで使用するスキーマ名(ライブラリー名)を指定します。
複数のスキーマ(ライブラリー)にアクセスしたい場合は例のように複数のスキーマ名をスペースで区切って入力します。

ここではPerformanceタブについても確認しておきましょう。
Performanceタブを開くと図9のようにODBCで操作するデータのブロックサイズを指定する欄があります。
筆者の経験上となりますが、テストの結果、思うようなパフォーマンスが出ない場合に、ブロックサイズを初期値から増やす(例だと512KB以上に設定する)事でパフォーナンスが改善されるケースが少なからずありました。
もし、パフォーマンスが思うように出ない場合はこのパラメーターを確認することをお勧め致します。
以上で基本的な設定は完了です。OKボタンを押してデータソースを作成します。

以上でODBCでDb2 for iを利用するための準備が完了しました。
5. ExcelからODBCでDb2 for iのデータを取得する
ここではExcelを使ってODBCによるDb2 for i データ取得の例をご紹介します。
Excelを起動してメニューのデータからデータの取得→その他のデータソース→ODBCを選択します。
図10のような画面が表示されます。
例では指定した2つのスキーマ(DEMOLIBとWESBDEMO)に存在するテーブルが表示されています。
任意のテーブルを選択し、Loadボタンを押してExcelにデータを取得します。

以下のようにDb2 for i のテーブルをExcelに取得できます。

次回はQZDASOINITのジョブ数調整について解説いたします。
筆者
|
日本アイ・ビー・エム株式会社 多数の執筆記事を、iWorldに寄稿中。 |