2008年06月18日

[DB2]db2start で TCPIPエラー

なんぞ、表題の様な事象らしい。
普通にインスタンスを./db2icrt で作成して、
DB2COMM=TCPIP、/etc/services にもちゃんとサービスポートを
登録したとのこと。( ・ω・)ハテ?

diagにはTCPIPの接続に失敗したとの記載がある。
接続先は自分自身のはずなんだが、FW等で閉じている気配はない。
似た事例をgoogle先生に聞いてみると、

ホスト名を変更した時にdb2startできない場合
http://db2.jugem.cc/?eid=88


というblog記事が事例に酷似している。てか、この状態になっている。
db2nodes.cfgを見てみると、確かにこのサーバーの実ホスト名が記載されているが
この名前では通信出来ない。何故ならば、このDBサーバーはHACMP構成であり
代表名がホスト名になるため、本来のサーバー名では通信がブロックされているのだ。
ここを代表名になおして万事解決。
posted by koteitan at 14:03| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2008年06月06日

[DB2] アクセスプラン入門以前

オラクルの記事ならてんこもりヒットするのに、DB2になると
とたんに数が減る。(;・ω・)?

db2で実行計画を取得するまでの簡単なフローを書いてみた。
興味のあるかたはHP-TIPSからドゾー。

日本語の列名はヒドスだろ、jk。
せめてマニュアルには書いてヽ(`Д´)ノクレヨ
ひょっとして禁断なオプションだったりして。
-NO_MAP_CHAR はコマンドのお尻にくっつけておけばOK。

参考リンク
db2exfmtの文字化けを抑制する
http://db2.jugem.cc/?eid=241
posted by koteitan at 14:47| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2008年06月04日

2008年05月27日

[DB2]チェックペンディングかどうかの確認

よくわからんなー。
マニュアルにはSYSCATのSTATUSを見ろ、とある

つまり、わけわからんくなったら、

db2 "select tabschema,tabname,status,access_mode from syscat.tables"

で、status=N,access_mode=F でないテーブルがチェックペンディングだ、ということらしい。

ペンディングの解除には、set integrity for TBL immediate checked

(詳しいコマンドは → SET INTEGRITY )
posted by koteitan at 16:36| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

[DB2]ペンディングの確認と解除

たまには、Java のネタでも書きたいのぅ・・。(´-ω-`)
おいらデータベースっちゅうのは嫌いなんだよ、なんかな、
生理的に受け付けないちゅうか・・。ヤレヤレ

db2において、データをロードすると、バックアップペンディングになる。
そりゃそうだ、アクティブログとデータが不整合してんだから、当たり前だ。
不整合というと言葉が変だな、まーどうでもいい。

これを解除するには、素直にオフラインバックアップすればいい。
restore? そんなの関係ねぃな、個人的な環境などで、
バックアップ('A`)マンドクセならば、db2dartという禁断のコマンドがある。

/chst というオプションが、ステータスの変更に対応している。
これは本来はトラブルシュートなどの目的でサポートから指示の有る場合以外は使用禁止だ、という位置づけである。

自己責任で行ってくだされ。

正攻法でいくなら、バックアップを取るしかない。
空き容量が無いなら、
(aix、unix)
db2 "backup db sample tablespace tbs01 to /dev/null"

(windows)
db2 "backup db sample tablespace tbs01 to nul"
posted by koteitan at 16:08| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2008年05月01日

snapshot の取り方

なんか、フェッチした行数とかメモリの使用量とかいろいろ
評価するときに使うみたいだなー。

(1)モニター設定を有効にする。
インスタンスオーナーにて、
db2 "update dbm cfg using DFT_MON_BUFPOOL on
DFT_MON_LOCK on DFT_MON_SORT on
DFT_MON_STMT on DFT_MON_TABLE on
DFT_MON_UOW on"

(2)設定を有効にするためにインスタンス上げ直し
db2 force applications all
db2stop
db2start

(3)設定を確認
db2 get monitor switches

(4)スナップショットをパチリ
db2 "get snapshot for database on [DB名]"


・再起動しなくても有効になるモニター値とかもあるみたい
・モニターを元に戻すには、(1)のコマンドを[off]で実行
参考リンク
posted by koteitan at 15:18| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2008年03月05日

LOB形式のあれこれ

c⌒っ*゚∀゚)っφ メモメモ...

LOB形式をDELエクスポート
保存先は/home/lobs.csv /home/lobfiles

export to /home/lobs.csv of del lobs to /home/lobsfile
modified by lobsinfile select * from lobtable

LOB形式をインポート
1ファイルに1LOB、保存場所は上と同じとする

load from /home/lobs.csv of del lobs from /home/lobfiles
modified by lobsinfile insert into lobtable

エクスポートされた、CSVの中身のLOB部分の書式は
filename.ext.nnn.mmm/ (スラッシュで終わる点に注意)
ここで、filename.ext は LOB の入ったファイルの名前、
nnn はファイル内の LOB のオフセット (バイト単位)、
mmm は LOB の長さ (バイト単位)

