29 DBMS_AQMIGTOOL

DBMS_AQMIGTOOLパッケージは、オーケストレーションの自動化、ソースとターゲットの互換性の診断と修正、統一されたユーザー・エクスペリエンスによって、Oracle Databaseアドバンスト・キューイング(AQ)からトランザクション・イベント・キュー(TxEventQ)への移行を簡素化します。移行シナリオは、短期間にすることも長期間にすることも、AQ停止時間ありでもなしでも実行できるため、運用上の中断がなくなります。

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

29.1 DBMS_AQMIGTOOLのセキュリティ・モデル

ユーザーがすべてのDBMS_AQMIGTOOLサブプログラムを実行するには、DBMS_AQMIGTOOLパッケージに対するEXECUTE権限が必要です。このパッケージの呼出し元がキューの所有者の場合は、DBMS_AQMIGTOOLパッケージに対するEXECUTE権限のみで十分です。ただし、呼出し元が所有者でない場合は、MANAGE_ANYキュー・システム権限も必要になります。この権限は、DBMS_AQADM.GRANT_SYSTEM_PRIVILEGEによって生成できます。

29.2 DBMS_AQMIGTOOL定数

DBMS_AQMIGTOOLパッケージは、パラメータ値の指定に使用できるいくつかの定数を定義します。

AUTOMATICINTERACTIVEまたはENABLE_EVALUATIONなどの列挙定数を使用するときは、それを定義するパッケージの範囲内で、その記号を指定する必要があります。管理インタフェースに関連付けられているすべてのタイプには、DBMS_AQMIGTOOLを付加する必要があります。例: DBMS_AQMIGTOOL.AUTOMATIC

表29-1 DBMS_AQMIGTOOL定数

パラメータ オプション

mig_mode

AUTOMATIC

INTERACTIVE

OFFLINE

ONLY_DEFINITION

1

2

3

4

ordering

GLOBAL

SESSION

1

2

checkmode

CURRENT

ENABLE_EVALUATION

1

2

cancelmode

RESTORE

NORESTORE

Q_EMPTY

1

2

3

purge_option

ONLY_CQ

ONLY_TXEVENTQ

BOTH_Q

1

2

3

29.3 DBMS_AQMIGTOOLサブプログラムの要約

この項では、DBMS_AQMIGTOOLのサブプログラムをリストし、簡単に説明します。

表29-2 DBMS_AQMIGTOOLパッケージのサブプログラム

サブプログラム 説明

CANCEL_MIGRATIONプロシージャ

暫定的なTxEventQを削除して進行中の移行を取り消します

CHECK_MIGRATED_MESSAGESプロシージャ

AQおよび暫定的なTxEventQ内のREADY状態のメッセージ数を提示します

CHECK_MIGRATION_TO_TXEVENTQプロシージャ

AQの定義とデータを分析して、TxEventQでサポートされていない機能をレポートします

CHECK_STATUSプロシージャ

進行中の移行プロセスについて現在のステータスを返します

CLEAR_UNSUPPORTED_FEATURE_TABLEプロシージャ

USER_TXEVENTQ_MIGRATION_STATUSビューからエントリをクリアします

COMMIT_MIGRATIONプロシージャ

移行プロセスは、AQを削除して、AQの名前と一致するように暫定TxEventQの名前を変更し、すべての操作に対してTxEventQを有効にすることで完了します

DISABLE_MIGRATION_CHECKプロシージャ

サポートされていない機能を検出するための内部的なAQモニタリングを無効化し、USER_TXEVENTQ_MIGRATION_STATUSビュー内のイベント挿入を停止します

INIT_MIGRATIONプロシージャ

AQの定義とサポートされていない機能に関するデータを分析して、AQの構成をコピーする暫定的なTxEventQを作成して移行プロセスを開始します

PURGE_QUEUE_MESSAGESプロシージャ

キューからメッセージをパージします

RECOVER_MIGRATIONプロシージャ

移行のプロシージャ(DBMS_AQMIGTOOL.INIT_MIGRATIONDBMS_AQMIGTOOL.COMMIT_MIGRATIONDBMS_AQMIGTOOL.CANCEL_MIGRATIONなど)の実行中の障害からのリカバリに役立ちます。

RENAME_QUEUEプロシージャ

デフォルトの例外キュー(存在する場合)とともにTxEventQの名前を変更します

