Oracle GoldenGateデプロイメントでのダウンストリームExtract

ダウンストリームのOracle GoldenGateデプロイメントでは、ソース・データベースのREDOログをダウンストリーム・マイニング・データベースにオフロードできます。これにより、マイニングに対するソース・データベースの負荷を軽減できます。

ダウンストリーム・マイニング・データベースでは、ソース・データベースからアーカイブ・ログおよびオンラインREDOログを受け入れます。これは、次の2つのモードでダウンストリームExtractが存在できることを意味します。
  • リアルタイム・マイニング・モード: リアルタイム・マイニング・モードでは、REDOレコードはオンラインREDOログまたはスタンバイREDOログから即時に処理されるため、データベース変更の処理に遅延はありません。

  • アーカイブ・ログ専用モード: アーカイブ・ログ・マイニング・モードでは、REDOレコードは、REDOログ・ファイルにアーカイブされるまで処理されません。

一般的なダウンストリーム・デプロイメントでは、ソース・データベースにプライマリExtractがあり、ダウンストリーム・データベースにダウンストリームExtractがあります。次の図では、CDBNORTHがソース・データベース、CDBSOUTHがターゲット・データベースです。ソースとターゲットの間に、ダウンストリームExtractからターゲットにREDOログを転送するデータベース・ログマイニング・サーバーを備えたマイニング・データベースがあります。

ソース・マルチテナント・コンテナ・データベースとログマイニング・サーバーを使用したダウンストリーム・データベース間のワークフロー。

ダウンストリームExtractを設定するもう1つのオプションは、マイニング・データベースに対してActive Data Guard (ADG)リダイレクションを使用したExtract登録を使用することです。

このアプローチでは、次の図に示すように、カスケード・モードで構成されたADGを使用して、ダウンストリーム・マイニング・データベースにREDOログを転送します。それをダウンストリームExtractが参照することで、ソース・データベースのオーバーヘッドが削減されます。


Active Data Guard (ADG)に接続されたダウンストリーム・データベース

カスケード・ダウンストリーム環境の設定に関する構成の詳細は、「ダウンストリームExtractがADGと連携できるようにする」を参照してください。

ソース・データベースおよびダウンストリーム・データベースの構成

この項では、データベース側で必要なパラメータおよびユーザー管理構成について学習します。

ソース・データベースおよびダウンストリーム・データベースのOracle GoldenGateユーザー

Oracle GoldenGate管理者ユーザーは、各データベースに存在する必要があります。コンテナ・データベースでは、Extractがルート・コンテナ内で使用されるため、共通ユーザーが必要です。

Oracle Database 23ai以降、ユーザーを設定するには、新しいユーザーにOGG_CAPTUREおよびOGG_APPLYユーザー・ロールを割り当てる必要があります。詳細は、「Oracle Database 23ai以降でのユーザー権限の付与」を参照してください。

Oracle Database 21c以前のユーザーを設定するには、PL/SQLパッケージを使用します。次の例は、Oracle Database 21c以前でOracle GoldenGateを使用する場合のユーザーの作成と、このユーザーに付与される関連する権限を示しています。

CREATE USER c##ggadmin IDENTIFIED BY password CONTAINER = all;
ALTER USER c##ggadmin SET CONTAINER_DATA = all CONTAINER = current;
GRANT ALTER SESSION TO c##ggadmin CONTAINER = all;
GRANT connect, resource TO c##ggadmin CONTAINER = all;
 
BEGIN
  DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE
    ( grantee                 => 'C##GGADMIN'
    , privilege_type          => 'CAPTURE'
    , grant_select_privileges =>  TRUE
    , container               => 'ALL'
    );
END;
/

ノート:

