きどたかのブログ

いつか誰かがこのブログからトラブルを解決しますように。

DB2

SQLJとFindbugs

FindBugsの除外フィルターを書いた。その結果、300〜400個くらいのHighが消えた。SQLJの吐き出すJavaソースはクズなので、それに埋もれて他のソースの問題に気付きにくくなる。迷わずに除外フィルターを書くべき。ウォーリーを探してる場合じゃない。

シノニムとdb2sqljcustomize

DB2の接続ユーザ(CONNUSER)と、スキーマ(SCHEMA1)が異なる場合に、 SCHEMA1スキーマからシノニムで別スキーマ(SCHEMA2)のテーブルに飛ばしていると、 sqljのカスタマイズ&バインドに失敗する。 これはcurrentSQLID=SCHEMA1をurlに指定することでしか回避でき…

DB2トリガーMDBを考えてみる(z/OS)

可能性は2つかな。 DB2トリガーをいずれも使う。 片方はJavaプロシージャを使って独自JMS。 もう一方はMQ関数を使う、DB2で。 後者の方が面白そうだ。 WebSphere Message Brokerなんかは、DatabaseInput Nodeがあるが、 あれはプル型な動きをするので、今回…

SQLJトランスレータのバージョン確認方法

java -cp sqlj.zip sqlj.tools.Sqlj -version java -cp sqlj4.zip sqlj.tools.Sqlj -version なんか周りの人は知らなかったようなので教えておいた。 ついでにネットでも探しにくいのでここに一筆書いておく。 基本的にはdb2jcc.jar/db2jcc4.jarと同じような…

DB2 for z/OS JDBC Type2でよく見る失敗

いくつかのよくある失敗の話。初期に一番多く発生するのは、ssidを指定していない、もしくは間違って指定している。flowConnectとか出てたら疑う。db2.jcc.ssidはType2で必要な設定。データソースのプロパティにも出来るが、クラスタスコープのデータソース…

ロック待機でテストが止まる事象

DB2

職場でDB2のロック待機で、 jenkinsからのテスト実行が止まる事象が2回発生しておる。 理由は、個人端末からの接続が残っていることによるもの。 詳細の原因は突き止めていないが、 少なくともeclipseから複数のjavaプロセスが動いているようなので、 テスト…

DB2 for z/OSのデッドロックに関与したSQLの特定方法

デッドロックの分析に関して小さくまとまった資料があるので読んでいた。 全部を説明する気がなくなるくらいさっぱりしている。 SQLを特定するまでの話で、そのSQLの何が悪いかを扱うものではない。 IBM Techdocs Technote: Identifying the static SQL stat…

Running out of ASIDs

z/OSでASIDの数が枯渇するという話です。 2年くらい前に開発環境構築後に経験したことを 今の知識で補足して書いてみようと思う。 ASIDの数は有限で、再利用出来るのと、再利用出来ないのがある。 WAS for z/OSを導入後、MQをBINDINGS MODEで繋ぐため、 JCL…

WMQやDB2などのCPF(Command Prefix)について

CPFについて調べてあることを書いてみる。 CPFは、WMQやDB2にコマンドを打つ時に使うやつだ。 いきなりで申し訳ないが、CPFというアセンブラのマクロがある。 どうやらこのマクロでCPFを登録しているようだ。 CPFは、IEFSSNxxで登録する。普通はSYS1.PARMLIB…

SQLJについて知っておくこと

SQLJのイメージ。 静的SQL サポートしてるIDEが少ない。きっとRADくらいのものか。 IDEのリファクタリングが効かない。 コードは少なくなるというが、IDEがしょぼいので生産性は低い。 プリコンパイルが遅いのでイラつく customize時にonline-checkが行える…

db2sqljcustomizeをantに組み込むための知識

com.ibm.db2.jcc.sqlj.Customizerクラスにmainメソッドがあるのでこれを使う。 antタスクを提供して欲しいくらいだ。 Rational Application Developerだと、SQLJサポートの追加とかがあって、 RADが持ってるプラグインでsqlj.jarなんてのを使ってやるのだが…

DB2で前打ったコマンドをもう一度使う方法

DB2

そういえば、Oracleにもこういうのあったけど、DB2にもあるんだな。 h と打つと、ヒストリーが表示される。 その事は、こないだ実機で知った。 今はそこから情報を肉付けするために以下のページを見てる。 http://db2.jugem.cc/?eid=1371 どうやら、ヒストリ…

FORCE APPLICATIONを楽にしたい

DB2

LIST APPLICATIONSでアプリケーションハンドルを出して、 FORCE APPLICATIONする流れを手でやったりしてるんだけども、それをもうちょっと楽にしたい。 LIST APPLICATIONSで出た情報をテキストエディタで加工して FORCE APPLICATIONするのが手間で仕方ない。…

SQLJの壁を1つ乗り越えた(sqlj.runtime.Scrollable)

sqlj.runtime.Scrollableなイテレータ宣言の仕方。 DB2のマニュアルを信じていたのに、マニュアルではない書き方が必要。 sqljエディターの右クリックのコンテキストメニューより「SQLJアシスト」を使う。 まずこの時点でRational Appilcation Developerでも…

SQLJで壁にぶつかった

やりたいこと: sqlj.runtime.Scrollableを使って、ResultSetを作って、absoluteメソッドを叩きたい。 現状: rs.absolute(int)を叩くと例外が出る。 色々やっても全然解決しない。 ログはまずこんな感じで下知を飛ばした。 「TYPE_SCROLL_INSENSITIVEかTYPE…

クラスロードしてくれるな

前から気になってたことがまた気になり始めた。 WebSphereのデータソースおよびそのJDBCプロバイダで、どうしても変だなと思う事がある。 有効範囲がサーバーで、JDBCプロバイダとして、DB2 のUniversal Driverと、DB2のJCC Driverを定義してます。これらの…

db2sqljprintを叩いてみた

カスタマイザーにかける前に、serに対してdb2sqljprintをやってみた。 どうやらVARCHARとかTIMESTAMPとかは、 データベースに接続する情報がなくても、 Javaの型から推測されているようだ。 たぶん、StringはCHARではなく、VARCHARにとりあえずしておくのだ…

SQLJに関する所感

人と違ったものを使うと余計な壁にぶちあたるものです。 最近SQLJを触っているので試行錯誤を書いてみます。 SQLJで開発するとき、sqlj.zipやdb2jcc.jarが必要になるでしょう。 JDBC4.0対応のものは、sqlj4.zip、db2jcc4.jarでしょう。 ただ、DB2 ExpressC v…