目的
ジャーナル テーブルに、トランザクションの回復を調整するためのフラグを配置します。
必要な権限
- そのジャーナル テーブルに対するCHECKPOINT権限を持っている。
- そのジャーナル テーブルを収容するデータベースに対するCHECKPOINT権限を持っている。
- そのジャーナル テーブルを収容するデータベースの所有者である。
- そのジャーナル テーブルの直接または間接の所有者である。
構文 - 対話形式
構文要素
- table_name
- チェックポイント登録項でマークを付けるジャーナル テーブル。
- checkpoint_name
- データベース回復活動でチェックポイント登録項を参照するために使用できるラベル。
構文 - 埋め込みSQLとストアド プロシージャの形式
構文要素
- database_name
- チェックポイント フラグを作成するデータベースの名前。名前の後にピリオドを付ける必要があります。
- table_name
- チェックポイント フラグを作成するテーブルの名前。
- checkpoint_label
- チェックポイントにラベルを付けるSQL識別子。
- label_variable
- チェックポイントのラベルの付いたホスト変数。
- host_variable_name
- チェックポイント フラグを備えたホスト変数の名前。
- host_indicator_variable_name
- NULLを受け取る任意指定のホスト標識変数の名前。
ANSI準拠
CHECKPOINTは、ANSI SQL:2011規格に対するTeradata拡張機能です。
全体の使用上の注意
CHECKPOINTで指定したテーブルにジャーナル イメージが書き込まれるすべてのデータ テーブルに対してREADロックが設定されます。このロックのため、チェックポイント操作が終了するまで新しいトランザクションは開始することができません。さらに、更新トランザクションが終了してからチェックポイント操作が行なわれます。
この動作によりジャーナルに保存されるチェックポイントが、トランザクションのない時点を正確に表わすことができます。チェックポイント操作が終了すると、ロックが解除されます。
各チェックポイント登録項には、システムによってイベント番号が割り当てられます。 さらに、この番号はCHECKPOINTリクエスト処理の結果として返されます。この番号はリクエストの実行に関する他の情報とともに、データ ディクショナリ テーブルに格納されます。このテーブルのデータは、DBC.EventsVシステム ビューから見直すことができます。
明示的なトランザクションまたは複文リクエストにCHECKPOINTリクエストが入っている場合、そのCHECKPOINTリクエストは、トランザクションまたはリクエスト内のどのINSERT、UPDATE、またはDELETEリクエストよりも前になければなりません。
ストアド プロシージャと埋め込みSQLの使用上の注意
- ストアド プロシージャと埋め込みSQLのCHECKPOINTはデータを返すリクエストです。
- CHECKPOINTはデータを返すリクエストですが、選択カーソルと関連付けることはできません。
- checkpoint_labelまたはlabel_host_variableのどちらとして指定するにしても、チェックポイント ラベルは有効なSQL識別子でなければなりません。
- label_host_variableを指定する場合は、クライアント言語のSQL文字列のルールに従ってホスト変数を指定しなければなりません。また、ホスト変数の先頭にコロンを付ける必要があります。詳細については、<SQLストアド プロシージャおよび埋め込みSQL>を参照してください。
- host_variable_nameによって識別されるメイン ホスト変数は、INTEGERに準拠した型でなければなりません。
- CHECKPOINTを動的SQL文として実行することはできません。
CHECKPOINTを実行すると、同期ポイントが生成され、table_nameで指定したジャーナル テーブルに記録されます。
NAMED句を指定した場合は、チェックポイント ラベルが同期ポイントと関連付けられます。同期ポイントを固有に識別する32ビット整数が、ホスト変数指定で定義したメイン ホスト変数内に返されます。
Preprocessor2に対してTRANSACT(2PC) オプションを指定した場合は、CHECKPOINTが無効になります。
例: チェックポイント エントリをジャーナル テーブルに置く
次のリクエストで、チェックポイント登録をジャーナル テーブルに置くことができます。
CHECKPOINT account_db.jnl_table, NAMED daily_pay_maint;
このリクエストが実行されると、ジャーナル イメージがジャーナル テーブル(jnl_table)に書き込まれるテーブルの、すべての更新活動が終わり、イベント番号が返されます。
daily_pay_maintというラベルを持つ行が、ジャーナル テーブルに置かれます。このラベルは後に、ロールフォワードまたはロールバックの操作で使用できます。