DBMS_RESUMABLE
パッケージを使用すると、長時間にわたる実行後に領域を使い果たしたり、領域制限に達するような大規模な操作を一時停止し、問題を修正した後で文の実行を再開できます。これにより、領域関連のエラーの発生を心配せずに、アプリケーションを作成できます。
この章では、次の項目について説明します。
文を中断した場合は、その中断をアラート・ログに記録する必要があります。文が中断されたときに実行するプロシージャも登録する必要があります。ビューを使用すると、文の進行状況を監視したり、その文が現在実行中なのか、または中断されている状態なのか表示できます。
文が中断されると、自動的にトランザクションも中断されます。したがって、文の中断時および再開時はすべてのトランザクション・リソースが保持されます。エラー条件が解消されると、中断されていた文は自動的に実行を再開します。再開領域割当ては、実行時に複数回中断および再開できます。
再開領域割当てには、中断タイムアウト時間が関連付けられます。タイムアウト時間(デフォルトでは2時間)中断している再開領域割当ては、起動して例外をユーザーに戻します。DBMS_RESUMABLE.ABORT()
プロシージャを使用して、中断した文に強制的に例外を発生させることもできます。
表134-1 DBMS_RESUMABLEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
中断した再開領域割当てを終了します。 |
|
|
|
現行のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。 |
|
|
|
現行のセッションにおける再開領域割当てのタイムアウトを設定します。 |
|
エラー・スタックでの領域関連のエラーを検索します。領域関連のエラーが見つからなかった場合は、 |
このプロシージャでは、中断した再開領域割当てを終了します。パラメータsession_id
は、文が実行されるセッションIDを示します。パラレルDML/DDLの場合は、session_id
は、パラレルDML/DDLに参加するセッションIDを示します。この操作は成功が保証されています。このプロシージャのコールは、AFTER SUSPEND
トリガーの内部からでも外部からでもコールできます。
このプロシージャは、session_id
のセッションにおける再開領域割当てのタイムアウトを設定します。新しいタイムアウト設定は、セッションに即時適用されます。session_id
が存在しない場合、操作は実行されません。
このファンクションは、エラー・スタックで領域関連のエラーを検索します。領域関連のエラーが見つからなかった場合は、FALSE
が戻されます。見つかった場合はTRUE
が戻され、領域エラーの原因となった特定のオブジェクトの情報が戻されます。
構文
DBMS_RESUMABLE.SPACE_ERROR_INFO error_type OUT VARCHAR2, object_type OUT VARCHAR2, object_owner OUT VARCHAR2, table_space_name OUT VARCHAR2, object_name OUT VARCHAR2, sub_object_name OUT VARCHAR2) RETURN BOOLEAN;
パラメータ
表134-8 SPACE_ERROR_INFOファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
領域エラーのタイプ。次のいずれかになります。
|
|
オブジェクト・タイプ。次のいずれかになります。
当てはまらない場合は、タイプを |
|
オブジェクトの所有者。特定できない場合は |
|
オブジェクトが常駐する表領域。特定できない場合は |
|
ロールバック・セグメント、一時セグメント、表、索引またはクラスタの名前。 |
|
|