共通ユーザー(c##ggadmin)は、ダウンストリーム・データベースにのみ必要です。

データベース接続の構成

データベース・ネット・サービスの要件

ソース・データベースとダウンストリーム・データベースには、双方向のデータベース・ネット・サービスを使用してアクセスできます。

Oracle GoldenGateでは、ソース・データベース(CDBNORTH_root)とダウンストリーム・データベース(cdbDSC_root)に対する接続を設定できます。ソース・データベースの接続は、Extract登録時にディクショナリ・データを格納するためにのみ必要です。FETCHUSERIDパラメータを使用すると、実行時にフェッチするためにダウンストリーム・マイニング・データベース(cdbDSC_root)に接続できます。ADGリダイレクションを使用して、Extract登録をADGからソースにリダイレクトできます。接続を設定するには、Oracle GoldenGateデプロイメントから資格証明を作成するために、これらのユーザーのデータベース資格証明があることを確認してください。

Oracle GoldenGateシップホームの一部であるSQL*Plusを使用してネット・サービスをテストできます。

データベースに関する前提条件

データベース接続を構成するには、ソース・データベース・インスタンスとダウンストリーム・データベース・インスタンスで次の設定が行われていることを確認します。
  • すべてのデータベースに次の指定が必要です。

    ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE;

  • STREAMS_POOL_SIZEを設定する必要があります。たとえば

    ALTER SYSTEM SET STREAMS_POOL_SIZE = 1G;

  • すべてのデータベースがアーカイブ・ログ専用モードである必要があります。

    ALTER DATABASE ARCHIVE LOG;

  • (推奨)すべてのデータベースが強制ロギング・モードである必要があります。

    ALTER DATABASE FORCE LOGGING;

  • ソース・データベースで、最小限のサプリメンタル・ロギングが有効になっている必要があります。

  • ダウンストリーム・データベースには、次に対して異なる設定が必要です。
    • DBID

    • DBNAME

    • DB_UNIQUE_NAME

    • GLOBAL_NAME

    ダウンストリーム環境では、一意のデータベース名がデータベース名と一致します。

  • ソース・データベースとダウンストリーム・データベースのパスワード・ファイル(orapwSID)は同じです。そのため、remote_login_passwordfileSHAREDまたはEXCLUSIVEに設定する必要があります。

ダウンストリーム・データベースのパラメータの構成

この項を使用して、必要に応じてリアルタイム・マイニング・モードおよびアーカイブ・ログ専用モードのパラメータを構成します。
リアルタイム・マイニング・モードでのダウンストリームExtractのパラメータ設定

リアルタイム・マイニング・モードのダウンストリームExtractの場合、主な前提条件は、ダウンストリーム・データベースにスタンバイREDOログ・ファイルが正しく構成されている必要があることです。

ダウンストリーム・リアルタイム・マイニングは、Extractパラメータ・ファイル内の明示的な設定によって有効化されます。LADの設定は、このモードとは独立しています。TRANLOGOPTIONS INTEGRATEDPARAMS (REAL_TIME_MINE Y)パラメータがまだ設定されていない場合は、リアルタイム・マイニング・モードでダウンストリームExtractを有効にするように設定する必要があります。
TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y)

ノート:

特定のソース・データベースのダウンストリーム・データベースには、リアルタイムExtractが1つのみ存在できます。他のExtractは非リアルタイムである必要があります。これはREDOトランスポートによる制限です。
ローカル・バックアップには、フラッシュ・リカバリ領域(FRA)が使用されます。この領域では、外部アーカイブ・ログ・ファイルも管理されます。次のコマンドは、FRAを使用して設定されているローカル・バックアップを示しています。
ALTER SYSTEM  
    SET log_archive_config='DG_CONFIG=(CDBNORTH, cdbDSC)'; 
ALTER SYSTEM set FAL_SERVER = 'CDBNORTH_root';

スタンバイREDOログ・ファイルはダウンストリーム・データベース上に存在している必要があります。ソースにn個のオンラインREDOログ・ファイルがある場合は、ターゲットに同じサイズのn+1個のスタンバイREDOログ・ファイルが存在している必要があります。

スタンバイREDOログ・ファイルの作成

