中断したロード操作の再始動
ロード操作中に失敗や中断が発生した場合は、ロード・ユーティリティーを使用して操作を終了するか、表を再ロードするか、またはロード操作を再始動することができます。
実在しないデータ・ファイルや無効な列名などのユーザー・エラーが原因でロード・ユーティリティーを開始することすらできない場合、その操作はターゲット表を通常の状態にしたまま終了します。
ロード操作を開始すると、ターゲット表の状態は「ロード進行中」になります。 操作が失敗すると表の状態は「ロード・ペンディング」に変わります。 表のこの状態を解除するには、LOAD TERMINATE を発行して操作をロールバックするか、LOAD REPLACE を発行して表全体を再ロードするか、または LOAD RESTART を発行することができます。
一般的に、この状態における最良の選択はロード操作を再始動することです。 ロード・ユーティリティーはロード操作を最初からではなく、その進行内の最後に正常に到達した点から再開するので、この選択は時間の節約になります。 操作を再開する正確な場所は、元のコマンドで指定されたパラメーターによって異なります。 SAVECOUNT オプションが指定されており、前回のロード操作が失敗した場所がロード・フェーズである場合、ロード操作は到達した最後の整合点から再開します。 上記以外の場合、ロード操作は正常に到達した最後のフェーズ (ロード、構築、または削除フェーズ) の最初から再開します。
XML 文書をロードしている場合は、動作が若干異なります。 SAVECOUNT オプションは XML データのロードではサポートされていないため、ロード・フェーズ中に失敗したロード操作は、操作の最初から再開します。 他のデータ・タイプと同様に、構築フェーズ中にロードが失敗した場合、REBUILD モードでは索引が構築されるので、各行からすべての索引キーを取り出すために表がスキャンされます。しかし、各 XML 文書も索引キーを選択するためにスキャンされる必要があります。 キーのために XML 文書をスキャンするこの処理には、文書を再び構文解析することが必要ですが、これはコストのかかる操作になります。 さらに、内部の XML 索引 (領域の索引やパスの索引など) が、最初に再構築される必要があります。これには、XDA オブジェクトのスキャンも必要です。
ロード操作の失敗の原因となった状況を修正した後、ロード・コマンドを再発行します。 元のコマンドと同じパラメーターを正確に指定することにより、必要な一時ファイルをロード・ユーティリティーが見つけられるようにしてください。 この例外は、読み取りアクセスを許可しない場合です。 ALLOW READ ACCESS オプションを指定したロード操作は、ALLOW NO ACCESS オプションとして再開することも可能です。
LOAD FROM file_name OF file_type
SAVECOUNT n
MESSAGES message_file
load_method
INTO target_tablename
この場合、指定したロード・メソッド (load_method) を RESTART メソッドで置き換えることによってこれを再開します。LOAD FROM file_name OF file_type
SAVECOUNT n
MESSAGES message_file
RESTART
INTO target_tablename
失敗したロードのうち、再開できないもの
- 正常に再開または終了されなかった失敗ロード操作の後ロールフォワード操作が実行された
- 表の状態が「ロード進行中」または「ロード・ペンディング」になっている間に行われたオンライン・バックアップからリストア操作が実行された
失敗したロードの制約
BACKUP DATABASE コマンドは、LOAD コマンドが SMS 表スペースの表で失敗し、その表の状態が「ロード・ペンディング」のままになると、入出力エラーを戻すことがあります。
表が「ロード・ペンディング」状態の場合、表データは整合していないことがあります。 表データに矛盾があると、 BACKUP DATABASE コマンドが失敗します。 その表は、その後に LOAD TERMINATE、LOAD RESTART、LOAD REPLACE のいずれかのコマンドが完了するまでは不整合なままになります。
データベースをバックアップする前に、表が「ロード・ペンディング」でない状態にする必要があります。