LAC WATCH

セキュリティとITの最新情報

RSS

株式会社ラック

メールマガジン

サイバーセキュリティや
ラックに関する情報をお届けします。

ラックピープル | 

部内勉強会(データ移動ユーティリティー)

今回のテーマは、運用の一翼を担うデータ移動ユーティリティーです。

今回は名古屋事業所、福岡事業所から出席がありました。本社では業務で都合がつかない人もチラホラ。
今回もY君は客先から戻れなく、仕方なくWeb会議での参加でした。(お客様の環境の居心地がいいのかそれとも周りが放してくれないのか、それはあえて聞いていません。)

テーブルデータを操作するコマンド

今回のテーマは運用場面だけでなく、その他の場面でも出番があるデータ移動ユーティリティーについてです。データを抜き出すコマンドであるEXPORT、データを投入するコマンドのIMPORTとLOAD、テーブル構成などのDDLを作成(抜き出し)してくれるdb2lookなどがあります。このあたりを使いこなせるようになればある程度操作もできるようになってきているでしょう。
EXPORT、IMPORT、LOADについては、テーブルごとに実行する必要があります。対象がテーブル単位なのです。対象テーブルが複数ある場合はその数だけ実行する必要があります。全テーブルを対象にEXPORTする場合は、db2moveというユーティリティーもあります。ユーザーテーブルだけのバックアップのような使い方ができます。主にはデータ移行(DBバックアップ・リストアが使えない場合)や、異なるプラットフォームのデータベースへのデータ移行などに使われます。全ユーザーテーブルが対象になるというだけあって、出番はなかなか限られてくると思いますが、こういうユーティリティーがあるということを知っているだけでも作業選択肢が増えるので、作業時間短縮や作業ミスの軽減につながると思います。

EXPORT

EXPORTはユーザーデータをフラットファイルに抜き出してくれるコマンドで、データを別のシステムや別のデータベースへ渡す場合などに使えます。よく使われるのが各列項目をカンマ区切りで抜き出したDELタイプです。ファイルをそのまま見ても列の区切り位置がわかるのでデータがNULLでもそれがわかります。コマンド内のSELECT文で必要なデータだけ抜き出すこともできるので使い勝手はいいです。全量抜き出すような場合はORDER BYをかけて並びをそろえておくことも忘れずにしておきましょう。また、LOBデータはサイズが大きいため32KBでの切り捨てを避けるため、通常の文字データとは別に保存先ディレクトリ、ファイル名を指定して抜き出します(オプションでそれぞれ指定)。保存先ディレクトリは複数指定可能で、最初のディレクトリがいっぱいになると2番目の指定ディレクトリに書き出されます。指定したディレクトリがすべていっぱいになるとエラーになりますので必要なサイズが確保できる場所を指定しておく必要はあります。(XMLファイルも同様です。)

EXPORTイメージ

EXPORTイメージ

IMPORT

EXPORTなどで抜き出されたデータファイルをデータベースへ挿入するコマンドです。特定の形式で作成されたファイルであれば、対象(ターゲット)テーブルが存在しなくもデータ挿入時に自動でテーブルを作成してくれます。ターゲットテーブルが無いことに気づかない状況はなかなか無いと思われますが、わざわざテーブルを作成しておく手間などが省けるので、使い方によっては非常に便利です。処理の内容はinsertですのでログが書かれます。他のデータ挿入ユーティリティーと比べて処理が遅い要因になっています。こちらもLOBファイルはデータファイルとは別ディレクトリでの対応が可能です。

IMPORTイメージ

IMPORTイメージ

LOAD

処理速度が他のデータ挿入ユーティリティーと比べると速いので使用頻度は高いです。大きなポイントはログをほとんど書き出さないことです。だから処理が速いのです。その他扱えるデータファイルフォーマットがDEL形式やASC形式などに限られます。ログを書き出さないことによりロールフォワード時に戻すデータの扱いを考慮する必要が出てきます。LOADしたデータイメージを別途保管するかしないか、オプションで指定する必要があります。 また主キーなどの条件に合わなかったデータなどはそのまま破棄されるのですが、オプションで表に別途保管しておくこともできます。その他様々なオプションが多く準備されているコマンドの一つです。

LOADイメージ

LOADイメージ

IMPORTとLOADの違い

大きな違いとしてログを全行書くか最小限しか書かないかという点がまず挙げられます。それにより処理速度が大きく変わってきます。バッチウィンドウを決められた時間内におさえなければならないことが多いと思いますので、対象件数によっては大きく処理時間に影響が出てきてしまうことでしょう。また、扱えるファイルタイプの違い、(ファイルタイプは限られますが)テーブルの自動作成ができる点などがあります。処理が中断された場合、IMPORTではテーブルは使用可能状態ですが、LOADではsavecountが指定されていた場合はロード・ペンディング状態となり、その後の対応処理を実行するまで使用できない状態になります。LOADは処理条件(オプション)によってその終了時の状態が異なります。基本的にデータの更新ログを取らないため(まったくログをとらないわけではないですが)、ロールフォワード・リカバリーに対応する方法が必要なためです(COPYオプションやNONRECOVERABLEオプションなど)。

db2look

テーブル構成情報(CREATE文)やインデックスの情報などのDDLファイルを作成してくれます。テーブルデータのバックアップはEXPORTなどでできますが、テーブル構成情報のバックアップとしてはdb2lookがとても便利です。オプションもいくつもあるので各テーブルの統計情報も書き出してくれます。アウトプットファイルを実行すれば同じ環境が出来上がります。同じ構成のテーブルを作りたい場合などに使えます。テーブルなどの構成変更した際に取得しておくと良いでしょう。

db2lookイメージ

db2lookイメージ

主なオプション

(これらを全部付けて取得しておけば構成情報のバックアップに利用できます。)

データベース名
  • -d (←該当データベースの指定)
  • -a (←すべてのユーザーのオブジェクトに対するDDL抽出(「-e」と一緒に使用))
  • -e (←各種オブジェクト用DDL抽出)
  • -l (←ユーザー定義の表スペース、ストレージグループ、パーティショングループ、バッファープールのDDLを抽出)

以下は必要に応じて付けましょう。

  • -m (←統計情報を更新するためのUPDATE文を生成)
  • -wlm (←WLM固有のDDLを抽出)

勉強会のひとコマ

勉強会のひとコマ(筆者だけ、というわけではないですよ)

参考資料

DB2 V9.5 運用管理ガイド:データ移動ユーティリティー

この記事は役に立ちましたか?

はい いいえ