次のステップでは、スタンバイREDOログ・ファイルをダウンストリーム・マイニング・データベースに追加する手順を概説します。スタンバイREDOログの作成ルールを次に要約します。

  • 各スタンバイREDOログ・ファイルのサイズは、少なくともREDOソース・データベースの最大REDOログ・ファイルと同程度である必要があります。管理を簡単にするために、ソース・データベースのすべてのREDOログ・ファイルとダウンストリーム・マイニング・データベースのスタンバイREDOログ・ファイルを同じサイズにすることをお薦めします。

  • スタンバイREDOログは、ソース・データベースのREDOスレッドごとにソース・データベースのREDOログより1つ以上多い数のREDOログ・グループを持つ必要があります。

スタンバイREDOログ・ファイルの追加に必要な特定のステップやSQL文は、環境によって異なります。スタンバイREDOログ・ファイルをデータベースに追加する手順の詳細は、フィジカル・スタンバイ・データベースの作成を参照してください。

ノート:

1つのダウンストリーム・マイニング・データベースにREDOを送信するソース・データベースが複数ある場合、それらのソースのうち1つのみがマイニング・データベースのスタンバイREDOログにREDOを送信できます。このソース・データベースからのREDOをマイニングするExtractプロセスはリアルタイム・モードで実行できます。他のソース・データベースはすべてアーカイブ・ログのみをダウンストリーム・マイニング・データベースに送信し、このデータを読み取るExtractはアーカイブ・ログのみモードで実行されるよう構成される必要があります。