詳しくはこちら
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/c0004562.htm
http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/c0004581.htm

(7/11追記)
V8から複数ファイルを含む形式をサポートしているため、
普通にExportすると、1ファイル≠1レコードになる。
そこで、V7形式の1ファイル=1レコードにするには、
DB2_LOAD_OLD_LOBFILES というDB2環境変数をONにする。

db2set DB2_LOAD_OLD_LOBFILES=ON
db2stop
db2start

http://www-06.ibm.com/jp/software/data/developer/handouts/pdf/db2v8_ope02.pdf


posted by koteitan at 18:39| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2007年05月29日

[DB2] merge文

Oracleでしか使えないと思っていた。
なんと大分前から、DB2でも使えるようになっていた。

http://www-06.ibm.com/jp/software/data/developer/handouts/pdf/db2v8_func04.pdf

( ´・∀・`)へー

便利やわな。いちいちSelect for Updateしてロックして…と
やらなくていいからソースも(*´Д`)スキーリ

posted by koteitan at 17:00| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2007年04月06日

[DB2] Agentの数を確認する

SQL1226N とかが出た場合、まず疑うべきはdbmの設定。

db2 "get dbm cfg" | grep -i max

などで、各種最大値を疑う。
http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/admin/c0009674.htm?resultof=%22%e6%8e%a5%e7%b6%9a%e6%95%b0%22%20

十分足りているにもかかわらず出る場合は、dbの設定を疑う

db2 "get db cfg for [DB NAME]" | grep -i max

http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/admin/r0000279.htm?resultof=%22%4d%41%58%41%50%50%4c%53%22%20%22%6d%61%78%61%70%70%6c%73%22%20

現在のAgent数を見るには db2agentというプロセスの数を数える
ps -ef | grep db2agent | wc -l

でもいいが、これだと内部Agent数が見えないので、V7以降では
db2pd -agent

こっちのほうが解りやすい。
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0504poon2/

以下、参考リンクなど続きを読む
posted by koteitan at 13:58| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2007年03月19日

[DB2]オフラインバックアップについて

何故かいままで機嫌良く動いているDBのオフラインバックアップが
失敗する件について

DB2でオフラインバックアップするときにはオフラインに
なっていなければならない。当たり前なんだが。
つまり

db2 force applications all
で全てのエージェントを終了させて、

db2 list applications
で0件ならばOKなはずだ。

でも失敗する場合もある。
Databaseが明示的にActivateされている場合は
Deactivateしなくてはならない。
http://www-1.ibm.com/support/docview.wss?uid=std3cc76b8cc19270abb49256fdb000b8fe0

現在ActiveであるDBは db2 list active databases で判明できる。
というわけで何故かActivateされていたため失敗していたようだ。
db2 detactivate db [DB名] で非活性化し、事なきをえた。

以下、何故かActivateされていた件について


続きを読む
posted by koteitan at 13:56| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2007年02月28日

[DB2]表関連コマンド

表の定義を表示
 db2 "describe table テーブル名"
 db2 "describe table テーブル名 show detail" (詳細)

表の索引を表示
db2 "describe indexes for table テーブル名"
db2 "describe indexes for table テーブル名 show detail" (詳細)

キー名の列挙は索引の詳細の方で。

コマンド長いよ…db2…。
Oracleだとdesc テーブル名だったよなうな、たしか。
descが"describe"の略か。

de・scribe

━━ vt. 記述[描写]する; 描く; 言う ((as)).
de・scrib・a・ble ━━ a. 記述[描写]できる.


あんまりピンとこんなー。
posted by koteitan at 10:13| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2007年02月21日

[DB2]SQL5043N

(゚Д゚ )ムハァ

db2icrt してdb2startしたらSQL5043Nになった場合の
チェックポイント

(1)db2set -all で DB2COMM=TCPIPであること
(2)db2 get dbm cfg で下記の項目が/etc/services に正しく
 登録されていること
  (SVCENAME) = db2c_db2inst2
(3)netstat -anf inet | grep LISTEN でそのポートが
 別のプロセスに使われていないかどうか確認する

(4)SPM_NAMEがnullかどうか確認する(db2 get dbm cfg)
 ホスト名から1文字削った名前だった場合(デフォルトらしい)
 db2 update dbm cfg using SPM_NAME NULL
 でnullに更新する。

