データベース接続、システムおよびパラメータ設定の準備
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レコードと一致させることができます。
最適なフェッチ結果を得るには、ソース・データベースを次のように構成します。
Oracle GoldenGateによって、フェッチの管理に次のパラメータが提供されます。
パラメータまたはコマンド | 説明 |
---|---|
|
必要に応じてExtractフェッチ統計を表示します。 |
|
常にフェッチ統計が表示されるように |
|
Extractによってソース・データベースに保持される準備済の問合せおよび |
|
Extractのデフォルトのフェッチ動作(Extractでフラッシュバック問合せを実行するか、現在のイメージを表からフェッチするか)を制御します。 |
|
UNDOの保存期限が切れている場合や、表の構造が変更された場合など、Extractのフラッシュバック問合せの失敗を処理します。Extractは、現在のイメージを表からフェッチするか、失敗を無視するように設定できます。 |
|
フェッチされたデータが含まれる証跡レコード、または列が見つからない証跡レコードの処理時に、Replicatで応答を制御します。 |
他のデータベース・プロパティの処理
Oracle GoldenGateに影響を与える可能性があるデータベース・プロパティと、特定の条件の解決または回避に使用するパラメータがあります。
次の表でリストされるのは、データベース・プロパティおよび関連する問題点/解決策です。
データベース・プロパティ | 問題点/解決策 |
---|---|
時間隔パーティション化がある表 |
時間隔パーティション化がある表をサポートするには、 |
仮想列のある表 |
仮想列は記録されません。また、Oracleで仮想列に対するDMLは許可されません。ただし、次のようにして、このデータをキャプチャし、仮想列ではないターゲット列にマップできます。 Extractの Replicatの |
本質的に更新可能なビューを持つ表 |
本質的に更新可能なビューにレプリケートするには、関連付けの対象のソース表とターゲット表をマップする |
異なる場所にあるREDOログまたはアーカイブ |
|
|
|
順序 |
順序のDDL( 順序値のみをレプリケートするには、Extractパラメータ・ファイルで |
マルチテナント・コンテナ・データベースの構成
ノート:
Oracle GoldenGate 23ai以降、ルート・レベルのExtractはサポートされません。これは、ユーザー権限はPDBレベルでのみ割り当てられ、c##ggadmin
ユーザーはOracle GoldenGate 23aiでは使用されないことを意味します。
次の図は、マルチテナント・コンテナ・データベース構成における様々なアプローチの構成を示しています:
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を使用できます。
-
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}.
-
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 | ターゲットCDB |
---|---|
|
SOUTH |
PDB名: |
PDB名: |
共通ユーザー: 順序のPDBユーザー: |
PDBユーザー: |
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.*
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での自動取得モードの有効化
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