29.3.1 CANCEL_MIGRATIONプロシージャ

このプロシージャは、進行中の移行を取り消す目的に利用します。これには、DBMS_AQMIGTOOL.INIT_MIGRATIONの実行中に作成された暫定的なTxEventQの削除が含まれます。

構文

PROCEDURE DBMS_AQMIGTOOL.CANCEL_MIGRATION (
	cqschema    IN VARCHAR2,
	cqname      IN VARCHAR2,
	cancelmode  IN NUMBER DEFAULT DBMS_AQMIGTOOL.RESTORE );

パラメータ

表29-3 CANCEL_MIGRATIONプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

移行の取消しが必要なキューの名前を指定します

cancelmode

ユーザーが移行を取り消すモードを指定します。次は、返される値です。

DBMS_AQMIGTOOL.RESTORE (デフォルト): このオプションでは、暫定的なTxEventQのメッセージをAQにメッセージ状態も含めてリストアします。リストアされたメッセージには新しいMSGIDが移入されます。

ノート:

リストアされたメッセージの優先度の動作は、AQとTxEventQのデフォルト値が異なるために変更されることがあります。

DBMS_AQMIGTOOL.NORESTORE: 暫定的なTxEventQ内のメッセージは破棄されます。

DBMS_AQMIGTOOL.EMPTY: 暫定的なTxEventQが空でない場合、このオプションを選択していると例外がトリガーされ、ユーザーに暫定的なTxEventQからすべてのメッセージをデキューするように求められます。このモードは、AQへの遷移中にメッセージの移行をユーザーが望んでいない場合に役立ちます。

使用上のノート

このプロシージャの前提条件は、すでにキューで移行が開始されている必要があることです。つまり、このプロシージャの実行前に、DBMS_AQMIGTOOL.INIT_MIGRATIONが呼び出されていることが必要です。DBMS_AQMIGTOOL.RESTOREモードの場合、TxEventQの例外キュー・メッセージは、AQまたはその例外キューにリストアされません。

29.3.2 CHECK_MIGRATED_MESSAGESプロシージャ

このプロシージャは、AQと暫定的なTxEventQの両方にあるREADY状態のメッセージ数を計算します。この数は、DBMS_AQMIGTOOL.COMMIT_MIGRATIONまたはDBMS_AQMIGTOOL.CANCEL_MIGRATIONの使用前に重要なインサイトを提供します。計算された数は、サブスクライバの数とは関係ありません。

構文

PROCEDURE SYS.DBMS_AQMIGTOOL.CHECK_MIGRATED_MESSAGES (
	cqschema                           IN VARCHAR2,
	cqname                             IN VARCHAR2, 
	txeventq_migrated_message          IN OUT NUMBER, 
	cq_pending_messages                IN OUT NUMBER);

パラメータ

表29-4 CHECK_MIGRATED_MESSAGESプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

移行プロセスが開始されているキューの名前を指定します

txeventq_migrated_message

暫定的なTxEventQ内にあるREADY状態のメッセージ数を表します。この数は、ユーザーがDBMS_AQMIGTOOL.CANCEL_MIGRATIONの実行を選択した場合、潜在的なフォールバック時間を見積もる際に役立ちます。

cq_pending_messages

AQ内にあるREADY状態のメッセージ数を表します。この数は、AQが空になるまでに残っているREADY状態メッセージの数を決定するのに役立ちます(これが空になっていることが、DBMS_AQMIGTOOL.COMMIT_MIGRATIONプロシージャを使用するための前提条件です)。

使用上のノート

このプロシージャの前提条件は、すでにキューで移行が開始されている必要があることです。これは、このプロシージャの実行前に、DBMS_AQMIGTOOL.INIT_MIGRATIONが呼び出されている必要があるということです。

29.3.3 CHECK_MIGRATION_TO_TXEVENTQプロシージャ

このプロシージャは、AQの定義とデータを確認し、TxEventQでサポートされていない機能をレポートします。サポートされていない機能が検出されない場合、migration_reportは空になります。

構文

PROCEDURE DBMS_AQMIGTOOL.CHECK_MIGRATION_TO_TXEVENTQ (
	cqschema           IN VARCHAR2,
	cqname             IN VARCHAR2,
	migration_report   IN OUT TXEVENTQ_MIGREPORT_ARRAY, 
	checkmode          IN NUMBER DEFAULT DBMS_AQMIGTOOL.ENABLE_EVALUATION);

