プロシージャ・レプリケーションの使用
プロシージャ・レプリケーションとその構成方法について学習します。
トピック:
- プロシージャ・レプリケーションについて
- プロシージャ・レプリケーション・プロセスの概要
プロシージャ・レプリケーションは、証跡レコードを使用して十分な情報をレコードとともに確実にカプセル化します。 - プロシージャ・レプリケーションがオンかどうかの判別
DBMS_GOLDENGATE_ADM
パッケージのGG_PROCEDURE_REPLICATION_ON
関数を使用して、Oracle GoldenGateのプロシージャ・レプリケーションがオンかオフか判別します。 - サプリメンタル・ロギングの有効化と無効化
- プロシージャ・レプリケーションの機能のフィルタリング
プロシージャとパッケージのうち、プロシージャ・レプリケーションのために含めるものまたは除外するものを指定できます。 - プロシージャ・レプリケーション・エラーの処理
プロシージャ・レプリケーションでは、REPERROR
パラメータを使用してプロシージャ・エラーが発生したときのReplicatの動作を構成します。 - Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるプロシージャのリスト
DBA_GG_SUPPORTED_PROCEDURES
ビューに、Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるパッケージについての情報が表示されます。 - Oracle GoldenGateのプロシージャ・レプリケーションのモニタリング
一連のデータ・ディクショナリ・ビューでOracle GoldenGateのプロシージャ・レプリケーションをモニターできます。
親トピック: 管理
プロシージャ・レプリケーションについて
プロシージャ・レプリケーションは、Oracleデータベースでのみ使用できます。Oracle GoldenGateは、プロシージャ・レプリケーションを使用して、Oracle Databaseが提供するPL/SQLプロシージャをレプリケートし、これらの操作によって通常生成される大量レコードの送信および適用を回避します。プロシージャ・レプリケーションにより、ユーザーとセッションの動作、およびディクショナリのオブジェクトの入替えを制御するディクショナリの変更が実装されます。
プロシージャ・レプリケーションはCREATE
、ALTER
およびDROP
文(DDL)のレプリケーションとは関係がなく、正確には次のようなプロシージャ・コールのレプリケーションです。
CALL procedure_name(arg1, arg2, ...);
次とは異なります:
exec procedure_name(arg1, arg2, ...)
プロシージャ・レプリケーションを有効にすると、1つのデータベースにおけるOracle Database提供パッケージのプロシージャ・コールが、1つ以上の他のデータベースにレプリケートされ、これらのデータベースで実行されます。たとえば、DBMS_REDEFINITION
パッケージのサブプログラムへのコールで、表のオンライン再定義を実行できます。いくつかのデータベースで表がレプリケートされているときに、各データベースの表に同じオンライン再定義を実行する必要がある場合、1つのデータベースでDBMS_REDEFINITION
パッケージのサブプログラムへのコールを実行すると、Oracle GoldenGateでこれらのコールを他のデータベースにレプリケートできます。
プロシージャ・レプリケーションをサポートするには、この最適化のために有効になっているプロシージャを識別できるようにOracle Databaseが構成されている必要があります。
プロシージャ・レプリケーションを使用するには、次の前提条件を満たす必要があります。
-
Oracle GoldenGateとともにExtractおよびReplicatが使用されている。
-
システムが提供するパッケージがDMLおよびDDLとの組合せのみで動作する。
親トピック: プロシージャ・レプリケーションの使用
プロシージャ・レプリケーション・プロセスの概要
プロシージャ・レプリケーションは、証跡レコードを使用して十分な情報をレコードとともに確実にカプセル化します。
Oracle GoldenGateのプロシージャ・レプリケーションを使用するには、この機能を有効にする必要があります。この最適化のために有効になっているプロシージャを識別するメカニズムが、Oracle 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 GoldenGate管理者ではなく、
sys
(sqlplus
、sqlcl
、sqldeveloper
)としてデータベースに接続します。 GG_PROCEDURE_REPLICATION_ON
関数を実行します。
例11-18 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 adminpw
DBLOGIN 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 adminpw
DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
-
プロシージャ・レプリケーションのサプリメンタル・ロギングを削除します。
DELETE PROCEDURETRANDATA
プロシージャ・レプリケーションのサプリメンタル・ロギングが無効になります。
サプリメンタル・ロギングに関する情報を表示する手順:
-
dbloginで、Oracle GoldenGate管理者としてソース・データベースに接続します。
CONNECT https://localhost:9000 DEPLOYMENT demo AS ggadmin PASSWORD adminpw
DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
-
プロシージャ・レプリケーションのサプリメンタル・ロギング情報を表示します。
INFO PROCEDURETRANDATA
プロシージャ・レプリケーションのサプリメンタル・ロギング情報が表示されます。
親トピック: プロシージャ・レプリケーションの使用
プロシージャ・レプリケーションの機能のフィルタリング
プロシージャとパッケージのうち、プロシージャ・レプリケーションのために含めるものまたは除外するものを指定できます。
機能グループを使用して、サポートされるパッケージとプロシージャをグループ化します。INCLUDE
またはEXCLUDE
キーワードを指定してプロシージャ・パラメータを使用し、プロシージャ・レプリケーションのための機能をフィルタできます。
プロシージャ・パラメータでは、INCLUDE
またはEXCLUDE
によってフィルタリング句の開始が指定されます。レプリケートするプロシージャ(INCLUDE
)またはフィルタにより除外するもの(EXCLUDE
)を指定します。フィルタリング句にはINCLUDE ALL_SUPPORTED
またはEXCLUDE ALL_SUPPORTED
キーワードを含め、その後にプロシージャ・パラメータの他のフィルタリング・オプションの有効な組合せを追加する必要があります。EXCLUDE
フィルタは、同じ基準を含むINCLUDE
フィルタより優先されます。
ノート:
Oracle Streamsアドバンスト・キューイング(AQ)プロシージャをレプリケートする場合、パラメータ・ファイルで次のようにRULE
オプションを使用する必要があります。
PROCEDURE INCLUDE FEATURE ALL_SUPPORTED
または
PROCEDURE INCLUDE FEATURE AQ, RULE
RULE
オプションを付けずにPROCEDURE INCLUDE FEATURE AQ
を使用しないでください。
Extractで、システムが提供するすべてのパッケージを含めます。
-
ソース・データベースでExtractに接続します。
EXTRACT edba
USERIDALIAS admin_dbA DOMAIN ORADEV
-
新しい証跡ファイルを作成します。
EXTTRAIL ea
-
有効になっていない場合は、プロシージャ・レプリケーションを有効にします。
TRANLOGOPTIONS INTEGRATEDPARAMS (ENABLE_PROCEDURAL_REPLICATION Y)
-
プロシージャ・レプリケーションのフィルタを含めます。
PROCEDURE INCLUDE FEATURE ALL_SUPPORTED
これで、プロシージャ・レプリケーションのために、システムが提供するすべてのパッケージが含まれました。
Replicatで特定のパッケージを除外する手順:
-
ターゲット・データベースのReplicatに接続します。
REPLICAT rdba
USERIDALIAS admin_dbBDOMAIN ORADEV
-
プロシージャ・レプリケーションのフィルタを含めます。
PROCEDURE EXCLUDE FEATURE RLS
これで、プロシージャ・レプリケーションのために特定のパッケージが正常に除外されました。
親トピック: プロシージャ・レプリケーションの使用
プロシージャ・レプリケーション・エラーの処理
プロシージャ・レプリケーションでは、REPERROR
パラメータを使用して、プロシージャ・エラーが発生したときのReplicatの動作を構成します。
デフォルトでは、プロシージャ・レプリケーションが発生するとReplicatが異常終了するため、次のステップでエラー処理を設定してください。
-
ターゲット・データベースのReplicatに接続します。
REPLICAT rdba
USERIDALIAS admin_dbBDOMAIN ORADEV
-
プロシージャ・レプリケーションのフィルタを含めます。
PROCEDURE EXCLUDE FEATURE RLS
-
エラー処理パラメータを指定します。その他のオプションについては、『Oracle GoldenGateリファレンス』のREPERRORに関する項を参照してください。
REPERROR (PROCEDURE, DISCARD)
これで、プロシージャ・レプリケーションのエラーが正常に処理されました。
親トピック: プロシージャ・レプリケーションの使用
Oracle GoldenGateプロシージャ・レプリケーションでサポートされているプロシージャのリスト
DBA_GG_SUPPORTED_PROCEDURES
ビューに、Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるパッケージについての情報が表示されます。
- Oracle GoldenGate管理者ではなく、
sys
(sqlplus
、sqlcl
、sqldeveloper
)としてデータベースに接続します。 DBA_GG_SUPPORTED_PROCEDURES
ビューを問い合せます。
例11-19 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のプロシージャ・レプリケーションをモニターできます。
ビュー | 説明 |
---|---|
|
Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるパッケージに関する詳細が表示されます。 パッケージがサポートされ、Oracle GoldenGateのプロシージャ・レプリケーションがオンの場合は、パッケージ内のサブプログラムに対するコールがレプリケートされます。 |
|
Oracle GoldenGateのプロシージャ・レプリケーションでサポートされるプロシージャに関する詳細が表示されます。 |
|
Oracle GoldenGateのプロシージャ・レプリケーションの除外リストに含まれるすべてのデータベース・オブジェクトに関する詳細が表示されます。 データベース・オブジェクトを除外リストに追加するには、 |
- Oracle GoldenGate管理者ではなく、
sys
(sqlplus
、sqlcl
またはsqldeveloper
)としてデータベースに接続します。 - Oracle GoldenGateのプロシージャ・レプリケーションに関連するビューを問い合せます。
親トピック: プロシージャ・レプリケーションの使用