DB2 Express-C FP2へのアップデート作業の呪い
RailsをDB2で使おうとしたところ、Rails-DB2アダプタを使うためには、DB2 9のFixPack2相当のDBが必要らしい。
自分のマシンに入っているDB2 Express-CはFPが当たっていないものなので、FP2相当にアップデートすることに。
ところがところが... てっきりアップデータを動かしてハイ終わりと思ったら、Express-Cの場合はインストールし直しらしい...(泣
ということで、勉強も兼ねて、バックアップ取ってからFP2を入れ直すところまでの作業ログを取ってみたいと思っていたのだけど...
結論から言うと失敗しました。ということで失敗ログを。
まずバージョンの確認から
これはコマンドラインからdb2levelで確認できる。
いつもお世話になってるsimさんのblogによると
http://db2.jugem.cc/?eid=1087
C:\ruby\softdir\config>db2level
DB21085I インスタンス "DB2" は、"32" ビットおよび DB2 コード・リリース "SQL09010" をレベル ID "02010107" で使用します。
情報トークンは、"DB2 v9.1.0.356"、"s060629"、"NT32"、およびフィックスパック "0"です。
DB2 コピー名 "DB2COPY1" で製品は"C:\PROGRA~1\IBM\SQLLIB" にインストールされます。C:\ruby\softdir\config>
あぁ。やっぱりFP入ってないorz
ということで開始〜。
DB2 Express-C 9.1.2のダウンロード
フリーのDB2 Express-Cはここから落とせます。
http://www-306.ibm.com/software/data/db2/express/download.html
300MB強あるので、気長に待ちましょう。
HTTP接続でダウンロードする以外に、Javaアプレット製のダウンローダがあって、それを使えば複数コネクションを張ってくれて比較的速く落とすことができるようです。
その間にDBのバックアップ
DB2 Express-Cのアップデートはフルインストールし直しになってしまうので、データベースをバックアップしないといけないらしい。せっかくだから、イメージをダウンロードしている間にやってみることに。
スタート>IBM DB2>DB2COPY1(デフォルト)*1>汎用管理ツール>コントロールセンター
次に、コントロール・センター>全てのシステム>データベース>[マシン名]>インスタンス>DB2>データベースと展開していくと、おなじみのDB円柱が。もうすっかりSQL-Serverライクになってしまったなぁここ。
バックアップしたいDBで右クリックすると、[バックアップ]のメニューが出てくるので選ぶとバックアップウィザードが起動してくれて、指示に従ってフルバックアップを取ってしまう。バックアップ先はファイルシステム、バックアップ・パスをg:\db2bak(gドライブはフラッシュメモリ)を指定した。
DB2の入れ直し
次にいよいよ入れ直し。
これは普通に、コントロールパネルからプログラムの追加と削除でやった。
IBM DB2を削除。
さてと、それじゃあFP2が当たってるイメージでインストールしなおすぞー。おー!
ハマりの一里塚
・・・まず最初に惨状を説明しよう。
それは、バックアップしたDBを書き戻そうとした時に起こった。
CREATE DATABASE TESTDB (いろいろオプション)
SQL1005N データベース別名 "TESTDB" は、すでにローカル・データベース・ディレクトリーまたはシステム・データベース・ディレクトリーのどちらかに存在しています。
あれ?アンインストールしたのに。んじゃ、一度DROPしとこう。
DROP DATABASE TESTDB
SQL1013N データベース別名またはデータベース名 "TESTDB"
が見つかりませんでした。 SQLSTATE=42705
ちょwまってw あんた今有る言うたやんけ!
などとDB2にツッコミを入れるものの、機械にハリセンリセットをかますわけにもいかないので、しょうがなく原因を追及することに。
C:\DB2にデータがどんどん入っていってたのを思い出して、c:\DB2を覗くと...あ。DBのディレクトリが残ってる。でも名前を変えても特に挙動は変わらず。
うーん。どうやら他にも残ってるみたいだけど... わからないので、仕方なくもう一度アンインストール>C:\DB2フォルダとC:\Program files\SQLLIBフォルダを全消し>再インストール、というようにクリーンにしなおしてみました。
本当にこれでいいのだろうか... なんだかお馬鹿なことをしている気もするけど、今のところはこの運用で。
つづく。
*1:ここは入れ方によって微妙に違うかもしれない