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

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

GoldenGateレプリケーションおよびアーカイブ・モードの有効化

ステップ1: GoldenGateレプリケーションの有効化

Oracle GoldenGateのExtractおよびReplicatをサポートするために必要なデータベース・サービスは、Oracleデータベースで明示的に有効化する必要があります。

Oracle GoldenGateレプリケーションを有効にするには、次のデータベース初期化パラメータを設定します。いずれかのノードでOracle GoldenGateを使用する場合は、Oracle RACのすべてのインスタンスでこの値をTRUEに設定する必要があります。

ENABLE_GOLDENGATE_REPLICATION=true

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

ステップ2: アーカイブ・モードの有効化

Oracle Databaseは、Extractでログ・ファイルを処理できるように、ARCHIVELOGモードにする必要があります。ARCHIVELOGモードをオンに切り替えるには、データベース・アーカイブ・モードの変更に記載されているステップに従います。

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

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ログまたはアーカイブが格納される環境を処理するためのオプションが含まれます。

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 DatabaseでOracle GoldenGate 23aiを使用すると、ソースおよびターゲットのプラガブル・データベース(PDB)を実装できます。Extractは、PDBごとのExtractと呼ばれる特定のPDBに登録されます。

ノート:

Oracle GoldenGate 23ai以降、ルート・レベルのExtractはサポートされません。これは、ユーザー権限はPDBレベルでのみ割り当てられ、c##ggadminユーザーはOracle GoldenGate 23aiでは使用されないことを意味します。

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

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

PDBから直接Extractを追加すると、分離されたPDBから取得され、PDBレベルで所有権および責任が管理されます。

PDBごとのExtractを使用して、ローカルPDBユーザー(ggadminなど)として接続し、このExtractをデータベースに登録できます。PDBユーザーとしてすでにログインしているため、追加のcontainer句は必要ありません。同様に、SOURCECATALOGまたは3つの部分からなる命名規則も必要ありません。

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

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

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

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

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

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

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

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

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

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. FLUSH SEQUENCEを使用する前に、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 system/manager 
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 system/manager
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql
プロンプトが表示されたら、次を入力します:
GGADMIN
FLUSH SEQUENCEコマンドを実行します:
DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*
 
ターゲットのOracle GoldenGate構成:
sqlplus system/manager
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はターゲット・データベース内のインバウンド・サーバーと対話します。この項では、これらのサーバーで消費される共有メモリーを管理するためのガイドラインについて説明します。

自動(共有)メモリー管理が有効になっている場合(推奨)、Oracle DatabaseにSTREAMS_POOL_SIZE環境変数を設定する必要はありません。これは、Streamsプールに最小メモリーが必要ないためです。ただし、自動(共有)メモリー管理が有効になっていない場合に、STREAMS_POOL_SIZEが指定されておらず、ルート・レベルのExtract (ダウンストリーム取得の場合)または統合Replicat (Oracle GoldenGate 23aiでは非推奨)が使用されていると、Streamsプールは共有プールの最大10%を使用します。

STREAMS POOLからメモリーを明示的に割り当てる場合は、各プロセスのMAX_SGA_SIZE値の合計に25%を加算してSTREAMS_POOL_SIZEを計算します。たとえば、ダウンストリーム取得では、デフォルトでMAX_SGA_SIZEパラメータに対して最大サイズ1GBが使用されます。この場合は、STREAMS_POOL_SIZEを1.25GBに設定します。追加の統合Replicatが2つあり、それぞれのMAX_SGA_SIZEが1GBの場合は、STREAMS_POOL_SIZEを3.75GBにする必要があります。

Streamsプールは、データベースの他のコンポーネント(Oracle Streamやアドバンスト・キューイングなど)でも使用されるため、Oracle GoldenGateのStreamsプールのサイズを設定する際は、このことを必ず考慮に入れてください。

詳細は、ドキュメントID 2998659.1およびブログGoldenGate: Oracle DatabaseでStreamsプールを管理する方法も参照してください。

Oracle順序のサポート

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

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

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

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

Oracle GoldenGate管理ユーザーには、必ずしもDBA権限は必要ありません。ただし、Oracle GoldenGate管理ユーザーには、Oracle Database 23ai以降の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