プロシージャ・レプリケーション
プロシージャ・レプリケーションとその構成方法について学習します。
プロシージャ・レプリケーションについて
プロシージャ・レプリケーションは、Oracle AI Databaseでのみ使用できます。Oracle GoldenGateでは、プロシージャ・レプリケーションを使用して、Oracle AI Databaseが提供するPL/SQLプロシージャがレプリケートされ、これらの操作によって通常生成される大量レコードの送信および適用を回避します。プロシージャ・レプリケーションにより、ユーザーとセッションの動作、およびディクショナリのオブジェクトの入替えを制御するディクショナリの変更が実装されます。
プロシージャ・レプリケーションはCREATE、ALTERおよびDROP文(DDL)のレプリケーションとは関係がなく、正確には次のようなプロシージャ・コールのレプリケーションです。
CALL *procedure_name*(*arg1*, *arg2*, ...);
次とは異なります。
exec *procedure_name*(*arg1*, *arg2*, ...)
プロシージャ・レプリケーションを有効にすると、1つのデータベースにおける Oracle AI Database提供パッケージの手続きへの呼び出しが、1つ以上のほかのデータベースにレプリケートされてから、これらのデータベースで実行されます。たとえば、DBMS_REDEFINITIONパッケージ内のサブプログラムのコールによって、表のオンライン再定義を実行できます。複数のデータベースに表がレプリケートされているときに、各データベースの表に同じオンライン再定義を実行する必要がある場合、1つのデータベースでDBMS_REDEFINITIONパッケージのサブプログラムへのコールを実行すると、Oracle GoldenGateでこれらのコールを他のデータベースにレプリケートできます。
プロシージャ・レプリケーションをサポートするには、この最適化のために有効になっているプロシージャを識別できるようにOracle AI Databaseが構成されている必要があります。
プロシージャ・レプリケーションを使用するには、次の前提条件を満たす必要があります。
-
Oracle GoldenGateとExtractおよびReplicat。
-
システムが提供するパッケージがDMLおよびDDLとの組合せのみで動作する。
プロシージャ・レプリケーション・プロセスの概要
プロシージャ・レプリケーションは、証跡レコードを使用して十分な情報をレコードとともに確実にカプセル化します。
Oracle GoldenGateのプロシージャ・レプリケーションを使用するには、この機能を有効にする必要があります。この最適化のために有効になっているプロシージャを識別するメカニズムが、Oracle AI Databaseに組み込まれている必要があります。
PL/SQLプラグマを使用して、レプリケートできるプロシージャを指定します。プラグマを指定すると、入力時にLogminerへのコールバックが実行されてルーチンが終了します。コールバックはプロシージャ・コールの名前と引数を指定し、プロシージャが正常に終了したかエラーで終了したかを示します。Logminerはコールバックからの情報を使用してREDOストリームを拡張します。サポートされるプロシージャの場合、プロシージャによって生成された通常のREDOは抑制され、プロシージャ・コールのみがレプリケートされます。
プロシージャ・レプリケーションを識別するために、新しい証跡レコードが生成されます。この証跡レコードでは、PL/SQLプロシージャに渡す引数に既存の証跡の列データ形式を利用します。LOBの場合、LOBに対する既存の証跡形式と同じようなチャンクとしてデータが渡されます。この証跡レコードには、ターゲットでプロシージャをそのまま再実行するために十分な情報が含まれています。
プロシージャ・レプリケーションを有効にすると、プロシージャによって影響を受ける個々のレコードの証跡ファイルへの書込みができなくなります。
PL/SQLプロシージャの適用時にエラーが発生した場合、ReplicatはPL/SQLプロシージャ全体をリプレイできます。
プロシージャ・レプリケーションはオンかどうかの判別
DBMS_GOLDENGATE_ADMパッケージのGG_PROCEDURE_REPLICATION_ON関数を使用して、Oracle GoldenGateのプロシージャ・レプリケーションはオンかオフか判別します。
Oracle AI Database Vault環境でプロシージャ・レプリケーションとともにOracle GoldenGateを使用する場合は、適切な権限を設定する必要があります。『Oracle AI Database Vault管理者ガイド』を参照してください。
プロシージャ・レプリケーションを有効にする手順:
-
Oracle GoldenGate管理者としてではなく、
sys(sqlplus、sqlcl、sqldeveloper)としてデータベースに接続します。 -
GG_PROCEDURE_REPLICATION_ONファンクションを実行します。
例9-1 GG_PROCEDURE_REPLICATION_ONファンクションの実行
SET SERVEROUTPUT ON
DECLARE
on_or_off NUMBER;
BEGIN
on_or_off := DBMS_GOLDENGATE_ADM.GG_PROCEDURE_REPLICATION_ON;
IF on_or_off=1 THEN
DBMS_OUTPUT.PUT_LINE('Oracle GoldenGate procedural replication is ON.');
ELSE
DBMS_OUTPUT.PUT_LINE('Oracle GoldenGate procedural replication is OFF.');
END IF;
END;
/
サプリメンタル・ロギングの有効化と無効化
Oracle GoldenGateのコマンドを使用すると、手続き型サプリメンタル・ロギングを有効または無効にできます。
サプリメンタル・ロギングの有効化の手順:
-
DBLOGINで、Oracle GoldenGate管理者としてソース・データベースに接続します。CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
プロシージャ・レプリケーション用のサプリメンタル・ロギングを追加してください。
ADD PROCEDURETRANDATA出力は次のようになります:
INFO OGG-13005 PROCEDURETRANDATA supplemental logging has been enabled.
プロシージャ・レプリケーションのサプリメンタル・ロギングが有効になります。
サプリメンタル・ロギングの無効化の手順:
-
dbloginで、Oracle GoldenGate管理者としてソース・データベースに接続します。
CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
プロシージャ・レプリケーション用のサプリメンタル・ロギングを削除してください。
DELETE PROCEDURETRANDATA
プロシージャ・レプリケーションのサプリメンタル・ロギングが無効になります。
サプリメンタル・ロギングに関する情報を表示する手順:
-
dbloginで、Oracle GoldenGate管理者としてソース・データベースに接続します。
CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpwDBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate -
プロシージャ・レプリケーション用のサプリメンタル・ロギング情報を表示します。
INFO PROCEDURETRANDATA
プロシージャ・レプリケーションのサプリメンタル・ロギング情報が表示されます。
プロシージャ・レプリケーションの機能のフィルタリング
プロシージャとパッケージのうち、プロシージャ・レプリケーションのために含めるものまたは除外するものを指定できます。
機能グループを使用して、サポートされるパッケージとプロシージャをグループ化します。INCLUDEまたはEXCLUDEキーワードを指定してプロシージャ・パラメータを使用し、プロシージャ・レプリケーションのための機能をフィルタできます。
プロシージャ・パラメータでは、INCLUDEまたはEXCLUDEによってフィルタリング句の開始が指定されます。レプリケートするプロシージャ(INCLUDE)またはフィルタにより除外するもの(EXCLUDE)を指定します。フィルタリング句は、INCLUDE ALL_SUPPORTEDまたはEXCLUDE ALL_SUPPORTEDキーワードと、その後のプロシージャ・パラメータの他のフィルタリング・オプションの有効な組合せで構成する必要があります。EXCLUDEフィルタは、同じ基準を含むINCLUDEフィルタより優先されます。
<div class="infoboxnote" markdown="1">
**Note:**
When replicating Oracle Streams Advanced Queuing (AQ) procedures, you must use the `RULE` option in your parameter file as follows:
`PROCEDURE INCLUDE FEATURE ALL_SUPPORTED`
or
`PROCEDURE INCLUDE FEATURE AQ, RULE`
Do *not* use `PROCEDURE INCLUDE FEATURE AQ` without the `RULE` option.
</div>
Extractで、システムが提供するすべてのパッケージを含めます。
-
ソース・データベースでExtractに接続します。
EXTRACT edbaUSERIDALIAS admin_dbA DOMAIN ORADEV -
新しい証跡ファイルを作成します。
EXTTRAIL ea -
有効になっていない場合は、プロシージャ・レプリケーションを有効にします。
TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y) -
プロシージャ・レプリケーションのフィルタを含めます。
PROCEDURE INCLUDE FEATURE ALL_SUPPORTED
これで、プロシージャ・レプリケーションのために、システムが提供するすべてのパッケージが含まれました。
Replicatで特定のパッケージを除外する手順:
-
ターゲット・データベースのReplicatに接続します。
REPLICAT rdbaUSERIDALIAS admin_dbBDOMAIN ORADEV -
プロシージャ・レプリケーションのフィルタを含めます。
PROCEDURE EXCLUDE FEATURE RLS
これで、プロシージャ・レプリケーションのために特定のパッケージが正常に除外されました。
プロシージャ・レプリケーション・エラーの処理
プロシージャ・レプリケーションでは、REPERRORパラメータを使用して、プロシージャ・エラーが発生したときのReplicatの動作を構成します。
デフォルトでは、プロシージャ・レプリケーションが発生するとReplicatが異常終了するため、次のステップでエラー処理を設定してください。
-
ターゲット・データベースのReplicatに接続します。
REPLICAT rdbaUSERIDALIAS admin_dbBDOMAIN ORADEV -
プロシージャ・レプリケーションのフィルタを含めます。
PROCEDURE EXCLUDE FEATURE RLS -
エラー処理パラメータを指定します。その他のオプションについては、Oracle GoldenGateパラメータおよび機能リファレンスの
REPERRORを参照してください。REPERROR (PROCEDURE, DISCARD)
これで、プロシージャ・レプリケーションのエラーが正常に処理されました。
Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるプロシージャのリスト
DBA_GG_SUPPORTED_PROCEDURESビューに、Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるパッケージについての情報が表示されます。
プロシージャがサポートされており、Oracle GoldenGateプロシージャ・レプリケーションがオンになっている場合は、プロシージャが特に除外されていないかぎり、プロシージャに対するコールがレプリケートされます。
-
Oracle GoldenGate管理者ではなく、
sys(sqlplus、sqlcl、sqldeveloper)としてデータベースに接続します。 -
DBA_GG_SUPPORTED_PROCEDURESビューを問い合せます。
例9-2 Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるパッケージに関する情報の表示
この問合せでは、パッケージに関する次の情報が表示されます。
-
各パッケージの所有者
-
各パッケージの名前
-
各プロシージャの名前
-
プロシージャがサポートされる最小データベース・リリース
-
一部のデータベース・オブジェクトについてプロシージャのレプリケートを禁止する除外ルールがあるかどうか
COLUMN OWNER FORMAT A10
COLUMN PACKAGE_NAME FORMAT A15
COLUMN PROCEDURE_NAME FORMAT A15
COLUMN MIN_DB_VERSION FORMAT A14
COLUMN EXCLUSION_RULE_EXISTS FORMAT A14
SELECT OWNER,
PACKAGE_NAME,
PROCEDURE_NAME,
MIN_DB_VERSION,
EXCLUSION_RULE_EXISTS
FROM DBA_GG_SUPPORTED_PROCEDURES;
出力は次のようになります。
OWNER PACKAGE_NAME PROCEDURE_NAME MIN_DB_VERSION EXCLUSION_RULE
---------- --------------- --------------- -------------- --------------
XDB DBMS_XDB_CONFIG ADDTRUSTMAPPING 12.2 NO
CTXSYS CTX_DDL ALTER_INDEX 12.2 NO
SYS DBMS_FGA DROP_POLICY 12.2 NO
SYS XS_ACL DELETE_ACL 12.2 NO
.
.
.
Oracle GoldenGateのプロシージャ・レプリケーションのモニタリング
一連のデータ・ディクショナリ・ビューでOracle GoldenGateのプロシージャ・レプリケーションをモニターすることができます。
次のビューを使用して、Oracle GoldenGateのプロシージャ・レプリケーションをモニターできます。
| 表示 | 摘要 |
|---|---|
DBA_GG_SUPPORTED_PACKAGES |
Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるパッケージに関する詳細が表示されます。 パッケージがサポートされており、Oracle GoldenGateのプロシージャ・レプリケーションがオンである場合、パッケージ内のサブプログラムへのコールはレプリケートされます。 |
DBA_GG_SUPPORTED_PROCEDURES |
Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるプロシージャに関する詳細が表示されます。 |
DBA_GG_PROC_OBJECT_EXCLUSION |
Oracle GoldenGateのプロシージャ・レプリケーションについての除外リストに含まれるすべてのデータベース・オブジェクトに関する詳細が表示されます。 データベース・オブジェクトは、 |
-
Oracle GoldenGate管理者ではなく、
sys(sqlplus、sqlclまたはsqldeveloper)としてデータベースに接続します。 -
Oracle GoldenGateプロシージャ・レプリケーションに関連するビューを問い合せします。