136 DBMS_RESUMABLE

DBMS_RESUMABLEパッケージを使用すると、長時間にわたる実行後に領域を使い果たしたり、領域制限に達するような大規模な操作を一時停止し、問題を修正した後で文の実行を再開できます。これにより、領域関連のエラーの発生を心配せずに、アプリケーションを作成できます。

この章のトピックは、次のとおりです:

136.1 DBMS_RESUMABLEの使用上の注意

文を中断した場合は、その中断をアラート・ログに記録する必要があります。文が中断されたときに実行するプロシージャも登録する必要があります。ビューを使用すると、文の進行状況を監視したり、その文が現在実行中なのか、または中断されている状態なのか表示できます。

文が中断されると、自動的にトランザクションも中断されます。したがって、文の中断時および再開時はすべてのトランザクション・リソースが保持されます。エラー条件が解消されると、中断されていた文は自動的に実行を再開します。再開領域割当ては、実行時に複数回中断および再開できます。

再開領域割当てには、中断タイムアウト時間が関連付けられます。タイムアウト時間(デフォルトでは2時間)中断している再開領域割当ては、起動して例外をユーザーに戻します。DBMS_RESUMABLE.ABORT()プロシージャを使用して、中断した文に強制的に例外を発生させることもできます。

136.2 DBMS_RESUMABLEサブプログラムの要約

この表は、DBMS_RESUMABLEサブプログラムを示し、簡単に説明しています。

表136-1 DBMS_RESUMABLEパッケージのサブプログラム

サブプログラム 説明

ABORTプロシージャ

中断した再開領域割当てを終了します。

GET_SESSION_TIMEOUTファンクション

session_idのセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

GET_TIMEOUTファンクション

現行のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

SET_SESSION_TIMEOUTプロシージャ

session_idのセッションにおける再開領域割当てのタイムアウトを設定します。

SET_TIMEOUTプロシージャ

現行のセッションにおける再開領域割当てのタイムアウトを設定します。

SPACE_ERROR_INFOファンクション

エラー・スタックでの領域関連のエラーを検索します。領域関連のエラーが見つからなかった場合は、FALSEを戻します。

136.2.1 ABORTプロシージャ

このプロシージャでは、中断した再開領域割当てを終了します。

パラメータsession_idは、文が実行されるセッションIDを示します。パラレルDML/DDLの場合は、session_idは、パラレルDML/DDLに参加するセッションIDを示します。この操作は成功が保証されています。このプロシージャのコールは、AFTER SUSPENDトリガーの内部からでも外部からでもコールできます。

構文

DBMS_RESUMABLE.ABORT (
   session_id  IN NUMBER);

パラメータ

表136-2 ABORTプロシージャのパラメータ

パラメータ 説明

session_id

再開領域割当てのセッション識別子。

使用上の注意

ABORTプロシージャをコールするには、session_idのセッションの所有者、ALTER SYSTEM権限の所持者またはDBAである必要があります。

136.2.2 GET_SESSION_TIMEOUTファンクション

このファンクションは、session_idのセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

構文

DBMS_RESUMABLE.GET_SESSION_TIMEOUT (
   session_id  IN NUMBER)
RETURN NUMBER;

パラメータ

表136-3 GET_SESSION_TIMEOUTファンクションのパラメータ

パラメータ 説明

session_id

再開領域割当てのセッション識別子。

戻り値

表136-4 GET_SESSION_TIMEOUTファンクションの戻り値

戻り値 説明

NUMBER

session_idのセッションにおける再開領域割当ての現行のタイムアウト値。戻されるタイムアウトは秒で示されます。

使用上の注意

session_idが存在しない場合、GET_SESSION_TIMEOUTファンクションは-1を戻します。

136.2.3 GET_TIMEOUTファンクション

このファンクションは、現行のセッションにおける再開領域割当ての現行のタイムアウト値を戻します。

構文

DBMS_RESUMABLE.GET_TIMEOUT
 RETURN NUMBER;

戻り値

表136-5 GET_TIMEOUTファンクションの戻り値

戻り値 説明

NUMBER

現行のセッションにおける再開領域割当ての現行のタイムアウト値。戻される値は秒で示されます。

使用上の注意

現行のセッションを再開できない場合、GET_TIMEOUTファンクションは-1を戻します。

136.2.4 SET_SESSION_TIMEOUTプロシージャ

このプロシージャは、session_idのセッションにおける再開領域割当てのタイムアウトを設定します

新しいタイムアウト設定はセッションに即時適用されます。session_idが存在しない場合、操作は実行されません。

構文

DBMS_RESUMABLE.SET_SESSION_TIMEOUT (
   session_id  IN NUMBER,
   timeout     IN NUMBER);

パラメータ

表136-6 SET_SESSION_TIMEOUTプロシージャのパラメータ

パラメータ 説明

session_id

再開領域割当てのセッション識別子。

timeout

再開領域割当てのタイムアウト。

136.2.5 SET_TIMEOUTプロシージャ

このプロシージャは、現行のセッションにおける再開領域割当てのタイムアウトを設定します。新しいタイムアウト設定はセッションに即時適用されます。

構文

DBMS_RESUMABLE.SET_TIMEOUT (
   timeout  IN NUMBER);

パラメータ

表136-7 SET_TIMEOUTプロシージャのパラメータ

パラメータ 説明

timeout

再開領域割当てのタイムアウト。

136.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;

パラメータ

表136-8 SPACE_ERROR_INFOファンクションのパラメータ

パラメータ 説明

error_type

領域エラーのタイプ。これは次のいずれかです。

  • NO MORE SPACE

  • MAX EXTENTS REACHED

  • SPACE QUOTA EXCEEDED

object_type

オブジェクト・タイプ。これは次のいずれかです。

  • TABLE

  • INDEX

  • CLUSTER

  • TABLE SPACE

  • ROLLBACK SEGMENT

  • UNDO SEGMENT

  • LOB SEGMENT

  • TEMP SEGMENT

  • INDEX PARTITION

  • TABLE PARTITION

  • LOB PARTITION

  • TABLE SUBPARTITION

  • INDEX SUBPARTITION

  • LOB SUBPARTITION

当てはまらない場合は、タイプをNULLに設定することもできます。

object_owner

オブジェクトの所有者。特定できない場合はNULLになります。

table_space_name

オブジェクトが常駐する表領域。特定できない場合はNULLになります。

object_name

ロールバック・セグメント、一時セグメント、表、索引またはクラスタの名前。

sub_object_name

LOB、TABLEまたはINDEXのパーティション名またはサブパーティション名。特定できない場合は、NULLとなります。