前回までで、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 hercules3. /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.3pingなどして、クライアントマシンとfedora11/s390xとが通信できることを確認したら、herculesユーザーでクライアントマシンにログインします。ホームディレクトリに、"sqllib"ディレクトリができています。
[hercules@ce01 ~]$ ls -ltr 合計 4 drwxrwsr-t 14 hercules hercules 4096 3月 31 21:15 sqllib4. データベースノードのカタログ
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 サービス名 = 500004. "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 ローカル・データベース別名 = SAMPLE6. 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 件のコメント:
コメントを投稿