ma-100140 @ ウィキ
Turbolinux Server 11 (Musasabi)2回目
最終更新:
ma-100140
Vien Linux 4.2とXWindowからのセットアップではうまくいきました。XWindowからインストールする場合は
- rootで./db2setup を実行
- db2inst1ユーザーでXWindowsにログインし、構成アシスタントを起動します
- この後の設定は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: 819UNKNOWN1 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: 81943DB2INST1DB名QDB2/600041941909541 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