Oracle

この項では、Oracle GoldenGate for Oracleの構成の詳細を示します。

データベース・ユーザーおよび権限の準備

データベース・ユーザーの作成およびOracle GoldenGate for Oracleの権限の割当てについて学習します。

Oracle Database 21c以前のユーザー権限の付与

Oracle GoldenGateからOracleデータベースへの接続に必要なユーザー権限は、ユーザーのタイプによって異なります。

権限は、ソース・データベースおよびターゲット・データベースでGoldenGate管理者ユーザーとして実行する必要があるアクションに応じて付与する必要があります。たとえば、トランザクションを挿入、更新および削除するDML操作権限をユーザーに付与するには、GRANT ANY INSERT/UPDATE/DELETE権限を使用し、さらに、DML操作の一部として表および索引を操作することをユーザーに許可するには、GRANT CREATE/DROP/ALTER ANY TABLE/INDEX権限を使用します。

GoldenGate管理者ユーザーにDBAロールがある場合、追加のオブジェクト権限は必要ありません。ただし、GoldenGate管理ユーザーにDBAロールを付与する際にセキュリティ制約がある場合があります。DBAロールは、Oracle GoldenGateに必ずしも必要ではありません。

レプリケートされるオブジェクトが多数ある場合は、DMLおよびDDL操作にANY権限を使用することを検討してください。これにより、データベース操作に応じていくつかの権限を付与するだけで済むため、GoldenGate管理者ユーザーへの権限のプロビジョニングが簡略化されます。

次の表に、Oracleデータベースに対するGoldenGate管理者ユーザーの重要な権限の一部を示します。説明のために、表では、マルチテナント・コンテナ・データベースの共通ユーザーの例としてc##ggadminを使用し、プラガブル・データベース(PDB)ユーザーとしてggadminを使用します。PDBEASTおよびPDBWESTは、PDB名の例として使用します。

次の表に、ソースおよびターゲットのOracleデータベースでOracle GoldenGateを使用するためのGoldenGate管理者ユーザーの重要な権限を示します:
権限 Extract Replicat全モード 目的

RESOURCE

はい

はい

オブジェクトの作成に必要

Oracle Database 12cR1以降では、RESOURCEのかわりに次の権限を付与します。

ALTER USER user QUOTA {size | UNLIMITED} ON tablespace;

CONNECT

はい

はい

共通ユーザーSYSTEMは、ルート・コンテナに接続します。この権限は、DBA ロールがユーザーに割り当てられていない場合に不可欠です。

Oracleマルチテナント・データベースの共通ユーザーに付与される権限の例を参照してください。

CREATE SESSION

はい

はい

データベースへの接続に必要です。

CREATE VIEW

はい

はい

ハートビート表ビューを追加するために必要です。

各オブジェクトに固有にする場合は、各オブジェクトの権限を個別に指定することもできます。このような権限を維持するために、特定のデータベース・ロールの作成を検討できます。

ALTER SYSTEM

はい

はい

ロギングの有効化などの管理変更を実行

ALTER USER

はい

はい

マルチテナント・アーキテクチャに必要であり、GGADMINは有効なOracle GoldenGate管理者スキーマである必要があります。

EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('REPUSER', CONTAINER=>'PDBEAST');

はい はい
  • 自律型データベース(ATPおよびADW)のExtractおよびReplicatには必須です。ルート・コンテナ(CDB$ROOT))のExtractには、ALLまたは特定のPDB (例: pdbeast)の値が必要になることがあります。

  • ExtractおよびReplicatユーザーの権限を付与します。「例: DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGEパッケージを使用した権限の付与」を参照してください

  • 仮想プライベート・データベースからキャプチャする権限の付与

  • リダクション済データをキャプチャする権限を付与します

SYSユーザーとして、接続されたDV_GOLDENGATE_ADMINおよびDV_GOLDENGATE_REDO_ACCESS権限をExtractおよびReplicatユーザーに付与します。

はい

はい

Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。

レルムに適用する場合は、DBMS_MACADM.ADD_AUTH_TO_REALMの権限をReplicatに付与します。

NA はい

Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。

ターゲット表のINSERTUPDATEDELETE

NA

はい

レプリケートされたDMLをターゲット・オブジェクトに適用「Oracle DMLのオブジェクトと操作のサポートの詳細」を参照してください

GRANT INSERT ANY TO...
GRANT UPDATE ANY TO...
GRANT DELETE ANY TO...

NA

はい

すべての表をレプリケートする場合は、INSERTUPDATEDELETEをすべての表に付与するのではなく、これらの権限をReplicatユーザーに付与します。

DDLレプリケーションを実行する場合は、次の権限をDatabase Vault所有者として付与してください:

