2010年4月9日金曜日

メインフレームLinuxでDB2(3) - DBADM権限の付与

前々回では、x86 linuxにDB2クライアントをインストールしました。zfedora(feodra11/s390x)上のDB2インスタンス(db2inst1)に接続する際には、インスタンスオーナーのユーザーIDとパスワードを使用したわけですが、今回はインスタンスオーナーではないユーザに"SAMPLE"データベースへDBADM権限を与えて、そのユーザーのIDとパスワードでデータベースに接続してみます。DBADM権限は、インスタンス内のあるデータベースに対するアクセス権で、インスタンスオーナーのSYSADM権限よりは限定された権限です。 DB2における特権・権限については、ここにまとめられています。

1. DBADM権限を与えるユーザーをzfedora上に作成する。
必要に応じてユーザーを作成します。今回はzfedora上にtestdbユーザーを作成しました。適宜パスワードも設定しておきます。
-bash-4.0# adduser testdb
-bash-4.0# passwd testdb
Changing password for user testdb.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
2. testdbユーザーにDBADM権限を与える。
インスタンスオーナー(db2inst1)でzfedoraにログインし、SQLのGRANT文でtestdbユーザーにDBADM権限を与えます。
[db2inst1@zfedora ~]$ db2 connect to sample

   Database Connection Information

 Database server        = DB2/LINUXZ64 9.7.1
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

[db2inst1@zfedora ~]$ db2 "GRANT DBADM ON DATABASE TO USER testdb"
DB20000I  The SQL command completed successfully.
3. x86 Linuxからzfedora上の"sample"データベースに接続する。
"testdb"ユーザーで"SAMPLE"データベースに接続します。
[hercules@ce01 ~]$ db2 connect to sample user testdb using YYYYYYYY

   データベース接続情報

 データベース・サーバー                                   = DB2/LINUXZ64 9.7.1
 SQL 許可 ID                                              = TESTDB
 ローカル・データベース別名                               = SAMPLE
4. "SAMPLE"データベース内のdepartmentテーブルにSELECTを発行してみる。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM department"
SQL0204N  "TESTDB.DEPARTMENT" は未定義の名前です。  SQLSTATE=42704
「"TESTDB.department"は未定義です」というエラーが表示されました。"TESTDB"が暗黙のスキーマ名として指定されているようです。"department"の代わりに、"DB2INST1.department"としてみると、SELECTの結果が戻されるようになりました。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM DB2INST1.department" 

1
-----------
         14

  1 レコードが選択されました。
カレントスキーマを"DB2INST1"に変更します。
[hercules@ce01 ~]$ db2 "SET CURRENT SCHEMA='DB2INST1'"
DB20000I  SQL コマンドが正常に完了しました。
今度は、スキーマ名を指定しなくても"DB2INST1"スキーマのdepartmentテーブルに対するSELECTの結果が戻されました。
[hercules@ce01 ~]$ db2 "SELECT COUNT(*) FROM department"

1
-----------
         14

  1 レコードが選択されました。
今回は、インスタンスオーナー以外のユーザーにDBADM権限を与え、そのユーザーで"SAMPLE"データベースへの接続とSQLの発行を行ってみました。

2010年4月6日火曜日

メインフレームLinuxでDB2(2) - クライアントのインストール (Windows GUI)





前回は32bit/x86 LinuxのコマンドラインでDB2クライアントのインストール手順をメモ書きしました。今回は、Windows上のGUIで使用可能なDB2クライアントのインストール手順をメモっておくことにします。例によって、DB2クライアントをインストールするWindowsマシンは、母艦Linuxと同じLAN上にあり、fedora11/s390xに対してルーティング設定が行われているものとします。

1. 事前準備
前回同様IBMのサイトから、"IBM Data Server Client (Windows 32-bit AMD and Intel x86)"をダウンロードして、Windowsマシン上に展開しておきます。

2. セットアップウィザードの起動
展開後にできているCLIENTディレクトリから、image\setup.exeを実行します。"DB2 セットアップ・ランチパッド"の"ようこそ"画面が表示されたら、左側のペインから"製品のインストール"を選択し、表示された画面で"新規インストール"ボタンをクリックします。 "IBM Data Server Client バージョン 9.7のDB2セットアップ・ウィザードへようこそ"の画面(下図)が表示されたら、"次へ"をクリックします。

