目次


カンタン!DB2テクテク第1歩 拡張機能編

DB2コネクト 第3話

Comments

コンテンツシリーズ

このコンテンツは全#シリーズのパート#です: カンタン!DB2テクテク第1歩 拡張機能編

このシリーズの続きに乞うご期待。

このコンテンツはシリーズの一部分です:カンタン!DB2テクテク第1歩 拡張機能編

このシリーズの続きに乞うご期待。

はじめに

2回にわたりDB2コネクトの概要を説明してきましたが、最終回はDB2コネクトの利用形態と実際にホストDB2に接続するための定義方法をご紹介します。

DB2コネクトの利用形態

例1は、WindowsのVisualBasicアプリケーションからホストDB2にアクセスする例です。DB2 for OS/390はODBCインターフェースをサポートしていますが、同一オペレーティング・システム上にないリモート・アプリケーションからのアクセスとなりますので、DB2コネクトを利用します。VisualBasicはDB2コネクトが提供するODBCドライバーを使用してホストDB2にアクセスします。

例2は、Webサーバーからバックエンドにあるホスト・データベースをアクセスする例です。例1と同様に、DB2 for OS/390はJDBCインターフェースをサポートしていますが、リモート・アプリケーションからのアクセスになりますので、DB2コネクトを利用します。WebアプリケーションはDB2コネクトが提供するJDBCドライバーを使用してホストDB2にアクセスします。

図7.DB2コネクトの利用形態1
図7.DB2コネクトの利用形態1
図7.DB2コネクトの利用形態1

例3は、DB2 for OS/400を利用したデータ・プロパゲーションの例です。これまで、ホストDB2へ接続するためにはDRDAを利用すると説明しましたが、DB2 for OS/400は独自の接続形態もサポートしています。クライアント・アクセス/400はODBCドライバーを、Toolbox for JavaはJDBCドライバーを提供しているので、これらを利用して非DRDA接続が可能です。しかしながら、DpropRを使用してデータ・プロパゲーションを行う場合はサーバーとリクエスター間はDRDA接続にする必要があります。(DpropRはデータプロパゲーションを行うための機能あるいは製品です) 例4は、DB2コネクト用のサーバーを立てるのではなく、ホストでDB2コネクトを稼働させる例です。ホストのLinux区画にDB2コネクトを稼働させることにより、DB2コネクト用の中間サーバーは不要となります。

図8.DB2コネクトの利用形態2
図8.DB2コネクトの利用形態2
図8.DB2コネクトの利用形態2

DRDAの設定方法

最後にDB2コネクトを使って実際にホストDB2に接続するための定義例をご紹介します。

表2.DB2コネクトに必要な情報

項目OS/390の設定定義された値を調べる方法
1.HOSTNAME+DOMAINORIGINmp3kb.hako.ibm.comOS/390 :DB2立上げ時のログ
2.IPアドレス192.168.23.2OS/390 :TCPIPのプロファイル
3.DB2ロケーション名MP3KBDBX OS/390 :DB2立上げ時のログ
4.ポート番号6000OS/390 :DB2立上げ時のログ
5.サービス名DSNXDISTOS/390 :TCPIPのプロファイル
6.ユーザーID/パスワードXXXXXX/YYYYYY OS/390 :RACFに登録されているユーザーID/パスワード SYSやIBMで始まるユーザーIDは無効となるので注意 。
7.接続タイプTCPIP
図9.定義例の環境
図9.定義例の環境
図10.作業対象
図10.作業対象
図10.作業対象

ホストDB2の設定

始めに、ホストDB2がDRDAのアプリケーション・サーバー、リクエスターになるために必要となる作業を簡単にみておきます。ホストDB2はDB2 for OS/390、DB2コネクトとの通信プロトコルがTCP/IPの例です。

TCP/IP関連定義

  • DB2は1サブシステム(接続する単位)あたりサーバー用と再同期化用として2つのポート番号を使用します。データ共用環境の場合は、サーバー用ポート番号のみ全メンバーで一致させます。また、システムのローカル・ホスト名は、分散データ機能を提供するアドレス・スペース(以下DDFリージョン)がスタートするときに参照するので必ず定義しておきます。

VTAM関連定義

  • TCP/IPのプロトコルを利用したDRDA接続の時でも、NETIDとLU名を作業単位(UOW)の識別に使用するので、VTAMの定義は必須となります。BSDS(ブートストラップ・データセット)に定義したLU名を登録します。