スタンバイREDOログ・ファイルを作成する手順

  1. SQL*Plusで、管理ユーザーとしてソース・データベースに接続します。
  2. ソース・ログ・ファイルのサイズを確認します。結果をノートにとっておきます。
    SELECT BYTES FROM V$LOG;
  3. ソース・データベースに構成されているオンライン・ログ・ファイル・グループの数を確認します。結果をノートにとっておきます。
    SELECT COUNT(GROUP#) FROM V$LOG;
  4. 管理ユーザーとしてダウンストリーム・マイニング・データベースに接続します。
  5. スタンバイ・ログ・ファイル・グループをマイニング・データベースに追加します。スタンバイ・ログ・ファイルのサイズは、ソース・ログ・ファイルのサイズ以上である必要があります。スタンバイ・ログ・ファイル・グループの数は、ソース・オンライン・ログ・ファイル・グループの数より1つ以上多い数である必要があります。これは、RACインストールの各インスタンス(スレッド)に適用されます。ソース・データベースにn個のスレッドがあり、それぞれm個のREDOログ・グループがある場合は、ダウンストリーム・マイニング・データベースでn*(m+1)個のREDOログ・グループを構成する必要があります。

    次の例は、3つのスタンバイ・ログ・グループを示しています。

    ALTER DATABASE ADD STANDBY LOGFILE GROUP 3
    ('/oracle/dbs/slog3a.rdo', '/oracle/dbs/slog3b.rdo') SIZE 500M;
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 4
    ('/oracle/dbs/slog4.rdo', '/oracle/dbs/slog4b.rdo') SIZE 500M;
    ALTER DATABASE ADD STANDBY LOGFILE GROUP 5
    ('/oracle/dbs/slog5.rdo', '/oracle/dbs/slog5b.rdo') SIZE 500M;
    
  6. スタンバイ・ログ・ファイル・グループが正常に追加されたことを確認します。
    SELECT GROUP#, THREAD#, SEQUENCE#, ARCHIVED, STATUS
    FROM V$STANDBY_LOG;

    結果は次のようになります。

    GROUP#     THREAD#    SEQUENCE#  ARC STATUS
    ---------- ---------- ---------- --- ----------
             3          0          0 YES UNASSIGNED
             4          0          0 YES UNASSIGNED
             5          0          0 YES UNASSIGNED
    
  7. ソース・データベースのログ・ファイルが、設定したローカルのLOG_ARCHIVE_DEST_nLOCATION属性で指定した場所にあることを確認します。ディレクトリ内のファイルを確認するために、ソース・データベースでログ・ファイルの切り替えが必要な場合があります。
スタンバイREDOログ・ファイルをローカルにアーカイブするためのデータベースの構成

この手順では、ソース・データベースのオンラインREDOログからREDOデータを受信するスタンバイREDOログをアーカイブするようダウンストリーム・マイニング・データベースを構成します。外部アーカイブ・ログは、ダウンストリーム・マイニング・データベースのリカバリ領域にアーカイブできないことに注意してください。

スタンバイREDOログをローカルでアーカイブする手順:

  1. ダウンストリーム・マイニング・データベースで、次の例に示すように、2つ目のアーカイブ・ログの宛先をLOG_ARCHIVE_DEST_n初期化パラメータに設定します。
    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='LOCATION=/home/arc_dest/srl_dbms1 
    VALID_FOR=(STANDBY_LOGFILE,PRIMARY_ROLE)'

    外部アーカイブ・ログ(リモート・ソース・データベースからのログ)はローカル・マイニング・データベース・ログ・ファイルと分けて保管し、ログ・ファイル同士も分けて保管することをお薦めします。外部アーカイブ・ログのステージングにダウンストリーム・マイニング・データベースのリカバリ領域を使用することはできません。

  2. 前のステップで設定したLOG_ARCHIVE_DEST_2パラメータを次の例に示すように有効にします。
    ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE
アーカイブ・ログ専用モードでのダウンストリームExtractのパラメータ設定

アーカイブ・ログ専用マイニング・モードまたはリアルタイム・マイニング・モードのいずれかでダウンストリームExtractを設定するには、REDOトランスポートを設定する必要があります。アーカイブ・ログ専用モードでダウンストリームExtractを設定する場合は、次のパラメータを指定します。

  • LOG_ARCHIVE_CONFIG

  • LOG ARCHIVE DESTINATION (LAD)

    • すべてのデータベースのローカル・バックアップにLOG_ARCHIVE_DEST_1

    • ソース・データベースでのREDOトランスポートにLOG_ARCHIVE_DEST_2サービス

      ノート:

      LOG_ARCHIVE_DEST_2は、リアルタイム・マイニングの使用から独立しています。
    • ローカル・データベース・バックアップ保存先は、フラッシュ・リカバリ領域を使用して設定されます

  • FAL_SERVER

  • 必要なすべてのシステム・パラメータは、scope=bothで動的に設定できます。

ソース・データベース上のローカル・バックアップ保存先およびREDOトランスポート・サービスには、アーカイブ・ログ保存先(LAD)パラメータ設定が必要です。

次のコマンドを使用して、ローカル・バックアップ保存先のLADパラメータを設定します。
ALTER SYSTEM SET db_recovery_file_dest = '/u01/app/oracle/fast_recovery_area';
ALTER SYSTEM SET db_recovery_file_dest_size = 100G;
ALTER SYSTEM SET log_archive_dest_1 = 'USE_DB_RECOVERY_FILE_DEST';
次のコマンドを使用して、ソース・データベースでREDOトランスポート・サービスのLADパラメータ・オプションを設定します。
ALTER SYSTEM SET log_archive_config = 'DG_CONFIG = (CDBNORTH, cdbDSC)';
ALTER SYSTEM
      SET log_archive_dest_2='SERVICE=cdbDSC_root
                              ASYNC 
                              NOREGISTER                              
                              VALID_FOR=(ONLINE_LOGFILES, PRIMARY_ROLE) 
                              DB_UNIQUE_NAME=cdbDSC'; 

LOG_ARCHIVE_DESTパラメータとその属性についてさらに学習するには、データベース・リファレンス・ガイドのLOG_ARCHIVE_DEST_nを参照してください。

ダウンストリーム・デプロイメントに対するOracle GoldenGateのExtractの構成

この項では、ソース・データベースおよびダウンストリーム・データベースとの接続を設定し、ダウンストリーム・データベースにExtractを構成するために、Oracle GoldenGateに必要なパラメータについて学習します。

ダウンストリーム・データベースに対するOracle GoldenGateの構成

ダウンストリーム・デプロイメントを設定するには、ダウンストリームExtractパラメータ・ファイルに次のパラメータが含まれている必要があります。
  • TRANLOGOPTIONS MININGUSERALIAS: 内部メタデータ問合せのためにダウンストリーム・マイニング・データベースへの接続を設定します。

  • FETCHUSERIDALIAS: トランザクション・ログからネイティブに抽出できないデータをフェッチするために、ソース・データベースに接続します。

  • TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y): Yに設定すると、Extractはダウンストリーム・データベースのスタンバイREDOログ・ファイルから変更を取得します。設定されていない場合、Extractはアーカイブ・ログ・ファイルから取得します。