3. ウィザードに従ってインストール
ライセンス規約に同意し、以降デフォルト設定でインストールを完了します。
  • 「インストール・タイプ」:標準(デフォルト)
  • 「インストール、応答ファイルの作成、またはその両方の選択」:このコンピューターにData Server Clientをインストールし、設定を応答ファイルに保管する(デフォルト)
  • 「インストール・フォルダーの選択」:"C:\Program Files\IBM\SQLLIB" (デフォルト)
  • 「DB2オブジェクトのためにオペレーティング・システム・セキュリティーを使用可能にする」:デフォルト設定のまま変更なし
  • 「ファイルのコピーの開始およぶ応答ファイルの作成」:デフォルト設定のまま変更なし
  • 「追加の製品のインストール」:しない(デフォルト)
4.「DB2ファースト・ステップ」
クライアントのインストールが完了すると以下のように「プロファイルの作成」を促されます。

「プロファイルを作成する」をクリックすると、Webブラウザで「DB2ファースト・ステップ」が表示されますが、クライアント製品のセットアップの仕方がわからなかった(^^;)ので、今回はそのままブラウザの画面を閉じて、Windowsの「スタートメニュー」から「構成アシスタント」を起動することにします。

5. 構成アシスタントの起動
スタートメニューから、「IBM DB2」 -> 「DB2COPY1(デフォルト) 」 -> 「セットアップ・ツール」とメニューをたどり、「構成アシスタント」を起動します。 「ここでデータベースを追加しますか?」のメッセージが表示されますので、「はい」をクリックすると、「データベースの追加ウィザード」が起動します。

6. ウィザードのメニューに従ってデータベースを構成する
今回は以下のように構成しました。
  • 「接続のセットアップ方法を選択する」では、「データベースへの接続を手動で構成する」を選択。
  • 「通信プロトコルを選択する」では、「TCP/IP」を選択。 
  • 「TCP/IP通信パラメータを指定する」では、以下の図のように設定。

  • 「接続するデータベース名を指定する」では、データベース名に"sample"を指定。別名には、データベース名と同じものが自動的に入力されます。
  • 「このデータベースをデータ・ソースとして登録する」は、デフォルト設定のまま変更なし。
  • 「ノード・オプションを指定する」では、以下の図のように設定。

7. "SAMPLE"データベースへテスト接続する
「データベース'SAMPLE'の構成が正常に追加されました。」のメッセージが表示されたら、「テスト接続」をクリックすると、い科のようにユーザーIDとパスワードを要求されます。 正しく指定して、「テスト接続」をクリックし、「CLI接続は正常にテストされました。」と表示されれば、正しく構成されています。


8. コントロール・センターの起動
スタートメニューから、「IBM DB2」 -> 「DB2COPY1(デフォルト)」 ->「汎用管理ツール」とたどり、コントロール・センターを起動します。「コントロール・センターの表示方法」をたずねられたら、とりあえず「詳細」にしておくとよいと思います。

9. コントロール・センターをちょっとだけ触ってみる
コントロールセンターが表示されたら、左側のペインから「すべてのデータベース」->"SAMPLE"をクリックします。 データベースに接続する際のユーザーIDとパスワードを要求されます。「表」をクリックして、少し待つとテーブルの一覧を右側上段のペインで確認することができました。 

コントロール・センターからは他にもSQLを発行したりするなど、様々なことができるようです。

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サーバーに別のマシンから接続するための設定を行いました。

2010年3月31日水曜日

続・メインフレームエミュレータでLinuxを動かす(6)

 fedora11/s390xのホスト名は"localhost"なのですが、これを変更しようと思います。 ホスト名の変更に伴い、前回までに構成したDB2サーバーの設定も変更する必要があります。

ホスト名の変更自体は簡単で、/etc/sysconfig/networkファイルに"HOSTNAME=..."の行を追加して、再起動するだけです。 今回はホスト名を"zfedora"としました。
-bash-4.0# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=zfedora
再起動後は、ここの情報を参考に、以下の操作を行いました。
1. dasusr1ユーザーでDAS (Database Administration Server)を停止
[dasusr1@zfedora ~]$ db2admin stop 
2. db2inst1ユーザーでDB2インスタンスを停止
[db2inst1@zfedora ~]$ db2stop 
3. rootユーザーでDB2レジストリ変数の変更
-bash-4.0# /opt/ibm/db2/V9.7/adm/db2set -g DB2SYSTEM=zfedora
4. db2node.cfgファイルの書き換え(db2nodes.cfg.localhostが変更前のファイル)
[katzkichi@zfedora ~]$ su - db2inst1
Password:
[db2inst1@zfedora ~]$ cd sqllib
[db2inst1@zfedora sqllib]$ diff db2nodes.cfg db2nodes.cfg.localhost
1c1
< 0 zfedora 0
---
> 0 localhost 0
5. データベース構成の更新
[db2inst1@zfedora ~]$ db2 update admin cfg using DB2SYSTEM zfedora
DB20000I  The UPDATE ADMIN CONFIGURATION command completed successfully.
[db2inst1@zfedora ~]$ db2 update admin cfg using SMTP_SERVER zfedora
DB20000I  The UPDATE ADMIN CONFIGURATION command completed successfully.
6. dasusr1でDASの起動
[dasusr1@zfedora ~]$ db2admin start
SQL4406W  The DB2 Administration Server was started successfully.
7. db2inst1ユーザーでDB2インスタンスの起動
[db2inst1@zfedora ~]$ db2start
03/28/2010 10:13:21     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.