パラメータ

表29-5 CHECK_MIGRATION_TO_TXEVENTQプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

サポートされていない機能のチェックが必要なキュー名を指定します

migration_report

サポートされていないイベントの詳細とそれに対応する説明が含まれているVarray。最新の20のサポートされていない機能を保持します。

checkmode

ユーザーがチェックするモードを指定します。次は、返される値です。

DBMS_AQMIGTOOL.CURRENT: このモードでは、現在のAQとそのデータの定義を使用してレポートを生成します。

DBMS_AQMIGTOOL.ENABLE_EVALUATION (デフォルト): このモードは、CURRENTオプション・レポートと連動して、AQのモニタリングを有効にします。これは、ランタイム固有のサポートされていない機能を取得する際に役立ちます。AQに適用されるワークロードが増えたときに、サポートされていない機能が見つかった場合、その機能はUSER_TXEVENTQ_MIGRATION_STATUSビューからアクセス可能な内部表に記録されます。ユーザーは、DBMS_AQMIGTOOL.DISABLE_MIGRATION_CHECKを使用することでモニタリングを無効にできます。

使用上のノート

相対メッセージ識別子、順序逸脱、変換などのいくつかの機能は、TxEventQではサポートされていません。それらのいずれかを使用するキューについては、migration_reportに記録されます。

移行プロセスの開始前に、DBMS_AQMIGTOOL.CHECK_MIGRATION_TO_TXEVENTQプロシージャを使用してサポートされていない機能を検出しておくことをお薦めします。

29.3.4 CHECK_STATUSプロシージャ

このプロシージャは移行プロセスのステータスを返します。サポートされていない機能が検出された場合、このプロシージャは、サポートされていない最新の機能について説明とともに詳細を返します。その一方で、サポートされていない機能が検出されない場合は、'互換性エラーなし'のステータスが返されます。

構文

PROCEDURE DBMS_AQMIGTOOL.CHECK_STATUS (
	cqschema                    IN VARCHAR2,
	cqname                      IN VARCHAR2, 
	status                      IN OUT VARCHAR2, 
	migration_comment           IN OUT VARCHAR2);

パラメータ

表29-6 CHECK_STATUSプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

移行プロセス・ステータスについてチェックが必要なキューの名前を指定します

status

互換性ステータスを返します。互換性がない(サポートされていない機能が検出された)場合は、サポートされていない最新のイベントが戻され、ステータスが"Compatibility Error: <feature_name> Unsupported Feature"の形式で戻されます。

migration_comment

ステータスが互換性なしの場合、サポートされていないイベントの説明が示されます

使用上のノート

このプロシージャの前提条件は、すでにキューで移行が開始されている必要があることです。これは、このプロシージャの実行前に、DBMS_AQMIGTOOL.INIT_MIGRATIONが呼び出されている必要があるということです。

次の表に、初期化前または初期化後の移行中のイベントに関する情報が格納されます。ユーザーは、この情報にセキュリティ・ビューのDBA_TXEVENTQ_MIGRATION_STATUSUSER_TXEVENTQ_MIGRATION_STATUSおよびALL_TXEVENTQ_MIGRATION_STATUSからアクセスできます。

sys.aq$_migration_status(
        migration_id           RAW(16);
        source_schema          VARCHAR2(128) NOT NULL,
        source_queue           VARCHAR2(128) NOT NULL,
        source_queue_table     VARCHAR2(128),
        target_schema          VARCHAR2(128) NOT NULL,
        target_queue           VARCHAR2(128) NOT NULL,  	
        status                 NUMBER,
        event                  VARCHAR(128),
        event_timestamp        TIMESTAMP WITH TIME ZONE,
        event_id               NUMBER,
        event_error            VARCHAR2(1024),
        ordering               VARCHAR(30),
        suffix                 VARCHAR2(2),
        mig_mode               NUMBER,
        spare1                 NUMBER,
        spare2                 VARCHAR2(30),
        spare3                 TIMESTAMP WITH TIME ZONE         
)

一意のmigration_idが、開始された移行ごとに割り当てられます。

参照:

『Oracle Databaseリファレンス』のDBA_TXEVENTQ_MIGRATION_STATUS

