本文へジャンプ

DB2 Developer Domain > 製品別技術情報 > カンタン!DB2テクテク第1歩 拡張機能編 > 

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

 
DB2コネクト 第3話

インデックス
1. はじめに
2. DB2コネクトの利用形態
3. DRDAの設定方法
4. ホストDB2の設定
5. DB2コネクトの設定
6. クライアントの設定
7. 終わりに
PDF(684KB)
Adobe® Reader®が必要

はじめに
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

例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

上に戻る


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

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

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


図9.定義例の環境


図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コネクトにおけるコマンド実行例

次に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. ホスト名 ssc1udbs1
WindowsNT : コマンド・プロンプトからhostnameコマンドを入力
2. IPアドレス 192.168.50.30
WindowsNT : コマンド・プロンプトからipconfigコマンドを入力
3. ポート番号 50000
WindowsNT : servicesファイルを参照
4. サービス名 db2cdb2inst1
WindowsNT : get dbm cfg CLPコマンドのsvcename=
5. データベース名 dbv7dsnx
WindowsNT : List db directoryコマンドのデータベース別名欄
6. ユーザーID/パスワード XXXXXX/YYYYYY
OS/390 : RACFに登録されているユーザーID/パスワード


図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.定義関連図
上に戻る

おわりに
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コネクトは必要です。

上に戻る