ラベル DB2 の投稿を表示しています。 すべての投稿を表示
ラベル DB2 の投稿を表示しています。 すべての投稿を表示

木曜日, 1月 29, 2009

CentOSにDB2 v9.5 Express-C+NLpackをコマンドでインストール

忘れないようにメモ
とりあえず、IBMから
  • db2exc_950_LNX_x86.tar.gz
  • db2_v95_linuxia32_nlpack.tar.gz
をダウンロードしてくる
  1. ユーザーを作成
  2. db2icrtでインスタンスを作成
  3. db2set DB2COMM=tcpip
  4. db2set DB2DAS00 DB2COMM=tcpip
  5. iptableでポートを開けとく
  6. db2start
とりあえず、この状態でdb2コマンドを打つと動いてくれる
ただし、DBはまだ作ってないのでconnectなんてすればエラーが。。。

ここまでは、ネットを探せば見つかるんですが、

問題は言語パック(nlpack)の適用方法で、
僕の環境はX Windowを入れてないので解凍したディレクトリにあるdb2setupを実行しても
DISPLAY 変数が正しく設定されていません。 DISPLAY 変数が正しく設定されていて、指定されたディスプレイのウィンドウがオープンできるように許可が正しく設定されているかどうか確認してから、コマンドを再実行してください。
てな具合に叱られる。。。
まぁ、そりゃそうだな

とりあえず、gettingstartを呼んでみるとサイレントインストールモードがあることを発見!
# ./db2setup -r 応答ファイル これで良いらしい。

問題は、応答ファイルはどんなものなのか?

nlpack/db2/linux/samples/db2nlpack.rsp

の内容をいじるだけでOKでした。

あとは CREATE TOOLS CATALOG スキーマ名 データベース指定 でツールカタログ表を作成して

CREATE DATABASE hogehoge ・・・

まですれば後はご自由にってな感じだね
カレンダーがシンメトリーちっくな模様になった♪

木曜日, 1月 15, 2009

A5:SQL Mk-2 v2.3.1 RC1を試す

先日、まさか、要望が届いてしまうとは。。。に松さんからコメントが入ってた!
ありがとうございます!!
RC1版を公開したよという内容でした。

ごめんなさい、実は知ってました。。。
本当はすぐに書こうと思ってたんですが、ノートPCと闘っていたらコメントの方が先に。。。
withを使った実験もやってみて動作的にも
現状では私の求めているのに一番近いインテリセンス機能が実装されていると思います。

ちなみに簡単に実験してみたコード(DB2 v8.1で実験)
with
dummy1 as (
  select
      current date hiduke
    , 'test1' text
  from
    SYSIBM.SYSDUMMY1
)
, dummy2 as (select 'test2' text from SYSIBM.SYSDUMMY1)
select
    A.hiduke
  , A.text
  , B.text
from
  dummy1 A
  , dummy2 B

いやぁ~、十分すぎるほどの出来です!!

わぁ~い♪

火曜日, 1月 06, 2009

DB2 v8.2 + IBM Data Studio 1.2でコードインテリセンス

仕事場で使える無料のDB2のSQL入力補完機能付きツールが欲しくて欲しくて
色々探してみてるんですが、
  • A5:SQL Mk-2
  • 黒猫 SQL Studio
  • ValueSQL

  • 今のところはA5:SQL Mk-2が一番かな?

    しかし!複雑なSQLを作るときとかに僕はwith句をよく利用してるんですが、
    正直言ってそこまではコード補完が追いついてくれないのが悲しいところです。。。

    Oracle]ならosqleditで決まりなんですが、
    こっちもwith句部分のコード補完は効いてくれないんですよね。。。

    でもってIBM Data Studioを試してみようと
    仕事場でこっそりインストールw
    しかし、インストールの段階ですぐに気が付いたのですが、
    Eclipseベースのアプリなんですね。

    OS依存で結構なんで軽いソフトをお願いします。
    いや、まじで。。。

    ちなみにやっぱりwith句の入力補完はできませんでした。。。

    でも、フォローしておくとER図に「外部キーを類推する」オプションが意外と使えるかも。。。
    悲しいかな僕の仕事場ではRDMSなのに外部参照を利用しないというシステムばかりで、
    関連キーについての情報をER図を用意しておかないと訳が分からなくなるんです。。。

    水曜日, 6月 18, 2008

    DB2のJDBC Type2にハマる

    今日、仕事場でよくわからない現象が発生した。 それは、次のような事象でした。 各端末で次の操作をおこなう。 Javaでmarge文を発行(PrepareStatement#executeUpdate()) 対象DBはWindows2000server DB2 v8.2で更新するのは同じDBインスタンスの同一レコード 他にそのレコードは更新しない状況下であることは当然 marge実行時の戻り値が変なんです。 JDBCのAPI仕様上、PrepareStatement#executeUpdate()はreturn intとなってます。
    1. 端末Aでは、mergeのreturn 1
    2. 端末Bでは、mergeのreturn 0
    3. 端末Cでは、mergeのreturn 1
    というような結果になった。 ちなみに端末A,B,Cの全てで対象レコード1件が更新(when matched then)されます。 ここで、結果を見直すと・・・ 「何で端末Bではreturn 0なんだ??」って状態になるんです。。。 最初はクラスローダが読み込んでいるJDBCドライバのverが違うのかな?と思っていたんですが、そういうわけでもないみたい。 (みんな、同じくDB2 v8のレガシードライバだということはすぐにわかったんですが。。。) ここからは、わかったことを
    1. 端末Aは確かにbuildlevelっていう値がB,Cとは違っていたが、BとC同じだった。
    2. 端末Bで使用しているドライバをClassLoader#getResource()で導き出し、端末Aで使用してもreturn 0になるわけではない。(return 1)
    3. java.sql.Connection#getMetaData()#getDriverVersion()を見てみると、同じドライバクラスを利用しているのに表示されるバージョンが違うということに気づく
    4. とりあえず、DB2Driverクラスを逆コンパイルしてソースを追いかける。
    5. getDriverVersionをどんどん追跡していくと。。。
    6. nativeメソッドにたどり着き、そこでふと気づく「そういや、Type2で接続してたんだよね。。。」
    7. Type2ってのはType4のようにダイレクトに接続するのではなく、一端クライアントのネイティブライブラリを通して接続する種類であることを思い出し、DB2Driverクラスが読み込んでいるdllを探し始める
    8. 端末ごとにdllのversionをチェックしてみると驚きの結果が。。。
    場所 :db2jdbc.dll :LegacyDriver(buildlevel) 端末A :8.1.7.447 :s040812(DB2Clientのdb2java.zip) 端末B :8.1.0.36 : s021023(Websphere付属?のdb2java.jar) 端末C :8.1.8.762 :s021023(Websphere付属?のdb2java.jar) みんな、バラバラやん!! そりゃないよ。。。 しかし、dllのversionが8.1.0だとmargeのreturnが0になるってどうなんだろ?? 最終的に端末Bのクライアントを再インストールしてとりあえず解決とした。 (FixPackを適用すれば回避できるかも。。。)

    failed to read qemu headerのときのメモ

    かなり久々。。。 忘れないようにここに書きこんでおく。 ちょっとした手違いで libvirtでイメージを起動しようとすると failed to read qemu header なんておっしゃられて起動しない。。。 vmwareserverを使って...