『Oracle Databaseリファレンス』のUSER_TXEVENTQ_MIGRATION_STATUS

『Oracle Databaseリファレンス』のALL_TXEVENTQ_MIGRATION_STATUS

29.3.5 CLEAR_UNSUPPORTED_FEATURE_TABLEプロシージャ

このプロシージャは、USER_TXEVENTQ_MIGRATION_STATUSビューの基になっている表からエントリを削除します。このビューには、DBMS_AQMIGTOOL.CHECK_MIGRATION_TO_TXEVENTQプロシージャで検出されたサポートされていない機能に関連するレコードと、その他の内部目的で使用される移行プロシージャ・コール(INIT_MIGRATION/COMMIT_MIGRATION/CANCEL_MIGRATION)の詳細が格納されます。

構文

PROCEDURE DBMS_AQMIGTOOL.CLEAR_UNSUPPORTED_FEATURE_TABLE (
	cqschema             IN   VARCHAR2,
	cqname               IN   VARCHAR2 DEFAULT NULL,
	eraseall            IN   BOOLEAN DEFAULT FALSE);

パラメータ

表29-7 CLEAR_UNSUPPORTED_FEATURE_TABLEプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

レコードのクリアが必要なキューの名前を指定します

eraseall

TRUEは、指定したキューのすべてのレコードを消去します。

ノート:

TRUE値は内部使用のみを意図したもので、Oracleサポートへの相談なしに使用しないでください。

FALSEは、サポートされていない機能に関連するレコードのみを消去します。

使用上のノート

ユーザーは、このプロシージャを使用すると、DBMS_AQMIGTOOL.CHECK_MIGRATION_TO_TXEVENTQプロシージャで生成されたレコードを消去できます。キューまたはユーザーを削除すると、そのキューのレコードも消去することになります。ただし、DBMS_AQMIGTOOL.COMMIT_MIGRATIONまたはDBMS_AQMIGTOOL.CANCEL_MIGRATIONを実行しても、キューのレコードはクリアされません。そのため、このプロシージャでは、任意の時点でキューのレコードを柔軟に消去できます。

29.3.6 COMMIT_MIGRATIONプロシージャ

このプロシージャは移行プロセスを完了します。AQを削除して、暫定的なTxEventQの名前をAQの名前に変更し、すべての操作に対してTxEventQを有効にします。このプロシージャを正常に実行するには空のAQ (READY状態のメッセージがないもの)が必要になることに注意してください。それがないと、例外が発生します。

構文

PROCEDURE DBMS_AQMIGTOOL.COMMIT_MIGRATION (
	cqschema         IN VARCHAR,
	cqname           IN VARCHAR,
	ignore_warning   IN BOOLEAN DEFAULT FALSE));

パラメータ

表29-8 COMMIT_MIGRATIONプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

移行の完了が必要なキューの名前を指定します

ignore_warning

DBMS_AQMIGTOOL.INIT_MIGRATIONの後には、サポートされていないイベントがすべて警告として記録されます。TRUEは、プロシージャが警告を無視して移行を完了することを意味します。FALSEは、警告がある場合にはプロシージャがエラーをスローすることを意味します。

使用上のノート

このプロシージャの前提条件は、移行がすでにキューで開始されている必要があることです。つまり、このプロシージャの実行前に、DBMS_AQMIGTOOL.INIT_MIGRATIONプロシージャが呼び出されている必要があります。AQの例外キューのメッセージは、TxEventQの例外キューにコピーされません。

29.3.7 DISABLE_MIGRATION_CHECKプロシージャ

このプロシージャは、サポートされていない機能を検出するための内部的なAQモニタリングを無効にします。また、USER_TXEVENTQ_MIGRATION_STATUSビューに対応するイベントの記録も停止します。

構文

PROCEDURE DBMS_AQMIGTOOL.DISABLE_MIGRATION_CHECK (
	cqschema       IN VARCHAR2)
	cqname         IN VARCHAR2);

パラメータ

表29-9 DISABLE_MIGRATION_CHECKプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

移行モニタリングの無効化が必要なキューの名前を指定します

使用上のノート