次に、これらのパラメータが指定されたExtractパラメータ・ファイルの例を示します。
EXTRACT EXTDSC  
USERIDALIAS cgg_CDBNORTH 
TRANLOGOPTIONS MININGUSERALIAS cgg_cdbDSC 
TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y)
FETCHUSERIDALIAS cgg_CDBNORTH DOMAIN OracleGoldenGate 

EXTTRAIL Downstream/ea 
SOURCECATALOG CDBNORTH_PDB1
DDL INCLUDE MAPPED
TABLE HR.*;
ダウンストリームExtractを使用するようにOracle GoldenGateデプロイメントを設定するには、次のステップに従います。
  1. ソース・データベースの資格証明を追加します。

    ALTER CREDENTIALSTORE ADD USER c##ggadmin@CDBNORTH_root ALIAS cgg_CDBNORTH DOMAIN OracleGoldenGate PASSWORD password

  2. ダウンストリーム・データベースの資格証明を追加します。

    ALTER CREDENTIALSTORE ADD USER c##ggadmin@cdbDSC_root ALIAS cgg_cdbDSC DOMAIN OracleGoldenGate PASSWORD password
  3. DBLOGINを使用して、Oracle GoldenGateからソース・データベースおよびダウンストリーム・データベースに接続します。

    DBLOGIN USERIDALIAS cgg_CDBNORTH 
    MININGDBLOGIN USERIDALIAS cgg_cdbDSC

    この例では、cgg_CDBNORTHがソース・データベースCDBNORTHの資格証明別名で、cgg_cdbDSCがマイニング・データベースの資格証明別名です。

  4. Extractを追加および登録し、以前に指定したExtractパラメータを含めるようにパラメータ・ファイルを編集し、Extract証跡の名前と場所を追加し、Extractを開始します。

    ADD EXTRACT extdsc, INTEGRATED TRANLOG, BEGIN NOW
    REGISTER EXTRACT extdsc, DATABASE CONTAINER (CDBNORTH_PDB01)
    
    ADD EXTTRAIL Downstream/ea, EXTRACT extdsc
    START extdsc

Active Data Guardを使用したカスケード・ダウンストリームExtractの構成

この項では、Active Data Guard (ADG)を使用してダウンストリーム・データベースをソース・データベースに接続する際に必要なパラメータおよび構成について学習します。

ダウンストリームExtractがADGと連携できるようにする

カスケードされたダウンストリーム取得環境では、ダウンストリーム・データベースはソース・データベースに直接接続しません。Active Data Guard (ADG)を参照として使用します。

Extractは、ソースレス・オプションを使用して起動する必要があります。そうすることで、非ネイティブのデータ型をフェッチする必要があるときには、ソース・データベースに接続するかわりに、FETCHUSERIDまたはFETCHUSERIDALIASを使用してADGに接続するようにします。たとえば、このインスタンスは読取り専用モードで開かれているため、FETCH操作はADGデータベースで処理されます。ADGインスタンスで処理できないその他の操作(ディクショナリ・ビルドの作成など)は、ADGからソース・データベースにリダイレクトされます。

