-IBMのDBMS。日本国内だとOracleが圧倒的だが、世界的には追い上げているらしい。試用目的での製品版は容易に手に入らないが(My IBMに登録必須)、こちらもOracleExpressEditionの様に無償版DB2 Express-Cがある。 #contents *インストール [#je80fa03] **Linux [#w534675e] DB2の場合Oracleと比べれば事前準備はまったく持って不要。依存するライブラリもデスクトップ構成で入れていればほぼ入っている。GUIインストールするにはXが必要だが、応答ファイルを利用したCUIインストールも可能。一度GUIインストールすると応答ファイルを残すことができるのでそれを参考にするといい。 *接続の概念 [#b050d50c] サーバー名とDB名を指定すればOKなオープンソース系DBと違ってとてもわかりにくい。まずノードというものにサーバーを結びつける。そのノードにインスタンスを結びつける。インスタンスは複数のデーターベースを保持できるのでこれまたややこしい。 サーバー名(IP)とDB名を指定すればOKなオープンソース系DBと違ってとてもわかりにくい。まずノードというものにサーバーを結びつける。そのノードにインスタンスを結びつける。インスタンスは複数のデーターベースを保持できるのでこれまたややこしい。 *コマンドライン [#y60b2612] **コマンド・ウィンドウ [#y24453c1] -頭にdb2と必ずつける。 |接続|db2 connect to DB接続先 user ユーザー名 using パスワード| |切断|db2 connect reset| |テーブル一覧|db2 list tables| |SQL実行|db2 "SQL"| |外部SQLファイル実行|db2 -tvf ファイル名| |現在のコマンドラインオプション状況|db2 list command options| **コマンド行プリプロセッサ [#p7f6395f] -OracleのSQLPlusみたいなものか?上のコマンドウィンドウと同じことを頭のdb2を抜きで 実行できるからこっちのほうが楽だろう。 *import/export [#ya326fdf] **CSVファイルからインポート [#y45ea632] IMPORT FROM "インポート対象.csv" OF DEL REPLACE INTO インポート対象テーブル; 主キーがかぶったときに置き換えるのがREPLACE。主キーがかぶっても置き換えないのであればINSERTにする。 *主要操作 [#r120defd] **文字コードやロケールなどのDB2構成情報確認 [#h0f39a8d] db2 "get database configuration for インスタンス名" **構成情報を更新する [#s629d48d] db2 "UPDATE DB CFG FOR データベース名 USING パラメータ名 パラメータ値" **テーブル定義確認 [#w824fcae] describe table テーブル名 *チューニング [#m06428e7] **統計情報の更新 [#z54bc5dc] DB2はコストベースのオプティマイザしかないので統計情報が古いと効率の悪いアクセスプランを選択してしまう。定期的にrunstatsして統計情報を更新すること。 **EXPLAINの表示 [#q8b224e2] +コントロールセンターでデータベースを右クリック→SQLのEXPLAIN +SQLを貼り付けると図でアクセスプランを見ることができる **索引のアドバイスを取得 [#g49f980d] db2advis -d データベース名 -i SQLファイル 画面に入りきらないほど出てくる場合は出力をファイルにリダイレクトすること *参考サイト情報 [#v376fb2a] 少なくとも日本においてはOracleと違って圧倒的に情報が少ないので貴重な存在。 -http://db2forum.jp/ -http://db2.jugem.cc/ -http://db2watch.com/wiki/ #counter