以上でホスト名の変更とDB2の構成変更は終わりです。

2010年3月22日月曜日

続・メインフレームエミュレータでLinuxを動かす(5)

今回は、fedora11/s390xにインストールしたDB2 v9.7の動作確認を行いたいと思います。

まず、インストール中に作成したDB2インスタンス"db2inst1"のインスタンスオーナーユーザーである"db2inst1"ユーザーでfedora11/s390xにログインします。パスワードはDB2のインストール中に設定したものを使用します。
[hercules@ap01 ~]$ ssh -l db2inst1 192.168.200.3
db2inst1@192.168.200.3's password:

"db2start"コマンドでdb2inst1インスタンスを起動します。"SQL1063N  DB2START processing was successful" メッセージが表示されれば、インスタンスの起動に成功しています。
db2inst1@localhost ~]$ db2start
03/19/2010 11:42:36     0   0   SQL1063N  DB2START processing was successful.
SQL1063N  DB2START processing was successful.

DB2にはサンプルデータベース作成用のコマンド"db2sampl"が付属しています("db2sample"ではないので注意)ので、これを実行します。"'db2sampl' processing complete."のメッセージが表示されれば完了です。
[db2inst1@localhost ~]$ db2sampl

  Creating database "SAMPLE"...
  Connecting to database "SAMPLE"...
  Creating tables and data in schema "DB2INST1"...
  Creating tables with XML columns and XML data in schema "DB2INST1"...

  'db2sampl' processing complete.

作成した"SAMPLE"データベースに接続してみます。 "db2 connect to sample"を実行します。Database server名が"DB2/LINUXZ64"になっていますね。
[db2inst1@localhost ~]$ db2 connect to sample

   Database Connection Information

 Database server        = DB2/LINUXZ64 9.7.1
 SQL authorization ID   = DB2INST1
 Local database alias   = SAMPLE

"SAMPLE"データベース内のテーブル一覧を表示してみます。 "db2 list tables"を実行します。
[db2inst1@localhost ~]$ db2 list tables