移行前のステップとして、ユーザーはDBMS_AQMIGTOOL.ENABLE_EVALUATIONオプションを指定してDBMS_AQMIGTOOL.CHECK_MIGRATION_TO_TXEVENTQを呼び出すことで、サポートされていない機能の記録を開始できます。これに続けて、潜在的な問題を検出するためにAQで包括的なワークロードを実行し、その後でDBMS_AQMIGTOOL.DISABLE_MIGRATION_CHECKをコールすることでサポートされていない機能の記録を停止できます。移行の問題が見つかった場合、ユーザーはプロセスを繰り返す前にワークロードを変更できます。移行の問題が見つからなかった場合は、AQの移行を試行できます。

29.3.8 INIT_MIGRATIONプロシージャ

このプロシージャは、AQの定義とデータを調べて、TxEventQでサポートされていない機能を検出します。サポートされていない機能が検出されると、例外が発生します。それ以外の場合、このプロシージャは、ペイロード・タイプ、ルール、サブスクライバ、権限、PL/SQL通知などを含むAQの構成をコピーする暫定的なTxEventQを作成することで移行プロセスを開始します。

構文

PROCEDURE DBMS_AQMIGTOOL.INIT_MIGRATION (
	cqschema            IN VARCHAR2,
	cqname              IN VARCHAR2 DEFAULT NULL,
	txeventqschema      IN VARCHAR2 DEFAULT NULL,
	txeventqname        IN VARCHAR2 DEFAULT NULL,
	mig_mode            IN NUMBER DEFAULT DBMS_AQMIGTOOL.INTERACTIVE,
	ordering            IN NUMBER DEFAULT DBMS_AQMIGTOOL.GLOBAL,
	suffix              IN VARCHAR2 DEFAULT ‘M’);

パラメータ

表29-10 INIT_MIGRATIONプロシージャのパラメータ

パラメータ 説明

cqschema

キュー(AQ)が存在するスキーマ名を指定します

cqname

移行プロセスの開始が必要なキュー(AQ)の名前を指定します。

cqnameがNULLの場合は、cqschema内のすべてのAQに対して移行が開始され、サポートされていない機能があるキューは無視されます。実行により、DBMS_AQMIGTOOL.INIT_MIGRATIONが成功したキューの数が表示されます。

txeventqschema

ターゲットTxEventQの作成先にするスキーマ名を指定します。この値は、DBMS_AQMIGTOOL.ONLY_DEFINITIONモードの場合にのみ指定します。

呼出し元のスキーマがtxeventqschemaと異なる場合、このプロシージャを正常に実行するには MANAGE_ANYキュー・システム権限が必要です。

txeventqname

作成するターゲットTxEventQのキューの名前を指定します。この値は、DBMS_AQMIGTOOL.ONLY_DEFINITIONモードの場合にのみ指定します。

mig_mode

移行モードを指定します。次は、返される値です。

DBMS_AQMIGTOOL.AUTOMATIC: このモードではエンキュー操作とデキュー操作が許可されますが、AQに残されたREADY状態のメッセージがなく、サポートされていない機能が検出されていないときには、バックグラウンド・ジョブによってDBMS_AQMIGTOOL.COMMIT_MIGRATIONの実行が試行されます。

DBMS_AQMIGTOOL.INTERACTIVE (デフォルト): このモードでは、エンキュー操作とデキュー操作の両方が許可されます。

DBMS_AQMIGTOOL.OFFLINE: このモードではデキュー操作のみが許可されます。これは、新しいエンキュー操作を制限することでワークロードを削減するために役立ちます。

DBMS_AQMIGTOOL.ONLY_DEFINITION: このモードでは、暫定的なTxEventQの設定ではなく、AQと同じ構成で個別のTxEventQを作成します。これにより、AQとTxEventQをシステムに残したまま、移行プロセスを完了します。AQに存在しているメッセージは、新しく作成されたTxEventQにコピーされません。

ノート:

DBMS_AQMIGTOOL.ONLY_DEFINITIONモードの場合は、移行の完了または取消しのためにDBMS_AQMIGTOOL.COMMIT_MIGRATIONまたはDBMS_AQMIGTOOL.CANCEL_MIGRATIONをコールする必要はありません。このDBMS_AQMIGTOOL.INIT_MIGRATIONコールで十分です。ただし、その他のモードの場合、ユーザーはDBMS_AQMIGTOOLパッケージの別のプロシージャを明示的にコールして続行する必要があります。

ordering

ユーザーが従うメッセージ・レベルの順序付けを指定します。次は、返される値です。

