ma-100140 @ ウィキ Turbolinux Server 11 (Musasabi)2回目 
※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Vien Linux 4.2とXWindowからのセットアップではうまくいきました。XWindowからインストールする場合は

  1. rootで./db2setup を実行
  2. db2inst1ユーザーでXWindowsにログインし、構成アシスタントを起動します
  3. この後の設定はMS Windowsと同じです。

困ったことに、このサーバーにはXWindowはインストールしていない。しかも期限切れでturbo+は起動しません。まさか手動でパッケージを展開する気はおきないし、ソースからコンパイルするのも面倒そう。とりあえずlibstdc++.so.5 と、libaio.so.1 がないと言われるのを解消します。

libstdc++.so.5を入れる

compat-libstdc++-33-3.2.3-68.i686.rpmを入手して、中身を取り出します。
展開できたlibstdc++.so.5.0.7をlibstdc++.so.5の名前で/usr/libにコピーします。

libaio.so.1を入れる

libaio-0.3.98-2.i686.rpmを入手して、中身を取り出します。 展開できたlibaio.so.1をで/usr/libにコピーします。
これには微妙にバージョンが関係するようです。2個ほどチャレンジしたらうまくいきました。

これで騙せるはずです。

CUI環境のため ./db2installでインストールします。

しかしながら、これでは英語版しかインストールできない?ために応答ファイルを使ったインストールで対応します。

応答ファイルを利用したインストール

応答ファイルのサンプルがついていますので、中身を見ながら適切にコメントアウトします。
LIC_AGREEMENT = ACCEPT がポイントです。 ACCEPTにしないと進めません。

>./db2setup -r /home/admin/adcl/adcl.rsp

adcl.rspが応答ファイルです。私の場合は絶対パスで表記しないとファイルがないとエラーになりました。 言語関係では以下をコメントアウトしました。

LANG                     = EN              ** en_US
LANG                     = JP              ** ja_JP
ENCODING                 = EUC             ** CN, JP, KR, TW

グループの追加

>groupadd -g 500 db2grp1

ユーザーの追加とパスワードの設定

>useradd -u 500 db2inst1 -g db2grp1
>passwd dbsinst1

インスタンスの作成

>/opt/IBM/db2/V8.1/instance/db2icrt -u db2inst db2inst

この後の作業はdb2inst1で行います。

>su - db2inst1

うまく設定できていれば、db2と実行するとSQLコマンドプロセッサーが起動します。

ノードの登録

>db2 catalog tcpip node サーバー名 remote サーバー名.sample.co.jp server 50000

ノード上のDBを登録

>db2 catalog db DB名 as DB名 at node サーバー名

接続できるかの確認

>db2 connect to db名 user db2inst1 using password

ショックです。エラーになります。

SQL0332N  There is no available conversion for the source code page "819" to
the target code page "UNKNOWN".  Reason Code "1".  SQLSTATE=57017

どうも文字コードの変換がうまくいってないよです。

>db2 -a connect to db名 user db2inst1 using password
SQLCA Information

sqlcaid : SQLCA     sqlcabc: 136   sqlcode: -332   sqlerrml: 14
sqlerrmc: 819UNKNOWN1
sqlerrp : SQLJRERM
sqlerrd : (1) -2143879019      (2) 0                (3) 0
          (4) 0                (5) 0                (6) 0
sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)
          (7)      (8)      (9)      (10)       (11)
sqlstate: 57017

うまく繋がった環境で見てみると

>db2 -a connect to db名 user db2inst1 using password
SQLCA Information

sqlcaid : SQLCA     sqlcabc: 136   sqlcode: 0   sqlerrml: 49
sqlerrmc: 81943DB2INST1DB名QDB2/600041941909541
sqlerrp : SQL08022
sqlerrd : (1) -1               (2) 2                (3) 0
          (4) 1                (5) 0                (6) 0
sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)
          (7)      (8)      (9)      (10)       (11)
sqlstate: 00000

ちゃんと943になっている。リモートのAIX上のDB2はSJISでしたので...
SJIS(943)⇒EUC_JP(954)に変換されているよう。

今のLinuxの$LANGを確認

>echo $LANG

なんと、言語設定がない。どうも英語環境になっている感じです。そういえばエラーメッセージは英語だな。Vien Linux 4.2はちゃんと日本語のメッセージになります。Vien Linux 4.2で同じことをしたら

>echo $LANG
ja_JP.eucJP

ちゃんとEUC_JPになっています。
.bashrcを修正して$LANGにja_JP.eucJPを設定します。

>export $LANGE = ja_JP.eucJP
> /usr/local/bin/isql -v DBxx db2inst1 db2inst1
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>

やっとちゃんとつながったようです。

スキーマの識別子

この設定のままではテーブル名の前にスキーマの識別子を修飾しないといけません。面倒なので設定を変更します。

  • db2cli.ini
    [tstcli1x]
    uid=userid
    pwd=password
    autocommit=0
    TableType="'TABLE','VIEW','SYSTEM TABLE'"
    
    [tstcli2x]
    ; Assuming dbalias2 is a database in DB2 for MVS.
    SchemaList="'OWNER1','OWNER2',CURRENT SQLID"
    
    [MyVeryLongDBALIASName]
    dbalias=dbalias3
    SysSchema=MYSCHEMA
    
    [sampleDB]
    CurrentSchema=RAKFWSEL
    DBALIAS=sampleDB