Table/View                      Schema          Type  Creation time
------------------------------- --------------- ----- --------------------------
ACT                             DB2INST1        T     2010-03-19-11.53.14.863451
ADEFUSR                         DB2INST1        S     2010-03-19-11.53.51.886267
CATALOG                         DB2INST1        T     2010-03-19-11.54.38.632393
CL_SCHED                        DB2INST1        T     2010-03-19-11.53.12.168361
CUSTOMER                        DB2INST1        T     2010-03-19-11.54.37.661858
DEPARTMENT                      DB2INST1        T     2010-03-19-11.53.12.344265
DEPT                            DB2INST1        A     2010-03-19-11.53.12.769500
EMP                             DB2INST1        A     2010-03-19-11.53.13.125422
EMPACT                          DB2INST1        A     2010-03-19-11.53.14.835833
EMPLOYEE                        DB2INST1        T     2010-03-19-11.53.12.784090
EMPMDC                          DB2INST1        T     2010-03-19-11.54.12.189308
EMPPROJACT                      DB2INST1        T     2010-03-19-11.53.14.673046
EMP_ACT                         DB2INST1        A     2010-03-19-11.53.14.851410
EMP_PHOTO                       DB2INST1        T     2010-03-19-11.53.13.139212
EMP_RESUME                      DB2INST1        T     2010-03-19-11.53.13.589414
INVENTORY                       DB2INST1        T     2010-03-19-11.54.37.422684
IN_TRAY                         DB2INST1        T     2010-03-19-11.53.15.151188
ORG                             DB2INST1        T     2010-03-19-11.53.15.263343
PRODUCT                         DB2INST1        T     2010-03-19-11.54.36.979472
PRODUCTSUPPLIER                 DB2INST1        T     2010-03-19-11.54.39.421663
PROJ                            DB2INST1        A     2010-03-19-11.53.14.385700
PROJACT                         DB2INST1        T     2010-03-19-11.53.14.398559
PROJECT                         DB2INST1        T     2010-03-19-11.53.14.011351
PURCHASEORDER                   DB2INST1        T     2010-03-19-11.54.38.075299
SALES                           DB2INST1        T     2010-03-19-11.53.15.464041
STAFF                           DB2INST1        T     2010-03-19-11.53.15.359394
STAFFG                          DB2INST1        T     2010-03-19-11.53.48.101443
SUPPLIERS                       DB2INST1        T     2010-03-19-11.54.39.021910
VACT                            DB2INST1        V     2010-03-19-11.53.15.712022
VASTRDE1                        DB2INST1        V     2010-03-19-11.53.15.904366
VASTRDE2                        DB2INST1        V     2010-03-19-11.53.15.955794
VDEPMG1                         DB2INST1        V     2010-03-19-11.53.15.806789
VDEPT                           DB2INST1        V     2010-03-19-11.53.15.560107
VEMP                            DB2INST1        V     2010-03-19-11.53.15.640160
VEMPDPT1                        DB2INST1        V     2010-03-19-11.53.15.851954
VEMPLP                          DB2INST1        V     2010-03-19-11.53.16.344550
VEMPPROJACT                     DB2INST1        V     2010-03-19-11.53.15.773254
VFORPLA                         DB2INST1        V     2010-03-19-11.53.16.159036
VHDEPT                          DB2INST1        V     2010-03-19-11.53.15.607765
VPHONE                          DB2INST1        V     2010-03-19-11.53.16.301730
VPROJ                           DB2INST1        V     2010-03-19-11.53.15.674485
VPROJACT                        DB2INST1        V     2010-03-19-11.53.15.739944
VPROJRE1                        DB2INST1        V     2010-03-19-11.53.16.009754
VPSTRDE1                        DB2INST1        V     2010-03-19-11.53.16.058355
VPSTRDE2                        DB2INST1        V     2010-03-19-11.53.16.108992
VSTAFAC1                        DB2INST1        V     2010-03-19-11.53.16.201096
VSTAFAC2                        DB2INST1        V     2010-03-19-11.53.16.248972

  47 record(s) selected.

テーブルの定義を表示させる場合は"db2 describe table <テーブル名>"コマンドを使います。 "STAFF"テーブルに対してこのコマンドを実行してみます。
[db2inst1@localhost ~]$ db2 describe table staff

                                Data type                     Column
Column name                     schema    Data type name      Length     Scale Nulls
------------------------------- --------- ------------------- ---------- ----- ------
ID                              SYSIBM    SMALLINT                     2     0 No
NAME                            SYSIBM    VARCHAR                      9     0 Yes
DEPT                            SYSIBM    SMALLINT                     2     0 Yes
JOB                             SYSIBM    CHARACTER                    5     0 Yes
YEARS                           SYSIBM    SMALLINT                     2     0 Yes
SALARY                          SYSIBM    DECIMAL                      7     2 Yes
COMM                            SYSIBM    DECIMAL                      7     2 Yes

  7 record(s) selected.

STAFFテーブルに対してSQLを発行してみます。
[db2inst1@localhost ~]$ 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 record(s) selected.

"db2 terminate"コマンドで、接続を解除できます(db2inst1インスタンスは停止しません)。
[db2inst1@localhost ~]$ db2 terminate
DB20000I  The TERMINATE command completed successfully.

"db2stop"コマンドを実行すると、"db2inst1"インスタンスが停止します。
[db2inst1@localhost ~]$ db2stop
2010-03-19 12:01:07     0   0   SQL1064N  DB2STOP processing was successful.
SQL1064N  DB2STOP processing was successful.

非常に簡単ですが、DB2インストール後の動作確認を行ってみました。

2010年3月21日日曜日

続・メインフレームエミュレータでLinuxを動かす(4)

今回は、"DB2 v9.7 Linux on zseries"をfedora11 on s390x (fedora11/s390x)にインストールしたいと思います。

