17 並列Replicatの使用

目的の環境でパラレル・レプリケーションを作成(または追加)して構成できます。そうした新規の並列Replicatプロセスは、内部のすべてのステージで最初から最後まで情報を並列処理します。マッパー、マスターおよびアプライアなどのコンポーネントについても説明します。

内容は次のとおりです。

並列Replicatの概要

並列Replicatは、パフォーマンスを向上させるために並列でトランザクションを適用する新しいReplicatの種類です。

統合Replicatと同様に、トランザクション間の依存関係が考慮されます。データベースの外部で依存性の計算、マッピングの並列処理および適用が実行されるため、負荷が別のサーバーに移されます。このプロセスでトランザクションの整合性が維持されます。さらに、並列Replicatは、大きなトランザクションをチャンクに分割してパラレルに適用することで、大きなトランザクションのパラレル適用をサポートします。

並列Replicatは非統合オプションを使用するすべてのデータベースをサポートします。並列Replicatは完全なメタデータを持つ証跡からのデータ・レプリケーションのみをサポートし、従来の証跡形式を必要とします。

並列Replicatのコンポーネントは次のとおりです。
  • マッパーはパラレルに動作し、証跡の読取り、証跡レコードのマッピング、マップされたレコードの統合Replicat LCR形式への変換、および後続の処理のためのマージャへのLCRの送信を実行します。1つのマッパーが1つのセットのトランザクションをマップしている間に、次のマッパーが次のセットのトランザクションをマップします。証跡情報は分割されますが、証跡情報が正しく順序付けされるため、証跡ファイルはそのままの状態になります。

  • マスター・プロセスにはコレータとスケジューラの2つのスレッドがあります。コレータはマスターからマップされたトランザクションを受け取り、依存関係の計算のために証跡の順序に戻します。スケジューラがトランザクション間の依存関係を計算し、トランザクションを独立したバッチにグループ化し、ターゲット・データベースに適用するためにバッチをアプライアに送信します。

  • アプライアは配列実行のためにバッチ内のレコードを並べ替えます。さらにバッチをターゲット・データベースに適用し、エラー処理を実行します。また、適用したトランザクションをチェックポイント表で追跡します。

次の表に、それぞれのReplicatでサポートされる機能を示します。

機能 クラシックReplicat 調整Replicat 統合Replicat 並列Replicat

バッチ処理

あり

あり

あり

あり

バリア・トランザクション

なし

あり

あり

あり

依存関係の計算

なし

なし

あり

あり

自動並列化

なし

なし

あり

あり

DMLハンドラ

なし

なし

あり

あり脚注1

プロシージャ・レプリケーション

なし

なし

あり

あり脚注2

自動CDR

なし

なし

あり

あり脚注3

依存関係を認識したトランザクション分割

なし

なし

なし

あり

RACノード間の処理

なし

あり

なし

あり

脚注1 統合モード

脚注2 統合並列Replicat(iPR)の場合に使用

脚注3 iPRのみで使用

パラレル・レプリケーション・アーキテクチャ

パラレル・レプリケーション・プロセスは、統合モードの場合に、Oracle Database内で使用可能な適用処理機能を活用します。

単一のReplicat構成では、インバウンド・サーバーの複数の子プロセス(適用サーバーと呼ばれる)が、元のトランザクション原始性を維持しつつ、トランザクションをパラレルに適用します。

アーキテクチャ図は、証跡ファイルからターゲット・データベースへのパラレル・レプリケーションの様々なプロセスを介した変更レコードのフローを表します。

para_rep_arch.jpgの説明が続きます
図para_rep_arch.jpgの説明

マッパーが証跡ファイルを読み取ってレコードをマップし、マップしたレコードをマスターに転送します。バッチはアプライアに送信されて、ターゲット・データベースに適用されます。

マスター・プロセスにはコレータとスケジューラの2つの個別のスレッドがあります。コレータはマッパーの管理とマッパーとの通信を行い、さらにマップされたトランザクションを受信して、単一の順序ストリームに並べ替えます。スケジューラはアプライアの管理とアプライアとの通信を行い、さらにコレータからトランザクションを読み取り、バッチにしてアプライアに対してスケジュールします。

スケジューラ・コントローラはスケジューラと通信して必要な情報(現在の低水位標の位置など)を収集します。スケジューラ・コントローラはOracle DatabaseのCDBモードに必要で、これにより、様々なターゲットPDBに関連する情報を集約して、統一された状況をレポートします。スケジューラ・コントローラは、CDBモードでない場合でもシンプルで統一された実装を実現するために作成されています。各プロセスがパラメータ・ファイルを読み取り、単一のチェックポイント・ファイルを共有します。

並列Replicatの基本パラメータ

次の表に、基本的な並列Replicatのパラメータおよびその説明を示します。

パラメータ 説明
MAP_PARALLELISM

マッパーの数を構成します。これは証跡ファイルを読み取るために使用されるスレッドの数を制御します。最小値は1、最大値は100、デフォルトは2です。

APPLY_PARALLELISM

アプライアの数を構成します。これは変更を適用するために使用されるターゲット・データベースの接続の数を制御します。デフォルト値は4です。

MIN_APPLY_PARALLELISM