EXECUTE DBMS_MACADM.AUTHORIZE_DDL(‘GGADMIN USER', ‘SCHEMA FOR DDL’);
いいえ いいえ

Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。

ターゲット・オブジェクトのDDL権限(DDLサポートを使用している場合)

NA

はい

レプリケートされたDDLをターゲット・オブジェクトに発行Oracle DDLのオブジェクトと操作のサポートの詳細を参照してください。

GRANT [CREATE|ALTER|DROP] ANY [TABLE|INDEX|VIEW|PROCEDURE] to GGADMIN;

はい はい 表のDDLレプリケーションの権限を付与します。

CREATE ANY TABLE

はい

はい

任意のスキーマで表を作成する権限を付与します。特定のスキーマでのみ表を作成できるようにするには、CREATE TABLE権限を使用します。

CREATE ANY VIEW

はい

はい 任意のデータベース・スキーマでビューを作成する権限を付与します。特定のスキーマでビューを作成できるようにするには、CREATE VIEW権限を使用します。
SELECT ANY DICTIONARY

はい

はい

ディクショナリ表で適切に機能するためにすべての権限を許可します。

例: Oracleデータベースの共通ユーザーに付与される権限

Oracleデータベース共通ユーザー(次の例のc##ggadmin)に付与される権限:
CREATE USER c##ggadmin IDENTIFIED BY passw0rd CONTAINER=all DEFAULT
TABLESPACE GG_DATA TEMPORARY TABLESPACE temp;
GRANT RESOURCE to c##ggadmin;
GRANT CREATE SESSION to c##ggadmin;
GRANT CREATE VIEW to c##ggadmin;
GRANT CREATE TABLE to c##ggadmin;
GRANT CONNECT to c##ggadmin CONTAINER=all; 
GRANT DV_GOLDENGATE_ADMIN; –-- for data vault user
GRANT DV_GOLDENGATE_REDO_ACCESS; –-- for data vault user
GRANT ALTER SYSTEM to c##ggadmin;
GRANT ALTER USER to c##ggadmin;
ALTER USER c##ggadmin SET CONTAINER_DATA=all CONTAINER=current;
ALTER USER c##ggadmin QUOTA unlimited ON GG_DATA;
GRANT SELECT ANY DICTIONARY to c##ggadmin;
GRANT SELECT ANY TRANSACTION to c##ggadmin;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('c##ggadmin');

この例では、DBA権限は指定されていません。権限がない場合、DBAは必要な権限を追加で付与する必要があります。

PDBユーザーggadminに付与される権限は、次の例に示します:

ALTER SESSION SET CONTAINER=dbwest; 
CREATE USER ggadmin IDENTIFIED BY PASSWORD CONTAINER=CURRENT; 
GRANT CONNECT, RESOURCE, DBA TO ggadmin CONTAINER=CURRENT; 
GRANT CREATE SESSION TO ggadmin CONTAINER=CURRENT; 
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('ggadmin');

ノート:

DBAロールの付与は、すべてのユーザーに必須なわけではありません。権限は、ユーザーがデータベースで実行する必要がある操作に応じて付与する必要があります。たとえば、トランザクションを挿入、更新および削除するDML操作権限をggadminに付与するには、GRANT ANY INSERT/UPDATE/DELETE権限を使用し、さらに、DML操作の一部として表および索引を操作することをユーザーに許可するには、GRANT CREATE/DROP/ALTER ANY TABLE/INDEX権限を使用します。

例: DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGEパッケージを使用した権限の付与

このプロシージャは、ユーザーがOracle GoldenGate管理者になるために必要とする権限を付与します。次の例では、Oracleマルチテナント・データベースに対するExtractの明示的な権限を付与します:

BEGIN  
DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE 
(GRANTEE => 'c##ggadmin',  PRIVILEGE_TYPE => 'CAPTURE',  GRANT_SELECT_PRIVILEGES => TRUE,  DO_GRANTS => TRUE,  CONTAINER => 'ALL'  ); 
END;

詳細は、Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンスDBMS_GOLDENGATE_AUTHを参照してください。

Oracle Data Vaultからキャプチャするための権限

OracleデータベースでSYSユーザーとして接続されている次の権限を付与します。次の権限は、ExtractおよびReplicatのユーザー資格証明に対して設定されます。

  • EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('userID','*',
    GRANT_OPTIONAL_PRIVILEGES=>'*');
    GRANT DV_GOLDENGATE_ADMIN, DV_GOLDENGATE_REDO_ACCESS to userID;
  • レルムに適用する場合は、DBMS_MACADM.ADD_AUTH_TO_REALMの権限をReplicatに付与。

    Database Vault所有者として接続し、次のスクリプトを実行します。
    
    BEGIN
    DVSYS.DBMS_MACADM.ADD_AUTH_TO_REALM(
    REALM_NAME => 'Oracle Default Component Protection Realm',GRANTEE => 'userID',AUTH_OPTIONS => 1) ;
    END ;
    /
    EXECUTE_DBMS_MACADM.AUTHORIZE_DDL('SYS', 'SYSTEM');
  • DDLレプリケーションの場合は、Database Vault所有者として次の権限を付与します。

    EXECUTE DBMS_MACADM.AUTHORIZE_DDL
    (‘userID', ‘SCHEMA FOR DDL’);

データベース接続、システムおよびパラメータ設定の準備

Oracle GoldenGate for Oracleのデータベース接続、システムおよびパラメータ設定の構成について学習します。

Oracle GoldenGate for Oracleの有効化

Oracle GoldenGateキャプチャおよび適用をサポートするために必要なデータベース・サービスは、すべてのOracleデータベース・バージョンで明示的に有効化する必要があります。これは、ExtractおよびすべてのReplicatモードに必要です。

Oracle GoldenGateを有効化するには、次のデータベース初期化パラメータを設定します。Oracle RACのすべてのインスタンスで同じ設定にする必要があります。

ENABLE_GOLDENGATE_REPLICATION=true

このパラメータは、DBA_FEATURE_USAGE_STATISTICSビューを変更します。このパラメータの詳細は、初期化パラメータに関する項を参照してください。

フラッシュバック問合せの設定

Oracle GoldenGateがフェッチするデータの詳細は、「サポートされるOracleデータ型およびオブジェクトの詳細」を参照してください。

デフォルトでは、Oracle GoldenGateでフラッシュバック問合せを使用してUNDO (ロールバック)表領域から値をフェッチします。そのように、Oracle GoldenGateでは特定の時点またはSCNで読取り一貫性行イメージを再構築し、REDOレコードと一致させることができます。

最適なフェッチ結果を得るには、ソース・データベースを次のように構成します。

  1. 次のようにOracle初期化パラメータUNDO_MANAGEMENTおよびUNDO_RETENTION(秒単位)を設定することで、REDO保存に十分な時間を設定します。
    UNDO_MANAGEMENT=AUTO
    
    UNDO_RETENTION=86400 
    
    UNDO_RETENTION can be adjusted upward in high-volume environments.
    
  2. 次の式を使用して、UNDO表領域で必要な領域を計算します。
    undo_space = UNDO_RETENTION * UPS + overhead
    

    説明:

    • undo_spaceは、UNDOブロック数です。

    • UNDO_RETENTIONは、UNDO_RETENTIONパラメータの値です(秒単位)。

    • UPSは、1秒当たりのUNDOブロック数です。

    • overheadは、メタデータ(トランザクション表など)の最小オーバーヘッドです。

    システム・ビューV$UNDOSTATを使用して、UPSおよびoverheadを見積ります。

  3. LOBが含まれている表には、次のいずれかを実行します。
    • LOB記憶域句をRETENTIONに設定します。これは、UNDO_MANAGEMENTAUTOに設定したときに作成される表のデフォルトです。

    • RETENTIONのかわりにPCTVERSIONを使用する場合、PCTVERSIONを初期値の25に設定します。これは、STATS EXTRACTコマンドでレポートされるフェッチ統計に基づいて調整できます。これらの統計のSTAT_OPER_ROWFETCH CURRENTBYROWIDフィールドまたはSTAT_OPER_ROWFETCH_CURRENTBYKEYフィールドの値が大きい場合、統計で低い値を示すまでPCTVERSIONを10ずつ増やします。

Oracle GoldenGateによって、フェッチの管理に次のパラメータが提供されます。

パラメータまたはコマンド 説明

REPORTFETCHオプションを使用したSTATS EXTRACTコマンド

必要に応じてExtractフェッチ統計を表示します。

REPORTFETCHオプションを使用したSTATOPTIONSパラメータ

常にフェッチ統計が表示されるようにSTATS EXTRACTコマンドを設定します。

MAXFETCHSTATEMENTSパラメータ

Extractによってソース・データベースに保持される準備済の問合せおよびSQLEXEC操作のオープン・カーソル数を制御します。

MAXFETCHSTATEMENTSパラメータ

Extractのデフォルトのフェッチ動作(Extractでフラッシュバック問合せを実行するか、現在のイメージを表からフェッチするか)を制御します。

USELATESTVERSIONまたはNOUSELATESTVERSIONオプションを使用したFETCHOPTIONSパラメータ

UNDOの保存期限が切れている場合や、表の構造が変更された場合など、Extractのフラッシュバック問合せの失敗を処理します。Extractは、現在のイメージを表からフェッチするか、失敗を無視するように設定できます。

REPFETCHEDCOLOPTIONSパラメータ

フェッチされたデータが含まれる証跡レコード、または列が見つからない証跡レコードの処理時に、Replicatで応答を制御します。

他のデータベース・プロパティの処理

Oracle GoldenGateに影響を与える可能性があるデータベース・プロパティと、特定の条件の解決または回避に使用するパラメータがあります。

次の表でリストされるのは、データベース・プロパティおよび関連する問題点/解決策です。

データベース・プロパティ 問題点/解決策

時間隔パーティション化がある表

時間隔パーティション化がある表をサポートするには、WILDCARDRESOLVEパラメータがそのデフォルトのDYNAMICのままであることを確認します。

仮想列のある表

仮想列は記録されません。また、Oracleで仮想列に対するDMLは許可されません。ただし、次のようにして、このデータをキャプチャし、仮想列ではないターゲット列にマップできます。

ExtractのTABLE文に表を含め、TABLEFETCHCOLSオプションを使用してデータベースの仮想列から値をフェッチします。

ReplicatのMAP文で、ソースの仮想列を仮想ではないターゲット列にマップします。

本質的に更新可能なビューを持つ表

本質的に更新可能なビューにレプリケートするには、関連付けの対象のソース表とターゲット表をマップするMAP文にKEYCOLS句を使用して、更新可能なビューの一意の列にキーを定義します。

異なる場所にあるREDOログまたはアーカイブ

TRANLOGOPTIONSパラメータには、データベースのデフォルトとは異なる場所またはExtractが実行されているのとは異なるプラットフォームにREDOログまたはアーカイブが格納される環境を処理するためのオプションが含まれます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

TRUNCATE操作

TRUNCATE操作をレプリケートするには、次の2つのオプションのいずれかを選択します。

  • GETTRUNCATESパラメータを使用したスタンドアロンのTRUNCATEサポートでは、TRUNCATE TABLEはレプリケートされますが、他のTRUNCATEオプションはレプリケートされません。Oracle GoldenGate DDLサポートを使用している場合にのみ使用します。

  • 完全DDLサポートでは、TRUNCATE TABLEALTER TABLE TRUNCATE PARTITIONおよび他のDDLがレプリケートされます。

順序

順序のDDL(CREATEALTERDROPRENAME)をレプリケートするには、Oracle GoldenGate DDLサポートを使用します。

順序値のみをレプリケートするには、Extractパラメータ・ファイルでSEQUENCEパラメータを使用します。これには、Oracle GoldenGate DDLサポート環境は不要です。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

マルチテナント・コンテナ・データベースの構成

Oracle GoldenGateとOracle Databaseを使用すると、各プラガブル・データベース(PDB)で、特定のPDBにExtractを登録でき、これらはPDBごとのExtractと呼ばれます。

次の図は、マルチテナント・コンテナ・データベース構成における様々なアプローチの構成を示しています:

pdb_extract_feedbk.pngの説明が続きます
図pdb_extract_feedbk.pngの説明

Oracleマルチテナント・データベースのExtractを構成するには、2つのアプローチがあります。
  • アプローチ1: PDBから直接Extractを追加します。このアプローチは、Extractが分離されたPDBからキャプチャし、PDBレベルで所有権および責任を管理する場合に役立ちます。

  • アプローチ2: ルート・コンテナにExtractを追加し、関連付けられたPDBを参照します。このアプローチは、Extractが複数のPDBからデータをキャプチャする場合に便利です。

アプローチ1を使用する場合は、ローカルPDBユーザー(ggadminなど)として接続してPDBごとのExtractを作成し、このExtractをPDBに登録できます。PDBユーザーとしてすでにログインしているため、container句は必要ありません。同様に、SOURCECATALOGおよび2つの部分からなる命名規則も適切です。

アプローチ2を使用する場合は、共通データベース・ユーザーc##ggadminを使用してルート・コンテナに接続し、特定のPDBに対してExtractを作成できます。このExtractは、container句を使用して特定のPDBに登録する必要があります。container句には、1つまたは複数のPDBを含めることができます。

ノート:

ルートレベルのExtractを使用する場合でも、キャプチャする必要があるPDBごとにユーザー資格証明が必要です。ハートビート表も個々のPDBに存在します。

Extractを設定するには、「プライマリExtractの追加」を参照してください。

マルチテナント・コンテナ・データベース構成に関する考慮事項

Oracle GoldenGateを使用してデータ・レプリケーション用にマルチテナント・コンテナ・データベースを構成する場合は、次のガイドラインを考慮してください:

  • マルチテナント・コンテナ・データベース内の異なるプラガブル・データベースが異なる文字セットを持つことができます。Oracle GoldenGateは、異なる文字セットを持つマルチテナント・データベースから、1つの証跡ファイルにデータをキャプチャして、データをレプリケートしますが、異なる文字セットの使用によってデータは破損しません。

  • PDBごとのExtractを作成して登録するには、PDBレベルのアクセス用に作成されたggadminなどのPDBユーザーに接続する必要があります。USERIDALIASパラメータを使用して、ggadmin@pdbeastなどのSQL*Net接続文字列を構成します。PDBごとのExtractを設定するためにコンテナ句またはSOURCECATALOGは必要ありません

  • ルート・コンテナのユーザーを追加するには、ログマイニング・サーバーと対話するために、Extractが共通ユーザーとしてルート・コンテナ(cdb$root)に接続する必要があります。ルート・コンテナを指定するには、USERIDALIASパラメータで指定するデータベース・ユーザーに適切なSQL*Net接続文字列を使用します(c##ggadmin@dbeastなど)。

  • ソースCDB 12.2をサポートするためには、Extractで証跡形式としてリリース12.3を指定する必要があります。REDOログ内の変更により、Oracle 12.2以上のマルチテナント・データベースからキャプチャするには、証跡フォーマット・リリースが12.3以上である必要があります。

  • DDLレプリケーションはマルチテナント・データベースの通常のレプリケーションとして機能します。

Oracle GoldenGate資格証明にマルチテナント・コンテナ・データベース・ユーザーを追加するには、「データベース資格証明の追加」を参照してください。構成する必要があるOracleデータベース・インストールに応じて、「Oracle Database 21c以前のユーザー権限の付与」を参照してください。

マルチテナント・コンテナ・データベースのフラッシュ順序

sequence.sqlスクリプトがデータベースのGoldenGate管理スキーマにデータベース・プロシージャを適用する場合、Oracle GoldenGate内でのみFLUSH SEQUENCEコマンドを使用できます。

FLUSH SEQUENCEコマンドは、初期同期化中または再同期化中に最初にExtractを起動した直後に使用します。このコマンドは、Extractがトランザクション・データの取得を開始した時点で初期REDOレコードが使用できるように、Oracle順序を更新します。通常は、現在のキャッシュが使い果されるまで、REDOは生成されません。フラッシュは、ターゲット・システムで正しい順序値に同期するために使用する初期の開始位置を、Replicatに提供します。それ以降は、Extractは、順序値の通常のキャッシュ予約に関連付けられたREDOを使用できます。
  1. FLUSH SEQUENCEは、次のOracleプロシージャを使用します。

    データベース プロシージャ ユーザーおよび権限

    ソース

    updateSequence

    Oracle GoldenGate DDLオブジェクトの所有者、またはDDLサポートを使用しない場合は他の選択したユーザーに、EXECUTEを付与します。

    ターゲット

    replicateSequence

    Oracle GoldenGate ReplicatユーザーにEXECUTEを付与します。

    sequence.sqlスクリプトによって、これらのプロシージャはインストールされます。通常、このスクリプトはOracle GoldenGateのインストール・プロセスの一部として実行されますが、FLUSH SEQUENCEを使用する前に、これが実行されたことを確認してください。sequence.sqlが実行されていないと、フラッシュは失敗し、次に示すようなエラー・メッセージが生成されます。

    Cannot flush sequence {0}. Refer to the Oracle GoldenGate for Oracle 
    documentation for instructions on how to set up and run the sequence.sql 
    script. Error {1}.
  2. GLOBALSファイルには、プロシージャをインストールするスキーマを指定するGGSCHEMAパラメータが含まれている必要があります。このユーザーは、CONNECTRESOURCEおよびDBA権限を持っている必要があります。

  3. FLUSH SEQUENCEを使用する前に、updateSequenceプロシージャでEXECUTE権限を持つデータベース・ユーザーとして、DBLOGINコマンドを発行します。マルチテナント・コンテナ・データベースにログインしている場合、フラッシュされるシーケンスを含むプラガブル・データベースにログインします。

順序レプリケーションが必要な各PDBでOracle GoldenGateユーザーを作成するには、PDBレベルでFLUSH SEQUENCEを発行する必要があります。DBLOGINを使用してそのPDBにログインし、FLUSH SEQUENCEコマンドを実行します。

各PDBで同じスキーマを使用して、スキーマがGGSCHEMA GLOBALSパラメータ・ファイルで動作するようにすることをお薦めします。

次の例では、環境設定はOracle 21cからOracle 21cへのレプリケーション用で、統合Extract、およびOracle GoldenGate 21c (21.3.0)を使用するパラレルReplicatを使用します。

次の表に、ソースとターゲットのCDBとPDBの名前、およびデータベースに接続するための対応するユーザー資格証明を示します。
ソースCDB ターゲットCDB

NORTH

SOUTH

PDB名: DBEAST

PDB名: DBWEST

共通ユーザー: c##ggadmin

順序のPDBユーザー: ggate

PDBユーザー: ggadmin

sqlplus / as sysdba 
ALTER SESSION SESSION SET CONTAINER=CERTMISSN;
CREATE USER ggate IDENTIFIED BY password DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP QUOTA UNLIMITED ON USERS CONTAINER=CURRENT;
@sequence.sqlの実行
sqlplus / as sysdba
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql
プロンプトが表示されたら、次を入力します:
GGADMIN GLOBALS
GGSCHEMA GGADMIN
FLUSH SEQUENCEコマンドを実行します:
DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*
 
ターゲットのOracle GoldenGate構成:
sqlplus / as sysdba
ALTER SESSION SET CONTAINER =PDBWEST;
@sequence.sql

プロンプトが表示されたら、PDBユーザー名ggadminを入力します。

これは、キャプチャ元の各PDBでも実行する必要がある@sequence.sqlスクリプトにも適用されます。

Extractの自動キャプチャ・モードの構成

自動取得モードでは、Oracle GoldenGate自動取得が有効になっている表を自動的に取得できます。

Oracle DatabaseユーティリティガイドのOracle GoldenGateのサプリメンタル・ロギングの取得方法を参照してください。

自動取得モードを使用すると、次のような利点があります。
  • キャプチャされる表セットの構成が容易

  • TABLE/TABLEEXCLUDEパラメータを更新する必要はありません

  • 取得した表セットの変更時にExtractを停止または再起動する必要はありません

Extractでの自動取得モードの有効化

TRANLOGOPTIONSを使用して自動取得モードを有効にします:
TRANLOGOPTIONS ENABLE_AUTO_CAPTURE | DISABLE_AUTO_CAPTURE

Extractが自動取得モードで実行されている場合、オブジェクトがTABLE EXCLUDEパラメータによって設定された除外リストまたはTABLEパラメータによって設定された包含リストの一部でない場合は、LCRをフィルタ処理しないでください。

LIST TABLESコマンドは、AUTO_CAPTUREに対して有効な表のリストを表示します。

ノート:

自動取得は、Oracle Database 19.18データ・パッチ以上が適用されたOracle GoldenGate 21cから使用できます。データベース・アップグレードの場合、Oracle Database 19.18より前に登録されたExtractは自動取得に変換できません。自動取得Extractに変換できるのは、Oracle Database 19.18以降にアップグレードした後に作成された新しいExtractのみです。

DMLおよびDDLに関する考慮事項の詳細は、「DML自動取得」および「Oracle DDLのオブジェクトと操作のサポートの詳細」を参照してください。

詳細は、この記事Oracle GoldenGate 21c: 表の自動取得も参照してください。

サーバー・リソースの管理

Extractはソース・データベース内の基になるログマイニング・サーバーと対話し、Replicatはターゲット・データベース内のインバウンド・サーバーと対話します。この項では、これらのサーバーで消費される共有メモリーを管理するためのガイドラインについて説明します。

サーバーで使用される共有メモリーは、データベースのシステム・グローバル領域(SGA)のStreamsプール部分です。したがって、統合モードで実行されるExtractおよびReplicatプロセスで使用できるメモリーを十分に保持するには、データベース初期化パラメータのSTREAMS_POOL_SIZEを十分に高い値に設定する必要があります。Streamsプールは、データベースの他のコンポーネント(Oracle Streams、アドバンスト・キューイング、データポンプ・エクスポート/インポートなど)でも使用されるため、Oracle GoldenGateのStreamsプールのサイズを設定する際、このことを必ず考慮に入れてください。

デフォルトでは、1つのExtractは、ログマイニング・サーバーに1GBのMAX_SGA_SIZEで実行するように要求します。そのため、同じデータベース・インスタンスで3つのExtractを実行する場合は、Streamsプールに3GB以上のメモリーを割り当てる必要があります。ベスト・プラクティスとしては、Streamsプールの25パーセントが使用可能であるようにします。たとえば、3つのExtractがある場合は、データベースのSTREAMS_POOL_SIZEを次の値に設定します。

3 GB * 1.25 = 3.75 GB

ソース表とターゲット表での行の一意性の確保

TABLE文またはMAP文で、KEYCOLS句を使用しない場合には、ロギングされる制約数およびタイプに応じて、Oracle GoldenGateにより、使用される行識別子が次の優先順位で選択されます(ロギング・プロパティの構成を参照)。

  1. 拡張(32K) VARCHAR2/NVARCHAR2列が含まれない場合は、主キー。非表示列を含まない主キー。

  2. 一意キー: 非表示列を含まない一意キー。

    非統合Replicatの場合、一意キーの選択は次のとおりです。

    • 仮想列、UDT、ファンクション・ベース列、NULL値可能列、および拡張(32K) VARCHAR2/NVARCHAR2列がない英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGate GLOBALSファイルでALLOWINVISIBLEINDEXKEYSパラメータを使用する必要があります。

    • 仮想列、UDT、拡張(32K) VARCHAR2/NVARCHAR2列、ファンクション・ベース列はないが、Null値可能列がある英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGate GLOBALSファイルでALLOWINVISIBLEINDEXKEYSパラメータを使用する必要があります。

  3. NULL値不可の一意キー: 一意キーの1つ以上の列をNULL値不可にする必要があります。これは、NOALLOWNULLABLEKEYSがデフォルトであるためです。

    ノート:

    ALLOWNULLABLEKEYSは、統合Replicatには無効です。
  4. 前のどのキー型も存在しない場合(表に定義されているその他のキー型が存在する可能性があっても)、Oracle GoldenGateによって、一意なキーでデータベースを使用できるすべての列の擬似キー(仮想列、UDT、ファンクション・ベース列、拡張(32K) VARCHAR2/NVARCHAR2列、およびOracle GoldenGateユーザーによって、Oracle GoldenGate構成から明示的に除外されている列を除く)が作成されます。

    前述の制限事項によって除外されないかぎり、非表示列は擬似キーで使用できます。

ノート:

表に使用可能な他のキーがない場合や、表にキーがまったくない場合、Oracle GoldenGateは該当するメッセージをレポート・ファイルに記録します。すべての列からキーを作成すると、ソース・システムのOracle GoldenGateのパフォーマンスが低下します。ターゲットでは、このキーはReplicatであまり効率的でないより大きいWHERE句が使用される原因となります。

表に適切なキーがない場合、あるいは既存のキーを使用しない場合は、表に一意の値が常に含まれる列があれば、代替キーを定義できます。ExtractのTABLEパラメータおよびReplicatのMAPパラメータ内にKEYCOLS句を含めることで、この代替キーを定義します。指定したキーにより、Oracle GoldenGateで検出される既存の主キーまたは一意キーはオーバーライドされます。詳細は、『Oracle GoldenGateリファレンス』を参照してください。

Oracle順序のサポート

Oracle順序をサポートするには、いくつかのデータベース・プロシージャをインストールする必要があります。

SQLプロンプトから、ソース・データベースおよびターゲット・データベースでDBAとしてスクリプト$OGG_HOME/lib/SQL/legacy/sequence.SQLを実行します。

コンテナ・データベース(CDB)で、プラガブル・データベース(PDB)のDBA権限を持つローカル・ユーザーとして接続します。

CDBではない場合は、データベースのDBAとして接続します。

Oracle GoldenGate管理ユーザーには、必ずしもDBA権限は必要ありません。ただし、Oracle GoldenGate管理ユーザーには、Oracle Database 23c以上のOGG_CAPTURE | OGG_APPLYロールによって付与されたか、以前のデータベース・バージョンのプロシージャ・コールDBMS_GOLDEN_GATE_AUTH.GRANT_ADMIN_PRIVILEGEを介して付与された権限に加えて、SELECT ANY DICTIONARYおよび[CREATE |ALTER|DROP] ANY SEQUENCE権限が必要です。

次の例は、システム・ユーザーとしてCDBにログインし、sequence.sqlスクリプトを実行する方法を示しています。

sqlplus system/***@cdb23_pdbeast
@sequence.sql
ggadminなどのOracle GoldenGate管理ユーザーを指定するよう求められます。
スクリプトが正常に終了すると、順序レプリケーションのステータスが返されます:
STATUS OF SEQUENCE SUPPORT
--------------------------------------------------------------
SUCCESSFUL installation of Oracle Sequence Replication support

Oracle GoldenGateからOracle Databaseへのセキュアな接続の構成

データベースへのOracle GoldenGate接続の構成中に安全な方法でデータベース接続文字列を指定するには、次のオプションを使用できます:
  • ExtractおよびReplicatパラメータ・ファイルにUSERIDALIASオプションを含めます

  • Bequeath接続を設定します

ExtractおよびReplicatパラメータ・ファイルに接続文字列を指定するためのセキュリティ・オプション

ExtractまたはReplicatパラメータ・ファイルに接続文字列を指定するセキュリティ・オプションは、次のとおりです。

資格証明ストアの方法:

USERIDALIAS ggeast

USERIDALIASの場合、別名ggeastは、実際の接続文字列を含むOracle GoldenGate資格証明ストアに格納されます。次の例では、INFO CREDENTIALSTOREコマンドを使用して、Oracle GoldenGateで構成された資格証明の詳細を表示します。

INFO CREDENTIALSTORE DOMAIN OracleGoldenGate

出力:

Domain: OracleGoldenGate
  Alias: ggeast
  Userid: ggadmin@dc1.example.com:1521/DBEAST.example.com

Bequeath接続の設定

Bequeath接続記述子がtnsnames.oraに追加されている場合、Oracle GoldenGateは、ネットワーク・リスナーを使用することなくデータベース・インスタンスに接続できます。

次の例は、Bequeath接続記述子を使用してデータベースに接続する場合の構成を示しています。

dbbeq =  (DESCRIPTION=   
      (ADDRESS=(PROTOCOL=beq)     
          (ENVS='ORACLE_SID=sales,ORACLE_HOME=/app/db_home/oracle,LD_LIBRARY_PATH=/app/db_home/oracle/lib')     
          (PROGRAM=/app/db_home/oracle/bin/oracle)     
      (ARGV0=oraclesales)     
      (ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))   
        (CONNECT_DATA=(SID=sales))) 

この例では、次のようになります:

/app/db_homeは、ターゲットOracleデータベースのインストール・ディレクトリです。

salesは、データベース・サービス名です

ENVSパラメータのORACLE_SIDORACLE_HOMEおよびLD_LIBRARY_PATHは、ターゲットを参照します。

ノート:

これらの環境変数の設定の間に空白がないことを確認してください。

ロギング・プロパティの構成

Oracle GoldenGateは、REDOログを使用して、ソース・トランザクションのレプリケートに必要なデータをキャプチャします。Oracle GoldenGateの処理を始める前に、Oracle REDOログをソース・システムに適切に構成する必要があります。

この項では、Oracle GoldenGateに適用される次のロギング・レベルについて説明します。使用するロギング・レベルは、使用しているOracle GoldenGate機能によって異なります。

ノート:

この必要なロギングによってREDOの量が増えます。Oracle GoldenGate処理を開始してログが有効化されるまで待つ場合があります。

この表に、様々なロギング・プロパティのOracle GoldenGateユースケースを示します。

ロギング・オプション コマンド名 処理の内容 ユースケース

強制ロギング・モード

ALTER DATABASE FORCE LOGGING;

すべてのトランザクションおよびロードのロギングを強制します。

すべてのOracle GoldenGateユースケースで強くお薦めします。FORCE LOGGINGは、すべての表レベルのNOLOGGING設定をオーバーライドします。

最小のデータベース・レベルのサプリメンタル・ロギング

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA

最小サプリメンタル・ロギングで行連鎖情報をREDOログに追加できるようにします。

すべてのOracle GoldenGateユースケースに必要です。

スキーマ・レベルのサプリメンタル・ロギング、デフォルト設定

「サブセット・データベース・レプリケーションのロギングの有効化」を参照してください。

ADD SCHEMATRANDATA

主キーの無条件のサプリメンタル・ロギングを有効化し、スキーマのすべての表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。これらのキーは、すべてスケジューリング列と呼ばれます。

スキーマの現在および将来のすべての表でロギングを有効化します。主キー、一意キーおよび外部キーの列がソースとターゲットの両方で同じでない場合は、ALLCOLSを使用します。

サポートされるすべての列で無条件のロギングを使用したスキーマ・レベルのサプリメンタル・ロギング。(サポートされない列タイプの場合は、「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照してください。)

ALLCOLSオプションを指定したADD SCHEMATRANDATA

スキーマのすべての表で、表のすべての列の無条件のサプリメンタル・ロギングを有効化します。

双方向およびアクティブ/アクティブ構成で使用され、そこでは更新または削除の実行時に、変更された列だけでなくすべての列値がチェックされます。より多くのリソースが消費されますが、最高レベルのリアルタイム・データ検証と競合検出が可能になります。

この方法は、初期ロードにHANDLECOLLISIONSパラメータを使用する場合にも使用する必要があります。

スキーマ・レベルのサプリメンタル・ロギング、最小設定

NOSCHEDULINGCOLSオプションを指定したADD SCHEMATRANDATA

スキーマのすべての表の主キーおよび有効なすべての一意索引の無条件のサプリメンタル・ロギングを有効化します。

非統合Replicatでのみ使用します。これは、最低限必要なスキーマ・レベルのロギングです。

統合Replicatの組込みサポートを使用した表レベルのサプリメンタル・ロギング

「表レベルのサプリメンタル・ロギングの有効化」を参照してください

ADD TRANDATA

主キーの無条件のサプリメンタル・ロギングを有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。これらのキーは、すべてスケジューリング列と呼ばれます。

スキーマ・レベルのサプリメンタル・ロギングが使用されていないかぎり、すべてのOracle GoldenGateユースケースで必要です。主キー、一意キーおよび外部キーの列がソースとターゲットの両方で同じでない場合は、ALLCOLSを使用します。

サポートされるすべての列で無条件のロギングを使用した表レベルのサプリメンタル・ロギング。(サポートされない列タイプの場合は、「表レベルのサプリメンタル・ロギングの有効化」を参照してください。)

ALLCOLSオプションを指定したADD TRANDATA

表のすべての列の無条件のサプリメンタル・ロギングを有効化します。

双方向およびアクティブ/アクティブ構成で使用され、そこでは更新または削除の実行時に、変更された列だけでなくすべての列値がチェックされます。より多くのリソースが消費されますが、最高レベルのリアルタイム・データ検証と競合検出が可能になります。

ソースおよびターゲットの主キー、一意キーおよび外部キーがソースとターゲット間で同一でないか、定期的に変更される場合にも使用できます。

表レベルのサプリメンタル・ロギング、最小設定

NOSCHEDULINGCOLSオプションを指定したADD TRANDATA

表の主キーおよび有効なすべての一意索引の無条件のサプリメンタル・ロギングを有効化します。

非統合Replicatおよび非パラレルReplicatに使用します。これは、最低限必要な表レベルのロギングです。

サブセット・データベース・レプリケーションのロギングの有効化

Oracleソース・データベースを強制ロギング・モードにすることを強くお薦めします。強制ロギング・モードでは、すべてのトランザクションおよびロードのロギングを強制し、反対にユーザーまたは記憶域の設定をオーバーライドします。これにより、Extract構成のソース・データが失われることがなくなります。

サブセット・データベース・レプリケーションと呼ばれる詳細なデータベース・サプリメンタル・ロギング・モードがあります。これは、すべてのOracle GoldenGateおよびXStreamクライアントの基本的な推奨モードです。これは、以前に使用していた最小サプリメンタル・ロギング・モードにかわるものです。

詳細は、Oracle Database SQL言語リファレンスALTER DATABASE を参照してください。

現時点では、サブセット・データベース・レプリケーション・ロギングは、CDB$ROOTで有効になっています(これは、すべてのユーザーPDBに継承されます)。

ノート:

データベース・レベルの主キー(PK)および一意索引(UI)のロギングは、表のサブセットをレプリケートする場合にかぎり非推奨です。ライブ・スタンバイで使用することも、移行やアップグレードの停止時間を短縮するために、Oracle GoldenGateがすべての表をレプリケートする場合に使用することもできます。

次のステップを実行して、サブセット・データベース・レプリケーション・ロギングと強制ロギングを確認し、必要に応じて有効化します。

  1. ALTER SYSTEM権限を持つユーザーとしてSQL*Plusにログインします。
  2. 次のコマンドを発行し、データベースがサプリメンタル・ロギング・モードかどうか、および強制ロギング・モードかどうかを確認します。両方の問合せで結果がYESの場合、データベースはOracle GoldenGate要件を満たしています。
    SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE;
  3. いずれかまたは両方のプロパティで結果がNOの場合、次のステップに進み、必要に応じて有効化します。
    ALTER PLUGGABLE DATABASE pdbname ADD SUPPLEMENTAL LOG DATA SUBSET DATABASE REPLICATION;;
    ALTER DATABASE FORCE LOGGING;
  4. 次のコマンドを発行し、これらのプロパティが有効化されていることを確認します。
    SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE;

    両方のプロパティで、この問合せの出力がYESになる必要があります。

  5. ログ・ファイルを切り替えます。
    ALTER SYSTEM SWITCH LOGFILE;

スキーマ・レベルのサプリメンタル・ロギングの有効化

Oracle GoldenGateでは、スキーマ・レベルのサプリメンタル・ロギングをサポートしています。スキーマ・レベルのロギングは、Oracle GoldenGate DDLレプリケーション機能を使用する場合に、Oracleソース・データベースで必要です。その他すべてのユースケースではオプションですが、表レベルのロギングをかわりに使用する必要があります(「表レベルのサプリメンタル・ロギングの有効化」を参照してください)。

スキーマ・レベルのロギングでは、デフォルトで主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、スキーマのすべての表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。必要に応じて、オプションでロギングを変更できます。

ノート:

ワイルドカード指定を満たす場合に、スキーマに追加される新しい表がキャプチャされるため、表レベルのロギングよりもスキーマ・レベルのロギングを使用することを強くお薦めします。キー列の変更がサプリメンタル・ログ・データにも自動的に反映されるため、この方法もお薦めします。たとえば、キーが変更された場合に、ADD TRANDATAを発行する必要はありません。

次のステップをソース・システムで実行して、スキーマ・レベルのサプリメンタル・ロギングを有効化します。

  1. ソース・システムでコマンドラインを起動します。
  2. 資格証明ストア内の、スキーマ・レベルのサプリメンタル・ロギングを有効にする権限を持つユーザーの別名でDBLOGINコマンドを発行します。
    DBLOGIN USERIDALIAS alias

    USERIDALIASおよびその他のオプションの詳細は、Oracle GoldenGateリファレンスUSERIDALIASを参照してください。

  3. マルチテナント・データベースでADD SCHEMATRANDATAまたはADD TRANDATAを使用している場合は、PDBに直接ログインしてコマンドを実行できます。または、(C##ユーザーを使用して)ルート・レベルでログインする場合は、PDBを含める必要があります。Oracle GoldenGateでデータの変更をキャプチャする対象の各スキーマに対し、ADD SCHEMATRANDATAコマンドを発行します。
    ADD SCHEMATRANDATA pdb.schema [ALLCOLS | NOSCHEDULINGCOLS]

    説明:

    • オプションがない場合、ADD SCHEMATRANDATAスキーマでは、主キーのソース・システムで無条件のサプリメンタル・ロギングを有効化し、指定したスキーマの現在および将来のすべての表のすべての一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。デフォルトは、非統合Replicatをオプションでサポートしますが、依存関係を計算するために、主キー、一意キーおよび外部キーをすべてインバウンド・サーバーで使用できるようにする必要があるため、統合Replicatをサポートする必要があります。

    • ALLCOLSを使用すると、表のすべての列の無条件のサプリメンタル・ロギングを有効化して、指定したスキーマの現在および将来のすべての表に適用できます。ソース表とターゲット表に異なるスケジューリング列が含まれる場合に、統合Replicatをサポートするために使用します。(スケジューリング列は、主キー、一意キーおよび外部キーです。)

    • NOSCHEDULINGCOLSは、スキーマの既存の表および後で追加された新しい表で、主キーおよび有効なすべての一意索引の値のみをログに記録します。これは、必要最小限のレベルのスキーマ・レベルのロギングで、非統合モードのReplicatのみで有効です。

    次の例では、hrスキーマのデフォルトのサプリメンタル・ロギングをコマンドで有効にします。

    ADD SCHEMATRANDATA pdbeast.hr ALLCOLS

    次の例では、HRスキーマの主キーおよび有効な一意索引のみでサプリメンタル・ロギングをコマンドで有効にします。

    ADD SCHEMATRANDATA pdbeast.hr NOSCHEDULINGCOLS

表レベルのサプリメンタル・ロギングの有効化

表レベルのサプリメンタル・ロギングは、次の場合にソース・システムで有効化します。

  • スキーマ・レベルのロギングを使用しない場合に、必要なレベルのロギングを有効にする場合(「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照)。スキーマ・レベルまたは表レベルのロギングを使用する必要があります。表レベルのロギングでは、デフォルトで主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。必要に応じて、オプションでロギングを変更できます。

  • 指定した表で主キーのロギングを回避する場合。

  • キー以外の列の値を表レベルで記録し、Oracle GoldenGateの特定の機能(フィルタリング、競合検出および解決ロジックなど)をサポートする場合。

  • 表レベルのサプリメンタル・ロギングのみを持つ表でキー列が変更された場合は、表に対するDMLアクティビティを許可する前に、その表に対してADD TRANDATAを実行する必要があります。

次のステップをソース・システムで実行して、表レベルのサプリメンタル・ロギングを有効化するか、コマンドのオプションの機能を使用します。

  1. ソース・システムでコマンドラインを実行します。

  2. 資格証明ストア内の、表レベルのサプリメンタル・ロギングを有効にする権限を持つユーザーの別名を使用してDBLOGINコマンドを発行します。

    DBLOGIN USERIDALIAS alias

    DBLOGINおよびその他のオプションの詳細は、Oracle GoldenGateリファレンスUSERIDALIASを参照してください。

  3. ADD TRANDATAコマンドを発行します。

    ADD TRANDATA [PDB.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]

    説明:

    • PDBは、表がマルチテナント・コンテナ・データベースにある場合、ルート・コンテナまたはプラガブル・データベースの名前です。

    • schemaは、表を含むソース・スキーマです。

    • tableは、表の名前です。オブジェクト名を指定する手順は、「Oracle GoldenGateの入力におけるオブジェクト名の指定」を参照してください。

    • ADD TRANDATAで他のオプションを指定しない場合は、主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。デフォルトは、非統合Replicat (NOSCHEDULINGCOLSも参照)をオプションでサポートしますが、依存関係を計算するために、主キー、一意キーおよび外部キーをすべてインバウンド・サーバーで使用できるようにする必要があるため、統合Replicatをサポートする必要があります。統合Replicatの詳細は、unresolvable-reference.html#GUID-6635228F-F992-4DAE-AD5E-0BE5A36542CCを参照してください。

    • ALLCOLSでは、表のすべての列の無条件のサプリメンタル・ロギングを有効化します。ソース表とターゲット表に異なるスケジューリング列が含まれる場合に、統合Replicatをサポートするために使用します。(スケジューリング列は、主キー、一意キーおよび外部キーです。)

    • NOSCHEDULINGCOLSは、非統合モードのReplicatプロセスでのみ有効です。これは、表に対して定義されている一意制約のタイプ、または一意制約のないすべての列に適した、ADD SUPPLEMENTAL LOG DATA ALWAYS句を含むALTER TABLEコマンドを発行します。このコマンドは、スキーマ・レベルのロギングが使用されていない場合に、Oracle GoldenGateの表レベルのロギングの基本要件を満たします。Oracle GoldenGateがキーまたは索引を選択する方法は、「ソース表とターゲット表での行の一意性の確保」を参照してください。

    • COLS columnsは、KEYCOLS句またはフィルタリングおよび操作に必要なキー以外の列を記録します。パラメータが必要です。NOKEYオプションが存在しないかぎり、主キーに加えてこれらの列もログに記録されます。

    • NOKEYによって、主キーまたは一意なキーのロギングが回避されます。TABLEパラメータおよびMAPパラメータにKEYCOLS句が必要で、ADD TRANDATAコマンドでCOLS句を使用して代替のKEYCOLS列を記録する必要があります。

  4. ADD TRANDATACOLSオプションを使用する場合、ターゲットでそれらの列に一意の索引を作成して行の取得を最適化します。KEYCOLS句の代替キーとしてこれらの列を記録する場合は、Oracle GoldenGateプロセスを構成するときにKEYCOLS句をTABLEおよびMAP文に追加する必要があります。

表レベルのサプリメンタル・ロギングの削除

表をOracle GoldenGateで取得する必要がなくなり、表のTABLEパラメータがExtractパラメータ・ファイルから削除されているか、またはTABLEEXCLUDEを使用してワイルドカード文から表を除外している場合、サプリメンタル・ロギングを表から削除できます。

ノート:

Extractで、サプリメンタル・ロギングが有効になっていない表を解決すると、DML操作のタイプによっては異常終了します。

DELETE TRANDATAを使用してサプリメンタル・ロギングを削除すると、Replicatの表のIDENTITYレベルはNOTHINGに設定されます。サプリメンタル・ロギングは、Microservices Architecture Webインタフェースを使用して、「管理サービス」、「構成」ページから、ソース・データベースに対して作成された「資格証明」で無効にするか、DELETE TRANDATAコマンドを使用して発行できます。

次に、DELETE TRANDATAを発行する構文を示します。

DBLOGIN USERIDALIAS alias_name
DELETE TRANDATA schema.tablename

サプリメンタル・ロギングのレベルをチェックするには、次のようにします。

INFO TRANDATA schema.tablename