DB2のインストールに当たっては、母艦Linuxの性能がそれなりでないとツライです。CentOS (s390)を動作させていた環境(Windows上のVirtualPC2007)でDB2のインストールを試したところ、インストーラの起動に30分ぐらいかかってしまいました。 さすがにこれでは先が思いやられるので、今回からは母艦のLinux(CentOS 5.4)をネイティブで(仮想環境でなく)動作させています。

1. 事前準備
DB2のインストーラーにはコマンドラインのものとXを使用するものがあるようですが、(自分も含めて)初心者にはXを使用するものが便利だと思います。インストールには長時間を要すると思われるので、今回はfedora11/s390x上でVNCを起動し、VNC下で動作するtwm/xterm上でDB2インストーラーを起動することにしました。yumでVNC関連のパッケージをインストールするために、以下のコマンドを実行します。
# yum -y install xterm twm vnc-server xauth
  DB2インスタンスの作成には"libstdc++.so.5"も必要です。 このライブラリは"compat-libstdc++-33"パッケージで提供されるのですが、yumではインストールできない(パッケージが見つからない)ので、ここで"compat-gcc-32"を検索し、関連パッケージとして表示される"compat- libstdc++-33-3.2.3-68.s390x.rpm"パッケージをダウンロードし、fedora11/s390x上に持っていってrpmコマンドでインストールしました。
# rpm -ivh compat-libstdc++-33-3.2.3-68.s390x.rpm
  IBMのサイトからダウンロードしておいた"DB2 v9.7 Linux on zseries"を母艦Linuxからfedora11/s390x上にscpでコピーします。 コピー完了後、tarコマンドで展開しておきます。
[hercules@ap01 fedora11_s390x]$ scp v9.7_linux390x64_server.tar.gz katzkichi@192.168.200.3:/home/katzkichi

2. VNCサーバの起動
fedora11/s390x上でVNCサーバを起動します。 起動自体は"vncserver"コマンドで可能(初回はパスワード設定が必要)です。が、しかし今回の環境ではvncserverを"ja_JP.UTF-8"ロケールで起動すると、DB2のインストーラが文字化けするという問題に遭遇しました。
fedora11のsshdの設定はロケール情報をクライアントから引き継ぐ設定になっているようですので、母艦Linuxのロケールが"ja_JP.UTF-8"になっていると、sshで母艦側からfedora11にログインした時点でシェルのロケールが"ja_JP.UTF-8"になってしまいます。 今回は以下のように、heculesエミュレータのコンソールからログインしてVNCサーバを起動してこの問題を回避することにしました(ロケールは"POSIX"となるようです)。他の回避策としてはfedora11/s390x側でクライアントのロケールを引き継がないようにする(/etc/ssh/sshd_configをいじる)という手もあります。

3.fedora11/s390x にVNCviewerで接続する
母艦Linux上でvncviewerを起動する場合は問題ないですが、母艦Linuxとは別のマシンでvncviewerを動作させる場合、vncviewerを動作させるマシン上でルーティング設定が必要になります(sshポートフォワーディングを使う手もありますが)。以前におこなった設定が参考になると思います。 接続できると以下のような感じになります。

4. DB2インストーラーの起動
DB2のインストールイメージを展開して作成される"server"ディレクトリにcdし、"./db2setup"をタイプします。 しばらく待つと(母艦Linuxの性能にもよりますが、20分ぐらい)、以下のような"welcome"画面が表示されます。 

画面左側の"Install a product"をクリックしてしばらく待つと、以下のようにインストールする製品を選択する画面に遷移します。 今回は、"DB2 Enterprise Server Edition Version 9.7"を選択しました。

再びしばらく待つと、以下のような"Enterprise Server Edition"インストール用のウィザード画面が立ち上がります。 "Next"をクリックします。 


5. DB2インストール各種設定
以降ウィザードの質問に答える形でDB2インストールのパラメータを設定していきます。今回は以下のような設定としました(なお、各パラメータ設定の先頭の番号は、ウィザードの左側に表示されているものです)。
  • 2. "Software License Agreement" - 同意
  • 3. "Installation type" - デフォルト (変更なし)
  • 4. "Installation action" - デフォルト(変更なし)
  • 5. "Installation directory" - デフォルト(変更なし)
  • 6. "SA MP" - インストールしない ("Do not install SA MP"を選択)
  • 7. "DAS user" - デフォルト (dasusr1ユーザーのパスワードのみ設定)
  • 8. "Instance setup" - デフォルト(変更なし)
  • 9. "Partitioning options" - デフォルト(変更なし)
  • 10. "Instance owning user" - デフォルト (db2inst1ユーザーのパスワードのみ設定)
  • 11. "Fenced user" -  デフォルト (dbfenc1ユーザーのパスワードのみ設定)
  • 12. "Tools catalog" - デフォルト(変更なし)
  • 13. "Notification setup" - 後で設定する ("Do not ... "を選択)
  • 14. "Summary" - 最終確認画面 ("Finish"を押すだけ)
