DBMS_DEFER_SYS
プロシージャは、デフォルトのレプリケーション・ノード・リストを管理します。このパッケージは、レプリケート・トランザクション遅延リモート・プロシージャ・コール機能へのシステム管理者用インタフェースです。管理者およびレプリケーション・デーモンは、この機能を使用して、リモート・ノードのキューに入れられたトランザクションを実行でき、さらに管理者は、リモート・コールの宛先のノードを制御できます。
この章には、次の項が含まれます。
表14-1 DBMS_DEFER_SYSパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
接続先データベースを |
|
|
|
接続先データベースを |
「DELETE_DEF_DESTINATIONプロシージャ」 |
接続先データベースを |
|
トランザクションを |
|
トランザクションを |
|
カレント・サイトから指定されたサイトへの、遅延トランザクション・キューの伝播が有効になっているかどうかを判定します。 |
|
遅延トランザクション |
|
正常に終了しなかった遅延トランザクションを、トランザクションの元の受信者のセキュリティ・コンテキストで再実行します。 |
|
正常に終了しなかった遅延トランザクションを、このプロシージャを実行するユーザーのセキュリティ・コンテキストで再実行します。 |
|
カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションをパージします。 |
|
カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延リモート・プロシージャ・コール・キューを、強制的にリモート・サイトへプッシュします。 |
|
指定されたユーザーを、ローカル・データベースのプロパゲータとして登録します。 |
|
カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションをパージするジョブをスケジュールします。 |
|
遅延トランザクション・キューをリモート・サイトにプッシュするジョブをスケジュールします。 |
|
カレント・サイトから、指定された接続先サイトへの遅延トランザクション・キューの伝播を、使用禁止または使用可能にします。 |
|
プロパゲータとしてのユーザーの登録を、ローカル・データベースから削除します。 |
|
マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューからの、プッシュされたトランザクションの自動パージを中止します。 |
|
マスター・サイトまたはマテリアライズド・ビュー・サイトからリモート・サイトへの、遅延トランザクション・キューの自動プッシュを中止します。 |
このプロシージャは、DEFSCHEDULE
データ・ディクショナリ・ビューの伝播統計を消去します。このプロシージャが正常に実行されると、このビューのすべての統計は0(ゼロ)に戻され、新しく統計収集が開始されます。
特に、このプロシージャはDEFSCHEDULE
データ・ディクショナリ・ビューの次の列からの統計を消去します。
TOTAL_TXN_COUNT
AVG_THROUGHPUT
AVG_LATENCY
TOTAL_BYTES_SENT
TOTAL_BYTES_RECEIVED
TOTAL_ROUND_TRIPS
TOTAL_ADMIN_COUNT
TOTAL_ERROR_COUNT
TOTAL_SLEEP_TIME
このプロシージャは、DEFERROR
ビューからトランザクションを削除します。
パラメータ
表14-7 DELETE_ERRORプロシージャのパラメータ
パラメータ | 説明 |
---|---|
deferred_tran_id |
|
destination |
トランザクションが初めにキューに入れられたデータベースの |
このプロシージャは、DEFTRANDEST
ビューからトランザクションを削除します。他のDEFTRANDEST
またはDEFERROR
エントリがない場合、トランザクションはDEFTRAN
ビューとDEFCALL
ビューからも削除されます。
このファンクションは、カレント・サイトから指定されたサイトへの、遅延トランザクション・キューの伝播が有効になっているかどうかを判定します。指定された接続先に対して遅延リモート・プロシージャ・コール(Remote Procedure Call: RPC)のキューが使用禁止になっている場合、DISABLED
ファンクションによってTRUE
が戻されます。
このファンクションは、遅延トランザクションPUSH
を防ぐ排他ロックを取得します(シリアルまたはパラレル)。このファンクションは、ロックの取得時にコミットを実行します。ロックはRELEASE_ON_COMMIT
=>
TRUE
で取得されるため、次のコミット後に、遅延トランザクション・キューのプッシュを再開できます。
このプロシージャは、正常に終了しなかった遅延トランザクションを再実行します。各トランザクションは、接続しているユーザーのセキュリティ・コンテキストで実行されます。
このファンクションは、カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションをパージします。
構文
DBMS_DEFER_SYS.PURGE ( purge_method IN BINARY_INTEGER := purge_method_quick, rollback_segment IN VARCHAR2 := NULL, startup_seconds IN BINARY_INTEGER := 0, execution_seconds IN BINARY_INTEGER := seconds_infinity, delay_seconds IN BINARY_INTEGER := 0, transaction_count IN BINARY_INTEGER := transactions_infinity, write_trace IN BOOLEAN := NULL); RETURN BINARY_INTEGER;
パラメータ
表14-18 PURGEファンクションのパラメータ
パラメータ | 説明 |
---|---|
purge_method |
遅延トランザクション・キューのパージ方法を制御します。
|
rollback_segment |
パージに使用するロールバック・セグメントの名前、またはデフォルトの |
startup_seconds |
同じ遅延トランザクション・キューの前のパージを待つ最大秒数です。 |
execution_seconds |
値が0(ゼロ)より大きい場合、指定された実秒数後に、パージが完全に停止します。 |
delay_seconds |
|
transaction_count |
値が0(ゼロ)より大きい場合、 |
write_trace |
値が |
戻り値
表14-19 PURGEファンクションの戻り値
値 | 説明 |
---|---|
result_ok |
OKです。 |
result_startup_seconds |
スタート時にロック・タイムアウトにより終了しました。 |
result_execution_seconds |
|
result_transaction_count |
|
result_errors |
エラー発生後に終了しました。 |
result_split_del_order_limit |
排他モードでエンキューの取得の失敗後に終了しました。このリターン・コードが戻された場合は、パージを再試行してください。問題が解決しない場合は、Oracleサポート・サービスまでお問い合せください。 |
result_purge_disabled |
静止せずに新しいマスター・サイトを追加するときの同期のため、キューのパージが内部で使用禁止になっています。 |
使用上の注意
DBMS_DEFER_SYS.PURGE
ファンクションのpurge_method
パラメータにpurge_method_quick
を指定すると、遅延トランザクションおよび遅延プロシージャ・コールが正常にプッシュされた後、それぞれDEFTRAN
およびDEFCALL
データ・ディクショナリ・ビューに保持されることがあります。これは、複数のデータベース・リンクがあるレプリケーション環境で、1つのデータベース・リンクのみに対してプッシュが実行された場合に発生します。
遅延トランザクションおよび遅延プロシージャ・コールをパージするには、次のいずれかを実行します。
purge_method_quick
ではなく、purge_method
パラメータのpurge_method_precise
を使用します。purge_method_precise
を使用するとコストは増大しますが、遅延トランザクションおよびプロシージャ・コールは、正常にプッシュされた後で確実にパージされます。
purge_method
パラメータにpurge_method_quick
を指定して、遅延トランザクションをすべてのデータベース・リンクにプッシュします。遅延トランザクションおよび遅延プロシージャ・コールは、最後のデータベース・リンクに正常にプッシュされた時点でパージされます。
このファンクションは、カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延リモート・プロシージャ・コール(RPC)・キューを、強制的にリモート・サイトへプッシュ(伝播)します。シリアル伝播またはパラレル伝播のいずれかが使用されます。
構文
DBMS_DEFER_SYS.PUSH ( destination IN VARCHAR2, parallelism IN BINARY_INTEGER := 0, heap_size IN BINARY_INTEGER := 0, stop_on_error IN BOOLEAN := FALSE, write_trace IN BOOLEAN := FALSE, startup_seconds IN BINARY_INTEGER := 0, execution_seconds IN BINARY_INTEGER := seconds_infinity, delay_seconds IN BINARY_INTEGER := 0, transaction_count IN BINARY_INTEGER := transactions_infinity, delivery_order_limit IN NUMBER := delivery_order_infinity) RETURN BINARY_INTEGER;
パラメータ
表14-21 PUSHファンクションのパラメータ
パラメータ | 説明 |
---|---|
destination |
変更を転送するマスター・サイトまたはマテリアライズド・ビュー・サイトの、完全修飾されたデータベース名です。 |
parallelism |
0(ゼロ)はシリアル伝播を指定します。 n > 1は、n個のパラレル処理のパラレル伝播を指定します。 1は、パラレル処理を1つのみ使用するパラレル伝播を指定します。 |
heap_size |
パラレル伝播スケジュールのために同時に検査されるトランザクションの最大数です。最適なパフォーマンスを実現するデフォルト値が、自動的に計算されます。 注意: Oracleサポート・サービスから指示された場合を除き、パラメータを設定しないでください。 |
stop_on_error |
値が 注意: |
write_trace |
値が |
startup_seconds |
同じ接続先への前のプッシュを待つ最大秒数です。 |
execution_seconds |
値が0(ゼロ)より大きい場合、指定された実秒数後に、プッシュが完全に停止します。
|
delay_seconds |
キューが空でも、指定された秒数が経過するまでプッシュは終了しません。タイトなループから |
transaction_count |
値が0(ゼロ)より大きい場合、トランザクションの最大数のプッシュ後に停止します。 |
delivery_order_limit |
|
戻り値
表14-22 PUSHファンクションの戻り値
値 | 説明 |
---|---|
result_ok |
OKです。 |
result_startup_seconds |
スタート時にロック・タイムアウトにより終了しました。 |
result_execution_seconds |
|
result_transaction_count |
|
result_delivery_order_limit |
|
result_errors |
エラー発生後に終了しました。 |
result_push_disabled |
PUSHが内部で使用禁止になりました。通常はこの戻り値は、マスター・グループを静止せずにマスター・グループに新しいマスター・サイトを追加するとき、伝播同期のため、接続先への伝播が内部で使用禁止に設定されたことを意味します。伝播はのちに自動的に使用可能になります。 |
result_split_del_order_limit |
排他モードでエンキューの取得の失敗後に終了しました。このリターン・コードが戻された場合は、プッシュを再試行してください。問題が解決しない場合は、Oracleサポート・サービスまでお問い合せください。 |
例外
表14-23 PUSHファンクションの例外
例外 | 説明 |
---|---|
incompleteparallelpush |
シリアル伝播を実行するには、パラレル伝播を完全に停止する必要があります。 |
executiondisabled |
遅延リモート・プロシージャ・コール(RPC)の実行が、接続先で使用禁止になっています。 |
crt_err_err |
|
deferred_rpc_quiesce |
レプリケーション・グループのレプリケーション・アクティビティが中断されました。 |
commfailure |
遅延リモート・プロシージャ・コール(RPC)中に通信障害が発生しました。 |
missingpropagator |
プロパゲータが存在しません。 |
このプロシージャは、指定されたユーザーをローカル・データベースのプロパゲータとして登録します。また、指定されたユーザーに(ユーザーがラッパーを作成できるように)次の権限を付与します。
CREATE
SESSION
CREATE
PROCEDURE
CREATE
DATABASE
LINK
EXECUTE
ANY
PROCEDURE
このプロシージャは、カレント・マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューから、プッシュされたトランザクションのパージ・ジョブをスケジュールします。1つのパージ・ジョブをスケジュールする必要があります。
関連項目: このプロシージャを使用した、遅延トランザクション・キューの連続的または定期的なパージのスケジュールの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 |
構文
DBMS_DEFER_SYS.SCHEDULE_PURGE ( interval IN VARCHAR2, next_date IN DATE, reset IN BOOLEAN := NULL, purge_method IN BINARY_INTEGER := NULL, rollback_segment IN VARCHAR2 := NULL, startup_seconds IN BINARY_INTEGER := NULL, execution_seconds IN BINARY_INTEGER := NULL, delay_seconds IN BINARY_INTEGER := NULL, transaction_count IN BINARY_INTEGER := NULL, write_trace IN BOOLEAN := NULL);
パラメータ
表14-26 SCHEDULE_PURGEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
interval |
次のパージの時間を計算するファンクションを指定できます。値は |
next_date |
サイトのキューから、プッシュされたトランザクションをパージする時間を指定できます。値は |
reset |
|
purge_method |
遅延トランザクション・キューのパージ方法を制御します。
|
rollback_segment |
パージに使用するロールバック・セグメントの名前、またはデフォルトの |
startup_seconds |
同じ遅延トランザクション・キューの前のパージを待つ最大秒数です。 |
execution_seconds |
値が0(ゼロ)より大きい場合、指定された実秒数後に、パージが完全に停止します。 |
delay_seconds |
|
transaction_count |
値が0(ゼロ)より大きい場合、 |
write_trace |
値が |
このプロシージャは、遅延トランザクション・キューをリモート・サイトにプッシュするジョブをスケジュールします。このプロシージャではCOMMIT
が実行されます。
関連項目: このプロシージャを使用した、遅延トランザクション・キューの連続的または定期的なプッシュのスケジュールの詳細は、『Oracle Databaseアドバンスト・レプリケーション』を参照してください。 |
構文
DBMS_DEFER_SYS.SCHEDULE_PUSH ( destination IN VARCHAR2, interval IN VARCHAR2, next_date IN DATE, reset IN BOOLEAN := FALSE, parallelism IN BINARY_INTEGER := NULL, heap_size IN BINARY_INTEGER := NULL, stop_on_error IN BOOLEAN := NULL, write_trace IN BOOLEAN := NULL, startup_seconds IN BINARY_INTEGER := NULL, execution_seconds IN BINARY_INTEGER := NULL, delay_seconds IN BINARY_INTEGER := NULL, transaction_count IN BINARY_INTEGER := NULL);
パラメータ
表14-27 SCHEDULE_PUSHプロシージャのパラメータ
パラメータ | 説明 |
---|---|
destination |
変更を転送するマスター・サイトまたはマテリアライズド・ビュー・サイトの、完全修飾されたデータベース名です。 |
interval |
次のプッシュの時間を計算するファンクションを指定できます。値は |
next_date |
遅延トランザクションをリモート・サイトにプッシュする時間を指定できます。値は |
reset |
|
parallelism |
0(ゼロ)はシリアル伝播を指定します。 n > 1は、n個のパラレル処理のパラレル伝播を指定します。 1は、パラレル処理を1つのみ使用するパラレル伝播を指定します。 |
heap_size |
パラレル伝播スケジュールのために同時に検査されるトランザクションの最大数です。最適なパフォーマンスを実現するデフォルト値が、自動的に計算されます。 注意: Oracleサポート・サービスから指示された場合を除き、パラメータを設定しないでください。 |
stop_on_error |
値が 注意: |
write_trace |
値が |
startup_seconds |
同じ接続先への前のプッシュを待つ最大秒数です。 |
execution_seconds |
値が0(ゼロ)より大きい場合、指定された実秒数後に、実行が完全に停止します。 |
delay_seconds |
キューが空でも、指定された秒数が経過するまでプッシュは終了しません。タイトなループから |
transaction_count |
値が0(ゼロ)より大きい場合、トランザクションの最大数のプッシュ後に停止します。 |
カレント・サイトから指定された接続先サイトへの、遅延トランザクション・キューの伝播が使用禁止あるいは使用可能にされます。disabledパラメータがTRUE
の場合、指定された接続先への伝播が使用禁止になり、PUSH
が呼び出されても遅延リモート・プロシージャ・コール(RPC)キューがプッシュされなくなります。SET_DISABLED
は、指定された接続先へキューをすでにプッシュしているセッションには適用されますが、DBMS_DEFER
でキューに追加されているセッションには適用されません。
disabledパラメータがFALSE
の場合、指定された接続先への伝播が有効になり、キューはプッシュされませんが、PUSH
の呼出しによる指定された接続先へのキューのプッシュが可能になります。disabledパラメータがTRUE
かFALSE
かに関係なく、設定が他のセッションにも適用されるようにするには、COMMIT
が必要です。
構文
DBMS_DEFER_SYS.SET_DISABLED ( destination IN VARCHAR2, disabled IN BOOLEAN := TRUE, catchup IN RAW := '00', override IN BOOLEAN := FALSE);
パラメータ
表14-28 SET_DISABLEDプロシージャのパラメータ
パラメータ | 説明 |
---|---|
destination |
伝播ステータスを変更するノードの、完全修飾されたデータベース名です。 |
disabled |
デフォルトでは、このパラメータによって、カレント・サイトから指定された接続先への遅延トランザクション・キューの伝播が使用禁止になります。値を |
catchup |
マスター・グループを静止せずに新しいマスター・サイトをマスター・グループに追加するための、拡張識別子です。新しいマスター・サイトが接続先です。 |
override |
デフォルトの
注意: Oracleサポート・サービスから指示された場合を除き、このパラメータを設定しないでください。 |
プロパゲータとしてのユーザーの登録を、ローカル・データベースから削除します。このプロシージャでは、次の処理が行われます。
指定されたプロパゲータがDEFPROPAGATOR
から削除されます。
REGISTER_PROPAGATOR
によってユーザーに付与された権限が取り消されます。別個に付与された同一の権限も取り消されます。
指定されたプロパゲータのスキーマ内に生成されたラッパーが削除されます。削除されたラッパーには、レプリケーション・カタログで削除済のマークが付けられます。
構文
DBMS_DEFER_SYS.UNREGISTER_PROPAGATOR ( username IN VARCHAR2 timeout IN INTEGER DEFAULT DBMS_LOCK.MAXWAIT);
このプロシージャは、マスター・サイトまたはマテリアライズド・ビュー・サイトの遅延トランザクション・キューからの、プッシュされたトランザクションの自動パージを中止します。