ダウンストリームExtractを登録すると、Oracle GoldenGateは、REDOが発生したデータベースではなく、ソース・データベースとしてADGに接続します。ADGリダイレクションが、次のコマンドおよびパラメータでサポートされています。
  • SCHEMATRANDATA

  • TRANDATA

  • FLUSH SEQUENCE

  • TRACETABLE

  • HEARTBEATTABLE

  • REGISTER EXTRACT

ノート:

SCHEMATRANDATAおよびTRANDATAは、コマンドがスタンバイREDOログで実行された場合でも、実際のDML操作が実行されるプライマリ・データベースで実際のログ・グループが作成および管理されます。
ADGリダイレクションは、Oracle Database 21c以降で使用できます。ワイルドカード登録もサポートしています。次の例は、ADGを使用する場合のダウンストリームExtractのExtractパラメータ・ファイルを示しています。
EXTRACT EXTDSC
NOUSERID
TRANLOGOPTIONS MININGUSERALIAS cgg_cdbDSC_src DOMAIN OracleGoldenGate
TRANLOGOPTIONS INTEGRATEDPARAMS (DOWNSTREAM_REAL_TIME_MINE Y) FETCHUSERIDALIAS cgg_cdbADG_src DOMAIN OracleGoldenGate 

EXTTRAIL cascade/ea 
SOURCECATALOG CDBNORTH_PDB01
DDL INCLUDE MAPPED
TABLE HR.*;

次に、ダウンストリーム統合ExtractがADGスタンバイと連携できるようにするステップを示します。

  1. 次の例に示すように、ADGスタンバイにLOG_ARCHIVE_DESTINATION_N (LAD)を追加します。

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_3='service=mining_db_service_name ASYNC NOREGISTER VALID_FOR(STANDBY_LOGFILES,STANDBY_ROLES) DB_UNIQUE_NAME=3rd_db_unique_name' scope=both

    このステップにより、ADGスタンバイのstandby_logfilesが転送および生成されます。

  2. 次の例に示すように、ログをマイニング・データベースに送るようにADGスタンバイのLOG_ARCHIVE_CONFIGを設定します。

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='dg_config' scope=both;

    db_configは、1番目、2番目および3番目のデータベースの一意の名前です。

  3. マイニング・データベースで、受信するstandby_logfilesをマイニング・データベースに格納する場所を設定します。

    ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='location= DB_RECOVERY_FILE_DEST VALID_FOR=(STANDBY_LOGFILE,ALL_ROLES)' scope=both

    場所は、データベース・リカバリ・ファイルの宛先です。

  4. 次の例に示すように、マイニング・データベースでLOG_ARCHIVE_CONFIGを実行して、Extractプロセスがマイニング・データベースでそれらを読み取れるようにします。

    ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='dg_config' scope=both

    ここで、db_configは、1番目、2番目および3番目のデータベースの一意の名前です。

  5. ダウンストリームExtractの場合、データベース接続が適切に構成されるようにする必要があります。Extractを登録するときは、ADGスタンバイに対してDBLOGIN接続が確立され、読取り専用アクティビティ用に開いていることを確認します。

  6. Extractを追加して登録するには、次のコマンドを使用します。

    DBLOGIN USERID ggadmin@cdbADG_src, PASSWORD ggadmin
    MININGDBLOGIN USERID ggadmin@cgg_cdbDSC, password ggadmin

    cdbADG_srcは、プライマリではないADGです。

    cgg_cdbDSCはマイニング・データベースです。

  7. 次に、NOUSERIDパラメータを使用するExtractを登録します。
    ADD EXTRACT exte, INTEGRATED TRANLOG, BEGIN NOW REGISTER EXTRACT exte DATABASE
  8. Extractの登録後、このExtractを使用してデータをマイニングし、正常にExtractを開始できます。