2010年4月2日金曜日

メインフレームLinuxでDB2(1) - クライアントのインストール (Linuxコマンドライン)

しばらくDB2の勉強もかねてメモ書きしていこうと思うので、タイトルを変えてみました。

前回までで、fedora11/s390x上でDB2が動作するようになりました。今回はDB2サーバーが動作するfedora11/s390xとは別のマシンからDB2データベースに接続してSQLを発行できるような環境を作りたいと思います。
fedora11/s390xを動作させている環境では、母艦Linuxと同じLAN上にx86のCentOS (v5.4, 32bit)がいますので、そこにDB2クライアントをインストールすることにします。

1. クライアントパッケージのダウンロード
まず、"IBM DataServer Client"パッケージをIBMのサイトの"Additional Functionality and Powerful Tools"の"DB2 Client"からダウンロード(要登録)して、クライアントマシン上に置き、tarで展開します。
[root@ce01 ~]# tar zxf ibm_data_server_client_linuxia32_v97.tar.gz 
展開すると"client"ディレクトリができています。その中にある、"db2_install"をrootユーザーで以下のように実行します。
[root@ce01 client]# ./db2_install -p client -c /root/client/nlpack -L JP

製品のインストール用のデフォルト・ディレクトリー - /opt/ibm/db2/V9.7

***********************************************************
別のディレクトリーを選択してインストールしますか [yes/no] ?
no
DB2 インストールを初期化しています。

実行されるタスクの合計数: 32
実行される全タスクの合計見積もり時間: 729

タスク #1 を開始します。
説明: ご使用条件受諾のチェック
見積もり時間 1 秒
タスク #1 が終了しました。

タスク #2 を開始します。
説明: root 特権を使用したインストールのための基本クライアント・サポート
見積もり時間 3 秒
タスク #2 が終了しました。

...

タスク #32 を開始します。
説明: グローバル・プロファイル・レジストリーの更新
見積もり時間 3 秒
タスク #32 が終了しました。

正常に実行が完了しました。

詳しくは、「/tmp/db2_install.log.14083」にある DB2
インストール・ログを参照してください。
2. クライアント・インスタンスの作成
インストールが完了したら、クライアント・インスタンスを作成します(データベースサーバーを動作させない場合でもインスタンスの作成が必要)。 クライアント・インスタンスのインスタンス・オーナー・ユーザーは、heruclesユーザーとしています。ユーザー名は8文字以下にする必要があるようです。
[root@ce01 ~]# /opt/ibm/db2/V9.7/instance/db2icrt -s client hercules
3. /etc/hostsの編集とルーティングの設定
次に、クライアントマシンの/etc/hostsにzfedora(192.168.200.3)を登録して、ルーティング設定も行っておきます(10.1.2.3は母艦LinuxのIPアドレス)。
[root@ce01 ~]# grep zfedora /etc/hosts
192.168.200.3 zfedora
[root@ce01 ~]# route add -host 192.168.200.3 gw 10.1.2.3
pingなどして、クライアントマシンとfedora11/s390xとが通信できることを確認したら、herculesユーザーでクライアントマシンにログインします。ホームディレクトリに、"sqllib"ディレクトリができています。
[hercules@ce01 ~]$ ls -ltr
合計 4
drwxrwsr-t 14 hercules hercules 4096  3月 31 21:15 sqllib
4. データベースノードのカタログ
DB2サーバー(データベースノード)をカタログします。"node"の後ろのノード名("db2serv1")は適当につけました。 "50000"は、DB2サーバー上で動作しているdb2inst1インスタンスが接続を待つポート番号です。ポート番号は、DB2サーバー上で"db2 get dbm cfg"を実行し、"TCP/IP Service name"で表示されるサービス名をキーにして、/etc/servicesを調べるとわかると思います。
[hercules@ce01 ~]$ db2 catalog tcpip node db2serv1 remote zfedora server 50000
DB20000I  CATALOG TCPIP NODE コマンドが正常に完了しました。
DB21056W  ディレクトリーの変更は、ディレクトリー・キャッシュがリフレッシュされるまで反映されません。
"db2 list node directory"コマンドでカタログされているノードを確認できます。
[hercules@ce01 ~]$ db2 list node directory

 ノード・ディレクトリー

 ディレクトリー中の項目数 = 1

ノード 1 項目:

 ノード名                                                 = DB2SERV1
 コメント                                                 =
 ディレクトリー項目タイプ                                 = LOCAL
 プロトコル                                               = TCPIP
 ホスト名                                                 = zfedora
 サービス名                                               = 50000
4. "SAMPLE"データベースのカタログ
ノードの次は、データベースをカタログします。 今回は、以前に作成した"SAMPLE"データベースをカタログすることにします。 "at node"の後ろには、ノードのカタログ時に指定したノード名(今回の例では"db2serv1")を指定します。
[hercules@ce01 ~]$ db2 catalog database sample at node db2serv1
DB20000I  CATALOG DATABASE コマンドが正常に完了しました。
DB21056W  ディレクトリーの変更は、ディレクトリー・キャッシュがリフレッシュされるまで反映されません。
"db2 list db directory"コマンドでカタログされているデータベースを確認できます。
[hercules@ce01 ~]$ db2 list db directory

 システム・データベース・ディレクトリー

 ディレクトリー中の項目数 = 1

データベース 1 項目:

 データベース別名                                         = SAMPLE
 データベース名                                     = SAMPLE
 ノード名                                                 = DB2SERV1
 データベース・リリース・レベル                           = d.00
 コメント                                                 =
 ディレクトリー項目タイプ                                 = リモート
 カタログ・データベース・パーティション番号               = -1
 代替サーバー・ホスト名                                   =
 代替サーバーのポート番号                                 = 
5. "SAMPLE"データベースに接続する
データベースに接続してみます。 "user"は"db2inst1"ユーザー(インスタンスオーナー), "using"にはDB2サーバーのインストール時に指定した、"db2inst1"ユーザーのパスワードを指定します。
[hercules@ce01 ~]$ db2 connect to sample user db2inst1 using XXXXXXXX

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUXZ64 9.7.1
 SQL 許可 ID                                              = DB2INST1
 ローカル・データベース別名                               = SAMPLE
6. SQLの発行
SQLも発行してみます。
[hercules@ce01 ~]$ db2 "select id,name,dept from staff"

ID     NAME      DEPT
------ --------- ------
    10 Sanders       20
    20 Pernal        20
    30 Marenghi      38
    40 O'Brien       38
    50 Hanes         15
    60 Quigley       38
    70 Rothman       15
    80 James         20
    90 Koonitz       42
   100 Plotz         42
   110 Ngan          15
   120 Naughton      38
   130 Yamaguchi     42
   140 Fraye         51
   150 Williams      51
   160 Molinare      10
   170 Kermisch      15
   180 Abrahams      38
   190 Sneider       20
   200 Scoutten      42
   210 Lu            10
   220 Smith         51
   230 Lundquist     51
   240 Daniels       10
   250 Wheeler       51
   260 Jones         10
   270 Lea           66
   280 Wilson        66
   290 Quill         84
   300 Davis         84
   310 Graham        66
   320 Gonzales      66
   330 Burke         66
   340 Edwards       84
   350 Gafney        84

  35 レコードが選択されました。
接続を解除するには、"db2 terminate"を発行します。
[hercules@ce01 ~]$ db2 terminate
DB20000I  TERMINATE コマンドが正常に完了しました。

今回は、fedora11/s390x上で動作するDB2サーバーに別のマシンから接続するための設定を行いました。

0 件のコメント:

コメントを投稿