MAX_APPLY_PARALLELISM

並列化の適用が自動チューニングされます。最小値と最大値を設定して、Replicatが並列化を自動的に調整する範囲を定義できます。デフォルト値はありません。APPLY_PARALLELISMと同時に使用しないでください

SPLIT_TRANS_REC

大きなトランザクションを指定のサイズのピースに分割して、パラレルに適用するように指定します。ピース間の依存関係は保持されます。デフォルトでは無効です。

COMMIT_SERIALIZATION

FULL直列化モードのコミットを有効にし、証跡の順序でトランザクションを強制的にコミットします。

高度なパラメータ

 
LOOK_AHEAD_TRANSACTIONS

トランザクションをバッチ化するときに、スケジューラがどの程度先まで対象にするかを制御します。デフォルト値は10000です。

CHUNK_SIZE

並列Replicatで、どの程度の大きさのトランザクションを大きいトランザクションとみなすかを制御します。並列Replicatは、このサイズより大きいトランザクションを検出すると、そのトランザクションをシリアライズするためにパフォーマンスが低下します。ただし、この値を大きくすると、並列Replicatによって消費されるメモリーも増加します。

パラメータ・ファイルの例

replicat repA
userid ggadmin, password ***
MAP_PARALLELISM 3
MIN_APPLY_PARALLELISM 2
MAX_APPLY_PARALLELISM 10
SPLIT_TRANS_RECS 1000
map *.*, target *.*;

並列Replicatの作成

グラフィカル・ユーザー・インタフェースまたはコマンドライン・インタフェース(GGSCIおよびAdminClient)を使用して、パラレル・レプリケーションを作成できます。

並列Replicatにはチェックポイント表が必要なため、並列Replicatにチェックポイント表が含まれない場合は、管理サーバーUIとAdminClientの両方がエラーを発行します。

注意:

パラレル・レプリケーションでは、統合モードでのCOMMIT_SERIALIZATIONはサポートされません。この適用プロセスを使用するには、統合Replicatを使用してください。

管理サーバーを使用した非統合パラレル・レプリケーションの作成

  1. ブラウザを開いて、Configuration Assistantで作成したサービス・マネージャに接続します。

    https://server_name:service_manger_port/

    たとえば、https://localhost:9000/に接続します。非セキュアな環境ではhttpsのかわりにhttpを使用します。

    Oracle GoldenGateサービス・マネージャが表示されます。

  2. 作成したユーザー名とパスワードを入力し、「Sign In」をクリックします。

    サービス・マネージャに実行中のサーバーが表示されます。

  3. 「Services」セクションで「Administration Server」をクリックしてログインします。

  4. ページ・タイトルの左側の「Application Navigation」アイコンをクリックして、ナビゲーション・パネルを展開します。

  5. 右側のナビゲーション・パネルの「Configuration」をクリックして、チェックポイント表を作成します。

  6. 「Action」の下部の「log in database」アイコンをクリックして、データベースの有効な資格証明とログインを持っていることを確認します。

  7. +記号をクリックして、チェックポイント表を追加します。

  8. 作成するチェックポイント表のschema.nameを入力して、「Submit」をクリックします。

  9. 「log out database」アイコンを使用して「Credential Alias」からログアウトし、表が正しく作成されたことを検証し、再度ログインします。

    ログインが完了すると、新しいチェックポイント表がリストされます。

  10. 「Overview」をクリックして、管理サーバーのメイン・ページに戻ります。

  11. Replicatの横にある+記号をクリックします。

  12. 「Nonintegrated Replicat」を選択して、「Next」をクリックします。

  13. 必要な情報を入力し、「Credential Domain」および「Credential Alias」フィールドに入力したことを確認してから、「Checkpoint Table」フィールドに入力し、リストから新しく作成したチェックポイント表を選択します。

  14. 「Next」をクリックし、「Create and Run」をクリックしてReplicatの作成を完了します。

管理クライアントを使用した非統合並列Replicatの作成

  1. Oracle GoldenGateインストール・ディレクトリのbinディレクトリに移動します。

    cd $OGG_HOME/bin
  2. 管理クライアントを起動します。

    ./adminclient

    管理クライアントのコマンド・プロンプトが表示されます。

    OGG (not connected) 12>
  3. サービス・マネージャのデプロイメント・ソースに接続します。

    connect http://localhost:9500 deployment Target1 as oggadmin password welcome1

    接続文字列にhttpまたはhttpsを使用する必要があります。この例は非SSL接続です。

  4. 並列Replicatを追加します。完了まで数分かかる場合があります。

    add replicat R1, parallel, exttrail bb checkpointtable ggadmin.ggcheckpoint

    ADD REPLICATの一部としてわずか2文字の証跡名を使用することも、/u01/oggdeployments/target1/var/lib/data/bbのようなフル・パスを使用することもできます。

  5. Replicatが実行されていることを確認します。

    info replicat R1

    次のようなメッセージが表示されます。

    REPLICAT   R1        Initialized   2016-12-20 13:56   Status RUNNING
    Parallel
    Checkpoint Lag       00:00:00 (updated 00:00:22 ago)
    Process ID           30007
    Log Read 
    Checkpoint  File ./ra000000000First Record  RBA 0