142 DBMS_RESUMABLE
DBMS_RESUMABLE
パッケージを使用すると、長時間にわたる実行後に領域を使い果たしたり、領域制限に達するような大規模な操作を一時停止し、問題を修正した後で文の実行を再開できます。これにより、領域関連のエラーの発生を心配せずに、アプリケーションを作成できます。
この章のトピックは、次のとおりです:
142.1 DBMS_RESUMABLEの操作上のノート
文を中断した場合は、その中断をアラート・ログに記録する必要があります。文が中断されたときに実行するプロシージャも登録する必要があります。ビューを使用すると、文の進行状況を監視したり、その文が現在実行中なのか、または中断されている状態なのか表示できます。
文が中断されると、自動的にトランザクションも中断されます。したがって、文の中断時および再開時はすべてのトランザクション・リソースが保持されます。エラー条件が解消されると、中断されていた文は自動的に実行を再開します。再開領域割当ては、実行時に複数回中断および再開できます。
再開領域割当てには、中断タイムアウト時間が関連付けられます。タイムアウト時間(デフォルトでは2時間)中断している再開領域割当ては、起動して例外をユーザーに戻します。DBMS_RESUMABLE.ABORT()
プロシージャを使用して、中断した文に強制的に例外を発生させることもできます。
142.2 DBMS_RESUMABLEサブプログラムの要約
この表は、DBMS_RESUMABLE
サブプログラムを示し、簡単に説明しています。
表142-1 DBMS_RESUMABLEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
中断した再開領域割当てを終了します。 |
|
|
|
現行のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。 |
|
|
|
現行のセッションにおける再開領域割当てのタイムアウトを設定します。 |
|
エラー・スタックでの領域関連のエラーを検索します。領域関連のエラーが見つからなかった場合は、 |
142.2.1 ABORTプロシージャ
このプロシージャでは、中断した再開領域割当てを終了します。
パラメータsession_id
は、文が実行されるセッションIDを示します。パラレルDML/DDLの場合は、session_id
は、パラレルDML/DDLに参加するセッションIDを示します。この操作は成功が保証されています。このプロシージャのコールは、AFTER SUSPEND
トリガーの内部からでも外部からでもコールできます。
構文
DBMS_RESUMABLE.ABORT ( session_id IN NUMBER);
パラメータ
表142-2 ABORTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再開領域割当てのセッション識別子。 |
使用上のノート
ABORT
プロシージャをコールするには、session_id
のセッションの所有者、ALTER SYSTEM
権限の所持者またはDBAである必要があります。
142.2.2 GET_SESSION_TIMEOUTファンクション
このファンクションは、session_id
のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。
構文
DBMS_RESUMABLE.GET_SESSION_TIMEOUT ( session_id IN NUMBER) RETURN NUMBER;
パラメータ
表142-3 GET_SESSION_TIMEOUTファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
再開領域割当てのセッション識別子。 |
戻り値
表142-4 GET_SESSION_TIMEOUTファンクションの戻り値
戻り値 | 説明 |
---|---|
|
|
使用上のノート
session_id
が存在しない場合、GET_SESSION_TIMEOUT
ファンクションは-1を戻します。
142.2.3 GET_TIMEOUTファンクション
このファンクションは、現行のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。
構文
DBMS_RESUMABLE.GET_TIMEOUT RETURN NUMBER;
戻り値
表142-5 GET_TIMEOUTファンクションの戻り値
戻り値 | 説明 |
---|---|
|
現行のセッションにおける再開領域割当ての現行のタイムアウト値。戻される値は秒で示されます。 |
使用上のノート
現行のセッションを再開できない場合、GET_TIMEOUT
ファンクションは-1を戻します。
142.2.4 SET_SESSION_TIMEOUTプロシージャ
このプロシージャは、session_id
のセッションにおける再開領域割当てのタイムアウトを設定します
新しいタイムアウト設定はセッションに即時適用されます。session_id
が存在しない場合、操作は実行されません。
構文
DBMS_RESUMABLE.SET_SESSION_TIMEOUT ( session_id IN NUMBER, timeout IN NUMBER);
パラメータ
表142-6 SET_SESSION_TIMEOUTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再開領域割当てのセッション識別子。 |
|
再開領域割当てのタイムアウト。 |
142.2.5 SET_TIMEOUTプロシージャ
このプロシージャは、現行のセッションにおける再開領域割当てのタイムアウトを設定します。新しいタイムアウト設定はセッションに即時適用されます。
構文
DBMS_RESUMABLE.SET_TIMEOUT ( timeout IN NUMBER);
パラメータ
表142-7 SET_TIMEOUTプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
再開領域割当てのタイムアウト。 |
142.2.6 SPACE_ERROR_INFOファンクション
このファンクションは、エラー・スタックで領域関連のエラーを検索します。
領域関連のエラーが見つからなかった場合は、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;
パラメータ
表142-8 SPACE_ERROR_INFOファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
領域エラーのタイプ。これは次のいずれかです。
|
|
オブジェクト・タイプ。これは次のいずれかです。
当てはまらない場合は、タイプを |
|
オブジェクトの所有者。特定できない場合は |
|
オブジェクトが常駐する表領域。特定できない場合は |
|
ロールバック・セグメント、一時セグメント、表、索引またはクラスタの名前。 |
|
|