BSDS定義

  • DB2は、ログや再始動情報を格納するBSDSの中に、ネットワーク上のDB2サブシステムの識別名であるロケーション名やLU名、使用するTCP/IPのポート番号を定義します。登録にはバッチ・ユーティリティーを使用します。

セキュリティー関連定義

  • DDFリージョンはUNIXシステム・サービス環境でスーパー・ユーザーとして稼働するので、UID(0)の権限を与える必要があります。また、クライアントから接続を行うユーザーIDの登録も行います。

DSNZPARMの作成

  • DB2のパラメータ・モジュール内に分散データ機能の制御に関する定義を行います。

CDB(Communication Database)の設定

  • ホストDB2がアプリケーション・リクエスターになる場合にサーバーの定義を格納するデータベースです。

プロシージャーの作成

  • DDFリージョン用の立上げプロシージャーを用意します。

これらの作業によって設定された値をDB2コネクトに定義することにより、DB2コネクトとホストDB2間のコミュニケーションが可能となります。

ホストDB2がDB2 for OS/400の場合は、DDMの起動とRDB名の登録作業を行います。

DB2コネクトの設定

図11.DB2コネクトにおけるコマンド実行例
図11.DB2コネクトにおけるコマンド実行例
図11.DB2コネクトにおけるコマンド実行例

次にDB2コネクトに対する設定です。DB2のランタイム・クライアントとDB2サーバー間は、DRDAではなくプライベート・プロトコルを使用します。その際は2つのディレクトリーに対して接続定義を行います。DRDA接続の場合は、前述の2つのディレクトリーに加え、データベース接続サービス・(DCS)ディレクトリーに定義を行います。DB2コネクトに対して、コマンド、またはGUIツールであるクライアント構成アシスタントから設定が可能です。ここでは、コマンドによる定義例をご紹介します。表2は、DB2コネクトの設定を行うにあたり必要となるホストDB2の情報となります。1,2と4,5については、どちらか一方を指定します。

NODE DIRECTORY

  • catalog tcpip node NODENAME remote HOSTNAME server PORTNO

DATABASE DIRECTORY

  • catalog db DBNAME as ALIAS at node NODENAME authentication dcs

DCS DATABASE DIRECTORY

  • catalog dcs db DBNAME as LOCATION

指定するパラメータ(カッコ内の数字は表2の番号を表しています。)

NODENAME :接続先システムを指定するために任意の名前をつけます。ノード・ディレクトリー内ではユニークな名前にする必要があります。
HOSTNAME :S/390のホスト名(1の一部)、またはIPアドレス(2)を指定します。ホストシステムがDB2コネクトと同 じドメインにない場合は、完全修飾されたドメイン名(1)を指定します。
PORTNO :接続先DB2が使用するポート番号(4)、またはサービス名(5)を指定します。DB2 for OS/400の場合は通常446番を使用します。
DBNAME :接続先DB2を表す任意の名前を指定します。ALIASを定義しない場合には、これがクライアントからCONNECTするときの名前となります。
ALIAS :DBに別名をつけることもできます。指定がない場合はDBNAMEで定義した名前が使用されます。クライアントからCONNECTするときのデータベース名となります。
LOCATION :接続先ホストDB2のBSDSに登録したロケーション名(3)を指定します。DB2 for OS/400の場合は、RDB名を指定します。

LISTコマンドを使用して定義内容の確認ができます(図12)。定義を削除する場合は、UNCATALOGコマンドを使用します。

続いて、ホストDB2用のパッケージのバインド処理を行います。コマンド行プロセッサーから以下のコマンドを実行します。ホストDB2のBIND権限を持つユーザーIDで実行してください。リスト・ファイルであることを示すためにファイル名の先頭に@をつけます。

  • bind C:\sqllib\bnd\@ddcsmvs.lst blocking all sqlerror continue grant public

これで、DB2コネクトとホストDB2間の接続作業は終了です。DB2コネクト・サーバーのコマンド行プロセッサーから、接続コマンドを実行すると図12のような結果が返ってきます。

クライアントの設定

表3.クライアントに必要な情報

項目サブシステムDSNX定義された値を調べる方法
1.ホスト名ssc1udbs1WindowsNT :コマンド・プロンプトからhostnameコマンドを入力
2.IPアドレス192.168.50.30WindowsNT :コマンド・プロンプトからipconfigコマンドを入力
3.ポート番号50000 WindowsNT : servicesファイルを参照
4.サービス名db2cdb2inst1WindowsNT : get dbm cfg CLPコマンドのsvcename=
5.データベース名dbv7dsnxWindowsNT : List db directoryコマンドのデータベース別名欄
6.ユーザーID/パスワードXXXXXX/YYYYYYOS/390 : RACFに登録されているユーザーID/パスワード
図12.ランタイム・クライアントとDB2コネクトにおけるコマンド実行例
図12.ランタイム・クライアントとDB2コネクトにおけるコマンド実行例
図12.ランタイム・クライアントとDB2コネクトにおけるコマンド実行例