DBMS_AQMIGTOOL.GLOBAL (デフォルト): このオプションでは、TxEventQのイベント・ストリーム数を1に設定することで、グローバル・レベルのメッセージの順序付けを実装します。

DBMS_AQMIGTOOL.SESSION: このオプションでは、セッションに対してのみメッセージ順序を適用します。TxEventQのイベント・ストリーム数は、初期化パラメータ_aq_init_shardsに基づいて設定されます。TxEventQのパフォーマンス上の利点を最大に活用するために、このオプションの使用をお薦めします。

suffix

暫定的なTxEventQに名前を付けるための単一文字の接尾辞を指定します。暫定的なTxEventQ名は、<cqname>_<suffix>の形式になります。この接尾辞のデフォルト値はMです。

使用上のノート

  • このプロシージャは、AQ$_<TxEventQ_name>_Eという命名形式に従って、TxEventQにデフォルトの例外キューも作成します。

  • 次の事項は、DBMS_AQMIGTOOL.ONLY_DEFINITIONモードには関係ありませんが、その他のモードに適用されます。

    • 暫定的なTxEventQの構成整合性を維持するために、移行の完了または取消しまでAQの管理操作を制限します。

    • AQのエンキュー操作とデキュー操作は許可されます:

      • 新しいメッセージのエンキュー・リクエストは、暫定的なTxEventQに送信されます。

      • メッセージは、最初にAQからデキューされます。READY状態のメッセージがない場合、メッセージは暫定的なTxEventQからデキューされます。

    • ユーザーは、暫定的なTxEventQに対してすべての直接操作を実行できないように制限されます。暫定的なTxEventQに対するエンキュー操作とデキュー操作は、常にAQを通じて実行されます。

  • サポートされていない機能の検出によってプロシージャが例外をトリガーする場合は、DBMS_AQMIGTOOL.CHECK_MIGRATION_TO_TXEVENTQプロシージャを使用して、検出されたサポートされていない機能の詳細リストを取得することをお薦めします。

  • 移行するキュー(AQ)が、そのキューが存在するキュー表と同じ名前を共有する場合など、名前の競合がある場合は、DBMS_AQMIGTOOL.ONLY_DEFINITIONモードのみがサポートされます。その他のモードでは、続行しようとすると例外が発生します。

29.3.9 PURGE_QUEUE_MESSAGESプロシージャ

このプロシージャでは、キューからメッセージをパージします。ユーザー入力に応じて、AQまたは暫定的なTxEventQ(あるいはその両方)からのメッセージのパージを実行できます。具体的には、DBMS_AQMIGTOOL.COMMIT_MIGRATIONを実行するための前提条件の1つに、READY状態のメッセージが存在しない空のAQの確保があります。このプロシージャを使用すると、ユーザーはAQからすべてのメッセージを効率的にパージして、この要件を満たすことができます。

構文

PROCEDURE DBMS_AQMIGTOOL.PURGE_QUEUE_MESSAGES (
	cqschema       IN VARCHAR2,  
	cqname         IN VARCHAR2, 
	purge_option   IN NUMBER DEFAULT DBMS_AQMIGTOOL.ONLY_CQ);

パラメータ

表29-11 PURGE_QUEUE_MESSAGESプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

移行プロセスが開始されたキューの名前を指定します

purge_option

パージが必要になるキュー・メッセージのオプションを指定します。次のオプションを使用できます。

DBMS_AQMIGTOOL.ONLY_CQ (デフォルト): AQからのみメッセージをパージします。

DBMS_AQMIGTOOL.ONLY_TXEVENTQ: 暫定的なTxEventQからのみメッセージをパージします。

DBMS_AQMIGTOOL.BOTH: AQと暫定的なTxEventQの両方からメッセージをパージします。

使用上のノート

AQ内のREADY状態のメッセージ数がDBMS_AQMIGTOOL.CHECK_MIGRATED_MESSAGEプロシージャから取得されていて、ユーザーがメッセージの利用のためのデキューを待たずにDBMS_AQMIGTOOL.COMMIT_MIGRATIONプロセスを高速化するように希望している場合は、DBMS_AQMIGTOOL.PURGE_QUEUE_MESSAGESプロシージャを使用できます。

このプロシージャの前提条件は、すでにキューで移行が開始されている必要があることです。これは、このプロシージャの実行前に、DBMS_AQMIGTOOL.INIT_MIGRATIONが呼び出されている必要があるということです。