"Summary"画面で"Finish"を押したら、ファイルのコピーが始まります。 コピーが終わるとインストールは終了です。 今回は、以下のように「インストール中にminorな問題が発生した」というメッセージが表示されてしまいました。 

"Log File"タブも確認してみたのですが、何が問題なのかよくわかりませんでした・・・。 ま、今回はあまり気にせず(^^;)先に進むことにします。

ということで、とりあえずDB2のインストール自体は完了しました。 次回は、DB2の起動確認、"SAMPLE"データベースの作成とクエリの発行などを試してみたいと思います。

2010年3月10日水曜日

続・メインフレームエミュレータでLinuxを動かす(3)

yumの実行中に遭遇した二つ目のエラーはこんな感じでした。
-bash-4.0# yum -y install vsftpd
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.s390x 0:2.2.0-0.1.pre4.fc12 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================================
 Package          Arch            Version                          Repository        Size
==========================================================================================
Installing:
 vsftpd           s390x           2.2.0-0.1.pre4.fc12              fedora           135 k

Transaction Summary
==========================================================================================
Install      1 Package(s)
Update       0 Package(s)
Remove       0 Package(s)

Total download size: 135 k
Downloading Packages:
vsftpd-2.2.0-0.1.pre4.fc12.s390x.rpm                               | 135 kB     00:02
Running rpm_check_debug
ERROR with rpm_check_debug vs depsolve:
rpmlib(PayloadIsXz) は vsftpd-2.2.0-0.1.pre4.fc12.s390x に必要とされています
Complete!
(1, [u'Please report this error in http://yum.baseurl.org/report'])
"rpm_check_debug"や"rpmlib"をキーワードにして検索してみると、どうやらrpm関連のパッケージを更新する必要があるらしいことがわかりました。パッケージの入手先はここです。以下のrpm関連のパッケージをいったん母艦のLinuxにダウンロードし、scpでFedora11にコピーします(scpを使用したのはFedora11でftpdが動いていないため)。なお、scpを実行する前に作業用としてkatzkichiユーザーをFedora11上でadduserしています。
[hercules@ap01 fedora11_s390x]$ ls *.rpm
-rw-r--r-- 1 hercules hercules 1070571  3月  3 11:47 rpm-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 hercules hercules  374716  3月  3 11:47 rpm-libs-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 hercules hercules   54661  3月  3 11:47 rpm-python-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 hercules hercules  105772  3月  3 11:57 xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm
[hercules@ap01 fedora11_s390x]$ scp *.rpm katzkichi@192.168.200.3:/home/katzkichi
katzkichi@192.168.200.3's password:
rpm-4.7.1-2.fc11.s390x.rpm                              100% 1045KB   1.0MB/s   00:00
rpm-libs-4.7.1-2.fc11.s390x.rpm                         100%  366KB 365.9KB/s   00:00
rpm-python-4.7.1-2.fc11.s390x.rpm                       100%   53KB  53.4KB/s   00:00
xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm                 100%  103KB 103.3KB/s   00:00
コピーが終わったら、rpmコマンドでパッケージのインストール/アップデートを行います。
-bash-4.0# ls -l
合計 1592
-rw-r--r-- 1 katzkichi katzkichi 1070571 2010-03-03 02:55 rpm-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 katzkichi katzkichi  374716 2010-03-03 02:55 rpm-libs-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 katzkichi katzkichi   54661 2010-03-03 02:55 rpm-python-4.7.1-2.fc11.s390x.rpm
-rw-r--r-- 1 katzkichi katzkichi  105772 2010-03-03 02:57 xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm
-bash-4.0# rpm -ivh xz-libs-4.999.8-0.7.beta.fc11.s390x.rpm
準備中...                ########################################### [100%]
   1:xz-libs                ########################################### [100%]
-bash-4.0# rpm -Uvh rpm-*
準備中...                ########################################### [100%]
   1:rpm-libs               ########################################### [ 33%]
   2:rpm                    ########################################### [ 67%]
   3:rpm-python             ########################################### [100%]
これで無事にyumが使えるようになります。

次回はいよいよFedora11にDB2をインストールしたいと思います。