最後に、DB2コネクトとクライアント間の定義についてご紹介します。表3がクライアント側の設定に必要な情報です。ホストDB2ではなく、DB2コネクトの情報が必要です。表3からもユーザーがホストDB2のロケーション・構成等を意識せずに利用することができることがわかります。

コマンド行プロセッサーから2つのディレクトリーに対して定義を行います。

NODE DIRECTORY

  • catalog tcpip node NODENAME remote HOSTNAME server PORTNO

DATABASE DIRECTORY

  • catalog db DBNAME as ALIAS at node NODENAME

指定するパラメータ(カッコ内の数字は表3の番号を表します)

NODENAME :接続先システムを指定するために任意の名前をつけます。ノード・ディレクトリー内ではユニークな名前にする必要があります。
HOSTNAME :WindowsNTのホスト名(1)、またはIPアドレス(2)を指定します。
PORTNO :接続先DB2コネクトが使用するポート番号(3)、またはサービス名(4)を指定します。
DBNAME :接続先DB2 for OS/390を識別する名前です。DB2コネクトで指定したデータベース別名を指定します。ALIASがない場合はアプリケーションがCONNECTするときの名前となります。
ALIAS :DBNAMEに対して別名の指定が可能です。指定がない場合はDBNAMEがCONNECTするときの名前となります。

クライアントのコマンド行プロセッサーからホストDB2に接続してみます。(図12)

以上でクライアントとホストDB2間の接続定義は完了です。簡単な設定により、DRDAを使用したホストDB2アクセス環境が実現できることがおわかりいただけましたか?是非実際に試していただきたいと思います。

ホストDB2との接続テストが難しい場合は、WindowsやOS2、UNIX系DB2に対して接続してみることもできます。WindowsやOS2、UNIX系DB2もDRDAのアプリケーション・サーバー機能を持っています。DB2コネクトのノード・ディレクトリー、データベース・ディレクトリーに加えてDCSディレクトリーに設定することによりDRDA接続環境を実現できます。

この場合、LOCATIONには接続するデータベース名を指定します。

図13.定義関連図
図13.定義関連図
図13.定義関連図

おわりに

3回に渡たり、DB2コネクトについてご紹介いたしました。クライアント・アプリケーションからホスト上のDB2にアクセスするために、DB2コネクトがなぜ必要か?という問いの答えをみつけることができたでしょうか?最後にクイズを載せますので、挑戦してみてください。

次のうち、正しいものには○、間違ったものには×をつけてください。

  1. DB2コネクトはDRDA環境におけるアプリケーション・リクエスターの機能を提供する
  2. Windows上のクライアント・アプリケーションからDB2 for OS/390のデータベースにアクセスするためには、 クライアント側にランタイム・クライアントのみを導入すればよい
  3. DB2 for OS/390はODBCをサポートしているので、Windows上のODBCアプリケーションからDB2 for OS/390のデータ ベースにアクセスするときにDB2コネクトは不要だ

答え:

1. ○ 2. × 3. ×

解説:2について:

ランタイム・クライアントはDRDAプロトコルではなく、プライベート・プロトコルのみをサポートしています。DB2 for OS/390は同一オペレーティング・システム以外のリモート・システムからの要求はDRDAを通して受け付けます。ですからアプリケーション側にDRDAのアプリケーション・リクエスターとなる機能が必要となります。クイズの1にもありますように、DB2コネクトはアプリケーション・リクエスターの機能を提供しますので、DB2コネクトを利用することにより、DB2 for OS/390のデータベースにアクセスすることができます。

解説:3について

DB2 for OS/390は、同一オペレーティング・システム内におけるODBCインターフェースをサポートしていますが、リモート・システムからの要求はDRDAを通して受け付けます。Windows上のアプリケーションはDB2コネクトのODBCドライバーを使用してDRDAを通してDB2 for OS/390にアクセスしますので、DB2コネクトは必要です。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Information Management
ArticleID=319977
ArticleTitle=カンタン!DB2テクテク第1歩 拡張機能編: DB2コネクト 第3話
publish-date=11302005