29.3.10 RECOVER_MIGRATIONプロシージャ

このプロシージャは、DBMS_AQMIGTOOL.CANCEL_MIGRATIONDBMS_AQMIGTOOL.COMMIT_MIGRATIONまたはDBMS_AQMIGTOOL.INIT_MIGRATIONの実行前後で、最も近い実行可能な一貫性のあるポイントに移行状態をリストアします。その後、リカバリされた状態が出力パラメータrecovery_messageによってユーザーに表示され、この先の処置に関するガイダンスが得られます。移行のプロシージャでインスタンスのクラッシュなどの予期しない障害が発生した場合は、このプロシージャを使用すると、INIT_MIGRATIONの前、INIT_MIGRATIONの後、COMMIT_MIRGATIONの後、CANCEL_MIGRATIONの後など、最も近い一貫性のある状態に移行をリカバリできます。

構文

PROCEDURE DBMS_AQMIGTOOL.RECOVER_MIGRATION (
	cqschema              IN VARCHAR2,
	cqname                IN VARCHAR2,
	recovery_message      OUT VARCHAR2);

パラメータ

表29-12 RECOVER_MIGRATIONプロシージャのパラメータ

パラメータ 説明

cqschema

キューが存在するスキーマ名を指定します

cqname

移行プロセスが試行されたキューの名前を指定します

recovery_message

リストアされた移行状態の最も近い実行可能な一貫性のあるポイントを示す説明メッセージを返します

使用上のノート

次の表に、その可能性があるすべてのrecovery_messageを示します:

表29-13 recovery_messageに応じた推奨アクションの表

移行プロシージャの実行中にエラーが発生しました: recovery_message 推奨アクション

DBMS_AQMIGTOOL.INIT_MIGRATION

State is restored to before INIT_MIGRATION call execution.

移行を開始するために、ユーザーは明示的にDBMS_AQMIGTOOL.INIT_MIGRATIONを再度コールする必要があります。

DBMS_AQMIGTOOL.INIT_MIGRATION

State is restored to after INIT_MIGRATION call execution.

移行を開始するためにその他のアクションは不要です。このプロシージャは正常に開始されています。

DBMS_AQMIGTOOL.COMMIT_MIGRATION

State is restored to after COMMIT_MIGRATION call execution.

移行を完了するためにその他のアクションは不要です。このプロシージャは正常に移行を完了しています。

DBMS_AQMIGTOOL.CANCEL_MIGRATION

State is restored to before CANCEL_MIGRATION call execution.

移行の取消しを続行するために、ユーザーは明示的にDBMS_AQMIGTOOL.CANCEL_MIGRATIONを再度コールする必要があります。

DBMS_AQMIGTOOL.CANCEL_MIGRATION

State is restored to after CANCEL_MIGRATION call execution.

移行を取り消すためにその他のアクションは不要です。このプロシージャは正常に移行を取り消しています。

No migration procedure

No need for recovery call.

移行プロシージャの実行が検出されないため、最も近い実行可能な一貫性のあるポイントにリストアする必要はありません。

29.3.11 RENAME_QUEUEプロシージャ

このプロシージャは、デフォルトの例外キュー(存在する場合)とともにTxEventQの名前を変更します。

構文

PROCEDURE DBMS_AQMIGTOOL.RENAME_QUEUE (
	schema             IN VARCHAR2,
	qname              IN VARCHAR2,
	new_qname          IN VARCHAR2);

パラメータ

表29-14 RENAME_QUEUEプロシージャのパラメータ

パラメータ 説明

schema

キューが存在するスキーマ名を指定します

qname

名前を変更するキューの現在の名前を指定します

new_qname

既存のキューに割り当てる新しい名前を指定します。名前はスキーマ内で重複しないようにし、予約語については、『Oracle Database SQL言語リファレンス』のオブジェクト名のガイドラインに従う必要があります。

使用上のノート

このプロシージャには前提条件ステップが必要です。ユーザーはDBMS_AQADM.STOP_QUEUEを実行して、同時のエンキューおよびデキュー・トランザクションが存在しないようにする必要があります。

デフォルトの例外キューが存在する場合、その名前は<schema>.AQ$_<qname>_Eから<schema>.AQ$_<new_qname>_Eに変更されます。