15. リストア
リストアのためのコマンド
–RECOVER DATABASEコマンド
–RESTORE DATABASEコマンド+ROLLFORWARDコマンド
RECOVER DATABASE db名 TO [END OF LOGS|時刻]
リストアの注意点
–時刻の指定方法に注意
• 本番運用ではUSING LOCAL TIME を指定しましょう(RECOVERのデ
フォルトですが)
• 例)RECOVER DB SAMPLE TO 2007-01-31-04.00.00 USING LOCAL
TIME
–BACKUPコマンドは、コンテナの物理的な位置を覚えている
• デバイスが無いと戻らない
• 別のデバイス、別のディレクトリに移動させるにはREDIRECT
RESTORE
15
16. 【参考】 DB2 10.1新機能:タイムトラベル照会
過去データへのアクセス機能
employees
EmpID Dept System_start System_end
CREATE TABLE時に履歴を保存するように設定 12345 M15 05/31/2000 12/31/9999
できる機能
履歴が自動記録される
– 履歴は拡張されたSELECT文で参照可能 employees_history
EmpID Dept System_start System_end
12345 J13 11/15/1995 01/31/1998
12345 M24 01/31/1998 05/31/2000
過去の特定時点でのデータを容易に参照可能 67890 K25 11/15/1995 03/31/2000
– 仕組みをアプリケーション側で実装不要 社員ID12345が所属する部署を得るSQL
– リスクとコストの削減、開発期間短縮 SELECT Dept FROM employees
WHERE EmpID=12345
社員ID12345が1997年12月1日に所属していた
用途:監査要件、コンプライアンス、 ... 部署を得るSQL
SELECT Dept FROM employees
FOR SYSTEM_TIME AS OF ’12/01/1997’
WHERE EmpID=12345
16
17. 表の再編成はなぜ必要か?
時間の経過と共に、データ領域は順番がばらばらに並ぶようになっていく
–データの更新、追加、削除の繰り返しが要因
–削除済みの領域は再利用される
–行の長さは一定では無いので、削除済みの場所に新しい行が入らない
場合も
並びがばらばらになると、速度が低下する
SELECT * FROM T WHERE ID < 5
初期状態
データがまとまっているので、ディスクアクセス
1 2 3 4 が少なく済む
時間が経つと...
1 3 4 2
データの順番がバラバラなので、複数回のディ
スクアクセス(ディスクヘッドの移動)が必要
17
27. RUNSTATS 多くの場合、この
基本形でOK
RUNSTATSコマンドで統計情報を更新する
RUNSTATS ON TABLE スキーマ名.表名
RUNSTATS ON TABLE スキーマ名.表名 AND INDEXES ALL
(※DB2 10.1からスキーマ名が省略可能になっています)
– RUNSTATS実行中でも表に読み書きアクセス可能
データに「偏り」がある場合、
少し進んだ使い方 拡張統計を試してください
– ①拡張統計で収集する
RUNSTATS ON TABLE スキーマ名.表名 WITH DISTRIBUTION
RUNSTATS ON TABLE スキーマ名.表名 WITH DISTRIBUTION AND SAMPLED
DETAILED INDEXES ALL
表を5%サンプリング
– ②サンプリングでRUNSTATSの実行時間を短くする
RUNSTATS ON TABLE SIM.DEPARTMENTS WITH DISTRIBTION TABLESAMPLE
BERNOULLI (5)
27
28. ■参考文献 「DB2 UDBバージョン8.2のRUNSTATS」(サンプル多数で分かりやすい)
http://ibm.com/jp/domino01/mkt/dminfo.nsf/doc/002B4A0C
補足:RUNSTATSのパターン
■基本統計を取得するケース
--- 表のみ
RUNSTATS ON TABLE スキーマ名.表名
--- インデックスのみ
RUNSTATS ON TABLE スキーマ名.表名 FOR INDEXES ALL
--- 表とインデックス両方
RUNSTATS ON TABLE スキーマ名.表名 AND INDEXES ALL
■拡張統計を取得するケース
--- 表のみ
RUNSTATS ON TABLE スキーマ名.表名 WITH DISTRIBUTION
--- インデックスのみ
RUNSTATS ON TABLE スキーマ名.表名 FOR DETAILED INDEXES ALL
--- 表とインデックス両方
RUNSTATS ON TABLE スキーマ名.表名 WITH DISTRIBUTION AND SAMPLED DETAILED INDEXES ALL
■サンプリングを実施するケース ※インデックスのサンプリング(INDEXSAMPLE)はDB2 10.1の新機能
--- 表のデータを5%、インデックスを10%のサンプリング
RUNSTATS ON TABLE SIM.DEPARTMENTS WITH DISTRIBUTION AND SAMPLED DETAILED INDEXES ALL
TABLESAMPLE BERNOULLI (5) INDEXSAMPLE BERNOULLI (10)
※以下マニュアルより引用、一部修正、追記をしたものです
http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.admin.explain.doc/doc/r0021347.html
28