いあー、(4)でドツボったよ。
ググりまくって何とか解決したが、FAQでもいいぐらいじゃね?('A`)
SPM_NAMEはDRDA(ホストか?)で2phase-commitする時の設定らしい。unixやwindows onlyなら関係ない。
また、DB2がESEだったらnullにせよ、という記述もあったが
当方の環境 WSE+FP13でもSPM_NAMEの対応でokだった。

以下参考URL
 続きを読む
posted by koteitan at 11:43| Comment(0) | TrackBack(1) | DB2 | このブログの読者になる | 更新情報をチェックする

2007年02月09日

[DB2]メンテ

φ(`д´)カキカキ

(1)reorg
  insertやdeleteによる削除行や、オーバーフローを解消し、
  データを整列しなおす
(2)runstats
  ・統計情報が更新(再編されているので)
(3)rebind
  ・最新の統計情報でアクセスプランが更新

・静的SQLならrebindはしたほうがよい
・動的SQLにrebindは効果がないので意味無い。
 → javaとかでパラメーターマーカ使用している場合は動的SQL

海外のフォーラムに(・∀・)イイ!!記事があったので
メモしとく。

Put another way, for a heavy-loaded transaction environment with mostly
static SQL:
- REORG frequently.
- Do RUNSTATS only after reorgs (or inline with the REORG).
- REBIND rarely (only when you want different access paths).

For dynamic SQL and environments where the data is very volatile:
- Do RUNSTATS frequently.
- REORG as often as you can.
- REBIND doesn't apply for dynamic SQL.



参考URL
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0404mcarthur/index.html
http://www-06.ibm.com/jp/software/data/developer/pdchecklist/pf/sol2-1.html
http://www-06.ibm.com/jp/software/data/developer/pdchecklist/pf/
http://www-1.ibm.com/support/docview.wss?uid=std3d7c3a763d71ac76b49256f1c0013ec55
http://www.idugdb2-l.org/adminscripts/wa.exe?A2=ind0611e&L=db2-l&P=4061
http://www.geocities.jp/i_michee/db2/sql017.html
http://www-06.ibm.com/jp/software/data/developer/pdchecklist/pf/examsol3-1.html

posted by koteitan at 14:19| Comment(0) | TrackBack(1) | DB2 | このブログの読者になる | 更新情報をチェックする

2006年12月20日

[DB2]FixPackあれこれ

DB2のFixpack適用でトラぶったので、トラブルシュート方法

[経緯]
 FixPack適用後、インスタンス更新する前に自動でinittubが
 編集されてしまい インスタンスが起動させられてしまった。
 無論、db2iupdt していないのでインスタンスは正常活動しない。
 diag等にはSEG11(セグメンテーションフォールト)などが出る有様。
 ヽ(ヽ゚ロ゚)ヒイィィィ!!●~*ヒイィィィ!!(゚ロ゚ノ)ノ

[対策]
 ・まず、管理サーバーを更新する。
  dasupdt 管理サーバー名

 ・その後、インスタンスをkillする
  ps -ef | grep "インスタンスオーナー" で表示されたプロセスをkill
  diagになんか出るが、(・ε・;)キニシナイ!!

 ・db2iupdt "インスタンス名"
  インスタンスの更新がうまくいくようにお祈りする。(-∧-;) ナムナム

 ・killで終了したので、うまく起動できない。
  db2startしても既にアクティブだとかいう(・∀・) コワレタ !!

 ・まるごと再起動
  shutdown -Fr ●~*ヒイィィィ!!(゚ロ゚ノ)ノ
 
[総評]
 なんとかなったからいいようなものの、無茶苦茶や…。(;´Д`)
 無論、IBMに聞いたわけでもなんでもないので、このやり方を
 真似してデータがトンだとかなんとか言われても、私の知るところでは
 ありませんので、あしからず〜。
 
[感想]
 勝手に起動させんな。o(`ω´*)o
 修正プログラムの割に行儀悪いねん o(`ω´*)o



posted by koteitan at 18:01| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2006年09月08日

デフォルトスキーマ

[備忘録]

DB2でデフォルトスキーマを表示する

$db2 "values(current schema)"

DB2でデフォルトスキーマを変更する

 $db2 "set current schema = 'hoge'"

注意
 WebSphere配下でコネクションプーリング等を行っている場合はできない。
 デフォルトスキーマはDBセッション単位での設定である。

※db2cli.iniに登録することで標準的に変更してしまうことも可能

http://www-1.ibm.com/support/docview.wss?uid=std385c25395409949cc49256f1c001587e2
http://www-1.ibm.com/support/docview.wss?uid=std36a75a0ede33811ff49256f1c00158978
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/core/r0001956.htm


つかね、スキーマ名が間違ってるんで、SQL全部直すとかどうやねん…。
影響範囲とかテストの出戻りとか大変だな、おい。(;´Д`)ハァハァ

posted by koteitan at 17:08| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする

2006年07月19日

[DB2]索引の表示

(,, ゚×゚)

DB2でテーブルの索引を表示するには

describe indexes for table table名


DB2 でテーブルのエクスポート

db2 "export to hoge.ixf of ixf messages hoge.log SELECT * FROM <TABLE>"

DB2 でテーブルへのインポート

db2 "import from hoge.ixf of ixf commitcount 1000 messages hoge.log insert into <TABLE>"


詳しくはこのへん(Export)とか、このへん(Import)
describeはこのへん

まぁ、なんでこんなのかってぇと例のごとくですな。
連携受けたDDLが間違ってるなんて露にも思わないわけで、再編がこけて
(゚Д゚ )ハァ?
となってしまったよ。索引名が間違ってるとわねぇ…。
テストしてないのモロバレだよ?
posted by koteitan at 14:05| Comment(0) | TrackBack(0) | DB2 | このブログの読者になる | 更新情報をチェックする