5.1.3 データベースの更新ログ取得方式
データベース作成ユティリティ(pdload)で表にデータを格納するときに,データベースの更新ログ取得方式を指定します。データベースの更新ログ取得方式は,データベース作成ユティリティ(pdload)の-lオプションで指定します。
- 〈この項の構成〉
(1) データベースの更新ログ取得方式の種類
データベースの更新ログ取得方式には,次に示す3種類のモードがあります。
-
ロールバック及びロールフォワードに必要なデータベース更新ログを取得します。データ件数が少ない場合に使用します。
-
ロールバックに必要なデータベース更新ログだけを取得します。データ件数が多いときに使用します。
-
データベース更新ログを取得しません。そのため,データロードの処理時間が最も掛かりません。一つのRDエリアに一つの表だけ(分割格納している場合は一つの横分割表)を格納している場合で,関連するインデクスも一つのRDエリア内にあるときに使用します。
これらのモードの機能詳細については,マニュアル「HiRDB システム運用ガイド」を参照してください。
(2) データの格納先がユーザLOB用RDエリアの場合
データの格納先がユーザLOB用RDエリアの場合,CREATE TABLEのRECOVERYオペランドでデータベースの更新ログ取得方式を指定します。
ユーザLOB用RDエリアのデータベースの更新ログ取得方式(CREATE TABLEのRECOVERYオペランド指定値)は,pdloadの-lオプションの指定値によって変わることがあります。pdloadの-lオプションの指定値によって変わるユーザLOB用RDエリアのデータベースの更新ログ取得方式を次の表に示します。
pdloadの -lオプションの指定値 |
CREATE TABLEのRECOVERYオペランドの指定値 |
||
---|---|---|---|
ALL |
PARTIAL |
NO |
|
a(ALL指定相当) |
ALL |
PARTIAL |
NO |
p(PARTIAL指定相当) |
PARTIAL※ |
PARTIAL※ |
NO |
n(NO指定相当) |
NO |
NO |
NO |
- (凡例)
-
ALL:ログ取得モード
PARTIAL:更新前ログ取得モード
NO:ログレスモード
例えば,CREATE TABLEのRECOVERYオペランドにPARTIALを指定し,pdloadの-lオプションにnを指定した場合,NO(ログレスモード)がユーザLOB用RDエリアに設定されます。
- 注※
-
プラグインが出力するログの場合は,ALL(ログ取得モード)が仮定されます。
(3) モードの選択基準
基本的には省略値である更新前ログ取得モードを選択してください。ただし,次に示す条件を満たすような場合はほかのモードの選択を検討してください。
条件 |
選択するモード |
---|---|
RDエリアにデータロード対象表(インデクス)だけを格納していて,かつ初期ロードである |
ログレスモード |
入力データ量が多く,データロードに時間が掛かる |
|
入力データ量が少ない |
ログ取得モード |
(4) 運用方法の違い
選択したモードによってデータロードするときの運用が異なります。運用方法の違いを次の図に示します。
- 注※1
-
ログレスモードを選択したときに必要な操作です。ログレスモードのpdloadコマンドが異常終了した場合,このバックアップを使用してRDエリアを回復します。ただし,「データロードの前にバックアップを取得しないでよい場合」で説明している条件を満たすときはバックアップを取得する必要はありません。
ただし,更新ログ取得方式に関係なく,プラグインインデクスを定義した表にインデクス一括作成モードで追加データロードをする場合はバックアップを取得してください。理由は,pdloadコマンドが異常終了した場合のデータベース回復には既存データ部分を含め,全プラグインインデクスの再作成が必要となり,データベース回復に長時間必要となるためです。
- 注※2
-
更新前ログ取得モード又はログレスモードを選択したときに必要な操作です。ここでバックアップを取得しないと,pdrstrコマンドでRDエリアを回復する必要が生じた場合,RDエリアを最新の状態に回復できません(データロード実行後の反映処理を回復できません)。RDエリアはデータロード実行前の状態にしか回復できません。
- 補足事項
-
更新前ログ取得モード又はログレスモードを選択した場合,前記の手順1〜4の間はデータロード対象RDエリアを閉塞したままにしてください。手順4でバックアップを取得する前にRDエリアの内容が更新された場合,pdrstrコマンドでRDエリアを回復する必要が生じたときにその更新内容を回復できません。RDエリアはデータロード実行前の状態にしか回復できません。pdrstrコマンドでRDエリアを回復するとき,入力情報のシステムログ中に更新前ログ取得モード又はログレスモードで取得したログが入っているとpdrstrコマンドがエラーになります。
(5) データロードの前にバックアップを取得しないでよい場合
ログレスモードでデータロードを実行する場合は,データロードの実行前にバックアップを取得する必要があります。ただし,次表に示す1,2の条件のうちどちらかを満たす場合は,pdloadコマンドが異常終了したときにRDエリアの状態をデータロード実行前の状態に戻すことができるため,バックアップの取得を省略できます。
項番 |
条件 |
障害発生時のRDエリア回復方法 |
|
---|---|---|---|
1 |
初期ロードの場合 |
データロード対象RDエリアにはデータロード対象の表,及びその表のインデクスだけを格納している場合 |
データロード対象RDエリアをデータベース構成変更ユティリティ(pdmodコマンド)で再初期化した後に,再度データロードすると回復できます。 |
作成モードでデータロードを実行する場合 |
|||
2 |
データロード対象RDエリアにデータロード対象表(インデクス)以外の表(インデクス)がある場合 |
バックアップとシステムログを使用してデータロード実行前の状態にRDエリアを回復できる場合 |
pdcloseコマンドでデータロード対象RDエリアをクローズした後に,pdlogswapコマンドでシステムログファイルをスワップして,データベース回復ユティリティ(pdrstrコマンド)にここまでのシステムログを入力すれば回復できます。 |
追加モードでデータロードを実行する場合 |
- 注
-
項番2の条件の場合は,バックアップを取得した方がRDエリアを回復するときの運用が簡単なため,基本的にはバックアップを取得することをお勧めします。特に,インデクス一括作成モードのpdloadが異常終了した場合は,ログ取得モードであっても更新前ログ取得モードであっても,ロールバックではインデクスは回復されません。pdloadが異常終了して,すぐにデータロード前の状態に回復する必要がある場合は必ずバックアップを取得してください。