1 Oracle GoldenGateのためのデータベースの準備
Oracle GoldenGateのためのデータベースの準備方法について学習します。これには、接続とロギングを構成する方法、目的のデータベースでOracle GoldenGateを有効にする方法、フラッシュバック問合せを設定する方法、サーバー・リソースを管理する方法などが含まれます。
内容は次のとおりです。
- データベースでのOracle GoldenGateの有効化
Oracle GoldenGateキャプチャをサポートおよび適用するために必要なデータベース・サービスは、すべてのOracleデータベース・バージョンで明示的に有効化する必要があります。これは、ExtractおよびすべてのReplicatモードに必要です。 - ExtractおよびReplicatプロセスのための接続の構成
ExtractおよびReplicatでは、tnsnames.ora
ファイルに専用のサーバー接続が必要です。 - フラッシュバック問合せの設定
特定の更新レコードを処理するために、Extractによってソース・データベースから追加の行データがフェッチされます。 - サーバー・リソースの管理
Extractはソース・データベース内の基になるログマイニング・サーバーと対話し、Replicatはターゲット・データベース内のインバウンド・サーバーと対話します。この項では、これらのサーバーで消費される共有メモリーを管理するためのガイドラインについて説明します。 - ソース表とターゲット表での行の一意性の保証
Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表に一意の行識別子が必要です。 - ロギング・プロパティの構成
Oracle GoldenGateは、REDOログを使用して、ソース・トランザクションのレプリケートに必要なデータをキャプチャします。 - EXtract自動取得モードの使用
自動取得(自動取得)モードでは、Oracle GoldenGate自動取得に対して有効になっている表を自動的に取得できます。 - データベース用の追加Oracle GoldenGate構成
この章では、データベース環境に適用可能な構成のその他の考慮事項について説明します。
データベースでのOracle GoldenGateの有効化
Oracle GoldenGateキャプチャおよび適用をサポートするために必要なデータベース・サービスは、すべてのOracleデータベース・バージョンで明示的に有効化する必要があります。これは、ExtractおよびすべてのReplicatモードに必要です。
Oracle GoldenGateを有効化するには、次のデータベース初期化パラメータを設定します。Oracle RACのすべてのインスタンスで同じ設定にする必要があります。
ENABLE_GOLDENGATE_REPLICATION=true
このパラメータは、DBA_FEATURE_USAGE_STATISTICS
ビューを変更します。このパラメータの詳細は、初期化パラメータに関する項を参照してください。
ExtractおよびReplicatプロセスのための接続の構成
ExtractおよびReplicatでは、tnsnames.ora
ファイルに専用のサーバー接続が必要です。
開始する前に、Oracleデータベース側に必要な権限を持つ専用ユーザーが存在することを確認してください。Oracle Database 21c以前のユーザー権限の付与を参照してください。
Oracle GoldenGate側では、ExtractおよびReplicatパラメータ・ファイルでUSERID
またはUSERIDALIAS
パラメータの値を指定することにより、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_SID
、ORACLE_HOME
およびLD_LIBRARY_PATH
は、ターゲットを参照します。
ノート:
これらの環境変数の設定の間に空白がないことを確認してください。Oracle Database 21c以前のユーザー権限の付与
Oracle GoldenGateからOracleデータベースへの接続に必要なユーザー権限は、ユーザーのタイプによって異なります。
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名の例として使用されます。
権限 | Extract | Replicat全モード | 目的 |
---|---|---|---|
|
あり |
あり |
オブジェクトの作成に必要 Oracle Database 12cR1以降では、
|
|
あり |
あり |
共通ユーザー 「例: DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGEパッケージを使用した権限の付与」の例を参照してください。 |
|
あり |
あり |
データベースへの接続に必要。 |
|
あり |
あり |
ハートビート表ビューを追加するために必要。 各オブジェクトに固有にする場合は、各オブジェクトの権限を個別に指定することもできます。このような権限を維持するために、特定のデータベース・ロールの作成を検討できます。 |
|
あり |
あり |
ロギングの有効化などの管理変更を実行 |
|
あり |
あり |
マルチテナント・アーキテクチャに必要であり、 |
|
あり | あり |
|
|
あり |
あり |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
レルムに適用する場合は、 |
該当なし | あり |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
ターゲット表の |
該当なし |
あり |
レプリケートされたDMLをターゲット・オブジェクトに適用「Oracle DMLのオブジェクトと操作のサポートの詳細」を参照してください |
|
該当なし |
あり |
すべての表をレプリケートする場合は、 |
DDLレプリケーションを実行する場合は、Database Vault所有者として次の権限を付与します:
|
なし | なし |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
ターゲット・オブジェクトのDDL権限(DDLサポートを使用している場合) |
該当なし |
あり |
レプリケートされたDDLをターゲット・オブジェクトに発行Oracle DDLのオブジェクトと操作のサポートの詳細を参照してください。 |
|
あり | あり | 表のDDLレプリケーションの権限を付与。 |
|
あり |
あり |
任意のスキーマで表を作成する権限を付与。特定のスキーマでのみ表を作成できるようにするには、 |
CREATE ANY VIEW |
あり |
あり | 任意のデータベース・スキーマでビューを作成する権限を付与。特定のスキーマでのビューの作成を許可するには、CREATE VIEW 権限を使用します。
|
|
あり |
あり |
ディクショナリ表で適切に機能するためにすべての権限を許可します。 |
例: 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_SYS_PRIVS
パッケージにアクセスできます。
ggadmin
に付与される権限は、次の例に示されています:
例: 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’);
フラッシュバック問合せの設定
特定の更新レコードを処理するために、Extractによってソース・データベースから追加の行データがフェッチされます。
Oracle GoldenGateでフェッチされるデータは次のとおりです。
-
ユーザー定義型
-
ネストされた表
-
XMLTypeオブジェクト
デフォルトでは、Oracle GoldenGateでフラッシュバック問合せを使用してUNDO (ロールバック)表領域から値をフェッチします。そのように、Oracle GoldenGateでは特定の時点またはSCNで読取り一貫性行イメージを再構築し、REDOレコードと一致させることができます。
最適なフェッチ結果を得るには、ソース・データベースを次のように構成します。
Oracle GoldenGateによって、フェッチの管理に次のパラメータが提供されます。
パラメータまたはコマンド | 説明 |
---|---|
|
必要に応じてExtractフェッチ統計を表示します。 |
|
常にフェッチ統計が表示されるように |
|
Extractによってソース・データベースに保持される準備済の問合せおよび |
|
Extractのデフォルトのフェッチ動作(Extractでフラッシュバック問合せを実行するか、現在のイメージを表からフェッチするか)を制御します。 |
|
UNDOの保存期限が切れている場合や、表の構造が変更された場合など、Extractのフラッシュバック問合せの失敗を処理します。Extractは、現在のイメージを表からフェッチするか、失敗を無視するように設定できます。 |
|
フェッチされたデータが含まれる証跡レコード、または列が見つからない証跡レコードの処理時に、Replicatで応答を制御します。 |
サーバー・リソースの管理
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
ソース表とターゲット表での行の一意性の保証
Oracle GoldenGateでは、レプリケートされた更新および削除に対して正しいターゲット行を見つけるために、ソース表とターゲット表に一意の行識別子が必要です。
TABLE
文またはMAP
文で、KEYCOLS
句を使用しない場合には、ロギングされる制約数およびタイプに応じて、Oracle GoldenGateにより、使用される行識別子が次の優先順位で選択されます(「ロギング・プロパティの構成」を参照)。
-
拡張(32K)
VARCHAR2/NVARCHAR2
列が含まれない場合は、主キー。非表示列を含まない主キー。 -
一意キー: 非表示列を含まない一意キー。
非統合Replicatの場合、一意キーの選択は次のとおりです。
-
仮想列、UDT、ファンクション・ベース列、NULL値可能列、および拡張(32K)
VARCHAR2/NVARCHAR2
列がない英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGateGLOBALS
ファイルでALLOWINVISIBLEINDEXKEYS
パラメータを使用する必要があります。 -
仮想列、UDT、拡張(32K)
VARCHAR2/NVARCHAR2
列、ファンクション・ベース列はないが、Null値可能列がある英数字順で最初の一意キー。表示されない索引の一部である列を含むキーをサポートするには、Oracle GoldenGateGLOBALS
ファイルでALLOWINVISIBLEINDEXKEYS
パラメータを使用する必要があります。
-
-
NULL値不可の一意キー: 一意キーの1つ以上の列をNULL値不可にする必要があります。これは、
NOALLOWNULLABLEKEYS
がデフォルトであるためです。ノート:
ALLOWNULLABLEKEYS
は、統合Replicatには無効です。 -
前のどのキー型も存在しない場合(表に定義されているその他のキー型が存在する可能性があっても)、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 GoldenGateは、REDOログを使用して、ソース・トランザクションのレプリケートに必要なデータをキャプチャします。
Oracle GoldenGateの処理を始める前に、Oracle REDOログをソース・システムに適切に構成する必要があります。
この項では、Oracle GoldenGateに適用される次のロギング・レベルについて説明します。使用するロギング・レベルは、使用しているOracle GoldenGate機能によって異なります。
ノート:
この必要なロギングによってREDOの量が増えます。Oracle GoldenGate処理を開始してログが有効化されるまで待つ場合があります。
この表に、様々なロギング・プロパティのOracle GoldenGateユースケースを示します。
ロギング・オプション | コマンド | 機能 | ユースケース |
---|---|---|---|
強制ロギング・モード |
|
すべてのトランザクションおよびロードのロギングを強制します。 |
すべてのOracle GoldenGateユースケースで強くお薦めします。 |
最小のデータベース・レベルのサプリメンタル・ロギング |
|
最小サプリメンタル・ロギングで行連鎖情報をREDOログに追加できるようにします。 |
すべてのOracle GoldenGateユースケースに必要です。 |
スキーマ・レベルのサプリメンタル・ロギング、デフォルト設定 「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照してください。 |
|
主キーの無条件のサプリメンタル・ロギングを有効化し、スキーマのすべての表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。これらのキーは、すべてスケジューリング列と呼ばれます。 |
スキーマの現在および将来のすべての表でロギングを有効化します。主キー、一意キーおよび外部キーの列がソースとターゲットの両方で同じでない場合は、 |
サポートされるすべての列で無条件のロギングを使用したスキーマ・レベルのサプリメンタル・ロギング。(サポートされない列タイプの場合は、「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照してください。) |
|
スキーマのすべての表で、表のすべての列の無条件のサプリメンタル・ロギングを有効化します。 |
双方向およびアクティブ/アクティブ構成で使用され、そこでは更新または削除の実行時に、変更された列だけでなくすべての列値がチェックされます。より多くのリソースが消費されますが、最高レベルのリアルタイム・データ検証と競合検出が可能になります。 この方法は、初期ロードに |
スキーマ・レベルのサプリメンタル・ロギング、最小設定 |
|
スキーマのすべての表の主キーおよび有効なすべての一意索引の無条件のサプリメンタル・ロギングを有効化します。 |
非統合Replicatでのみ使用します。これは、最低限必要なスキーマ・レベルのロギングです。 |
統合Replicatの組込みサポートを使用した表レベルのサプリメンタル・ロギング 「表レベルのサプリメンタル・ロギングの有効化」を参照してください。 |
|
主キーの無条件のサプリメンタル・ロギングを有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを有効化します。これらのキーは、すべてスケジューリング列と呼ばれます。 |
スキーマ・レベルのサプリメンタル・ロギングが使用されていないかぎり、すべてのOracle GoldenGateユースケースで必要です。主キー、一意キーおよび外部キーの列がソースとターゲットの両方で同じでない場合は、 |
サポートされるすべての列で無条件のロギングを使用した表レベルのサプリメンタル・ロギング。(サポートされない列タイプの場合は、「表レベルのサプリメンタル・ロギングの有効化」を参照してください。) |
|
表のすべての列の無条件のサプリメンタル・ロギングを有効化します。 |
双方向およびアクティブ/アクティブ構成で使用され、そこでは更新または削除の実行時に、変更された列だけでなくすべての列値がチェックされます。より多くのリソースが消費されますが、最高レベルのリアルタイム・データ検証と競合検出が可能になります。 ソースおよびターゲットの主キー、一意キーおよび外部キーがソースとターゲット間で同一でないか、定期的に変更される場合にも使用できます。 |
表レベルのサプリメンタル・ロギング、最小設定 |
|
表の主キーおよび有効なすべての一意索引の無条件のサプリメンタル・ロギングを有効化します。 |
非統合Replicatおよび非並列Replicatに使用します。これは、最低限必要な表レベルのロギングです。 |
ノート:
Oracle Databaseは、Extractでログ・ファイルを処理できるように、ARCHIVELOG
モードにする必要があります。
内容は次のとおりです。
サブセット・データベース・レプリケーションのロギングの有効化
Oracleソース・データベースを強制ロギング・モードにすることを強くお薦めします。強制ロギング・モードでは、すべてのトランザクションおよびロードのロギングを強制し、反対にユーザーまたは記憶域の設定をオーバーライドします。これにより、Extract構成のソース・データが失われることがなくなります。
サブセット・データベース・レプリケーションと呼ばれる詳細なデータベース・サプリメンタル・ロギング・モードがあります。これは、すべてのOracle GoldenGateおよびXStreamクライアントの基本的な推奨モードです。これは、以前に使用していた最小サプリメンタル・ロギング・モードにかわるものです。
詳細は、Oracle Database SQL言語リファレンスのALTER DATABASE
を参照してください。
現時点では、サブセット・データベース・レプリケーション・ロギングは、CDB$ROOT
で有効になっています(これは、すべてのユーザーPDBに継承されます)。
ノート:
データベース・レベルの主キー(PK)および一意索引(UI)のロギングは、表のサブセットをレプリケートする場合にかぎり非推奨です。ライブ・スタンバイで使用することも、移行やアップグレードの停止時間を短縮するために、Oracle GoldenGateがすべての表をレプリケートする場合に使用することもできます。
次のステップを実行して、サブセット・データベース・レプリケーション・ロギングと強制ロギングを確認し、必要に応じて有効化します。
SELECT con_id, MINIMAL, SUBSET_REP, PRIMARY_KEY, UNIQUE_INDEX, FOREIGN_KEY, ALL_COLUMN FROM CDB_SUPPLEMENTAL_LOGGING;
YES
になります。SUBSET_REP = YES
SELECT NAME, LOG_MODE, FORCE_LOGGING, SUPPLEMENTAL_LOG_DATA_MIN,
SUPPLEMENTAL_LOG_DATA_PK PK, SUPPLEMENTAL_LOG_DATA_UI UI,
SUPPLEMENTAL_LOG_DATA_FK FK,
SUPPLEMENTAL_LOG_DATA_ALL,
SUPPLEMENTAL_LOG_DATA_SR FROM V$DATABASE;
SUPPLEMENTAL_LOG_DATA_SR
に対する問合せの出力はYES
になり、SUPPLEMENTAL_LOG_DATA_MIN
に対する問合せの出力はIMPLICIT
になります。
-
CDB$ROOT
の以前の上位レベルを削除します。ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS; ALTER DATABASE DROP SUPPLEMENTAL LOG DATA (UNIQUE) COLUMNS; ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;
-
subset database replication
モードのみを追加します。ALTER PLUGGABLE DATABASE pdbname ADD SUPPLEMENTAL LOG DATA SUBSET DATABASE REPLICATION;
-
すべてのPDBが、この
subset database replication
モードを継承していることを確認します。
親トピック: ロギング・プロパティの構成
スキーマ・レベルのサプリメンタル・ロギングの有効化
Oracle GoldenGateでは、スキーマ・レベルのサプリメンタル・ロギングをサポートしています。スキーマ・レベルのロギングは、Oracle GoldenGate DDLレプリケーション機能を使用する場合に、Oracleソース・データベースで必要です。その他すべてのユースケースではオプションですが、表レベルのロギングをかわりに使用する必要があります(「表レベルのサプリメンタル・ロギングの有効化」を参照してください)。
スキーマ・レベルのロギングでは、デフォルトで主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、スキーマのすべての表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。必要に応じて、オプションでロギングを変更できます。
ノート:
ワイルドカード指定を満たす場合に、スキーマに追加される新しい表がキャプチャされるため、表レベルのロギングよりもスキーマ・レベルのロギングを使用することを強くお薦めします。キー列の変更がサプリメンタル・ログ・データにも自動的に反映されるため、この方法もお薦めします。たとえば、キーが変更された場合に、ADD TRANDATA
を発行する必要はありません。
次のステップをソース・システムで実行して、スキーマ・レベルのサプリメンタル・ロギングを有効化します。
親トピック: ロギング・プロパティの構成
表レベルのサプリメンタル・ロギングの有効化
表レベルのサプリメンタル・ロギングは、次の場合にソース・システムで有効化します。
-
スキーマ・レベルのロギングを使用しない場合に、必要なレベルのロギングを有効にする場合(「スキーマ・レベルのサプリメンタル・ロギングの有効化」を参照)。スキーマ・レベルまたは表レベルのロギングを使用する必要があります。表レベルのロギングでは、デフォルトで主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。必要に応じて、オプションでロギングを変更できます。
-
指定した表で主キーのロギングを回避する場合。
-
キー以外の列の値を表レベルで記録し、Oracle GoldenGateの特定の機能(フィルタリング、競合検出および解決ロジックなど)をサポートする場合。
-
表レベルのサプリメンタル・ロギングのみを持つ表でキー列が変更された場合は、表に対するDMLアクティビティを許可する前に、その表に対して
ADD TRANDATA
を実行する必要があります。
次のステップをソース・システムで実行して、表レベルのサプリメンタル・ロギングを有効化するか、コマンドのオプションの機能を使用します。
-
ソース・システムでコマンドラインを実行します。
-
資格証明ストア内の、表レベルのサプリメンタル・ロギングを有効にする権限を持つユーザーの別名を使用して
DBLOGIN
コマンドを発行します。DBLOGIN USERIDALIAS alias
DBLOGIN
およびその他のオプションの詳細は、Oracle GoldenGateリファレンスのUSERIDALIAS
を参照してください。 -
ADD TRANDATA
コマンドを発行します。ADD TRANDATA [PDB.]schema.table [, COLS (columns)] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]
説明:
-
PDB
は、表がマルチテナント・コンテナ・データベースにある場合、ルート・コンテナまたはプラガブル・データベースの名前です。 -
schema
は、表を含むソース・スキーマです。 -
table
は、表の名前です。オブジェクト名を指定する際の手順は、『Oracle GoldenGateの管理』のOracle GoldenGateの入力におけるオブジェクト名の指定に関する項を参照してください。 -
ADD TRANDATA
で他のオプションを指定しない場合は、主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。デフォルトは、非統合Replicat (NOSCHEDULINGCOLS
も参照)をオプションでサポートしますが、依存関係を計算するために、主キー、一意キーおよび外部キーをすべてインバウンド・サーバーで使用できるようにする必要があるため、統合Replicatをサポートする必要があります。統合Replicatの詳細は、「使用する適用方法の決定」を参照してください。 -
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
列を記録する必要があります。
-
-
ADD TRANDATA
にCOLS
オプションを使用する場合、ターゲットでそれらの列に一意の索引を作成して行の取得を最適化します。KEYCOLS
句の代替キーとしてこれらの列を記録する場合は、Oracle GoldenGateプロセスを構成するときにKEYCOLS
句をTABLE
およびMAP
文に追加する必要があります。
親トピック: ロギング・プロパティの構成
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
に対して有効な表のリストを表示します。
DMLおよびDDLに関する考慮事項の詳細は、DML自動取得およびOracle DDLでサポートされているオブジェクトおよび操作を参照してください。
詳細は、この記事Oracle GoldenGate 21c: 表の自動取得も参照してください。
データベース用の追加のOracle GoldenGate構成
内容は次のとおりです。
- Oracle順序のサポートのインストール
Oracle順序をサポートするには、いくつかのデータベース・プロシージャをインストールする必要があります。 - 他のデータベース・プロパティの処理
この項では、Oracle GoldenGateに影響する可能性のあるデータベース・プロパティと、その状態の解決または回避に使用できるパラメータについて説明します。
Oracle順序のサポートのインストール
Oracle順序をサポートするには、いくつかのデータベース・プロシージャをインストールする必要があります。
Oracle順序オブジェクトのインストール手順
-
SQL*Plusで、
SYSDBA
としてソースおよびターゲットのOracleシステムに接続します。 -
Oracle GoldenGate DDLレプリケーション機能をサポートするデータベース・ユーザーがすでに割り当てられている場合は、このステップをスキップできます。そうでない場合は、両方のシステムのSQL*Plusで、DDLユーザーでもあるデータベース・ユーザーを作成します。
CREATE USER
DDLuser
IDENTIFIED BYpassword
; GRANT CONNECT, RESOURCE, DBA TODDLuser
; -
各システムのOracle GoldenGateインストール・ディレクトリからGGSCIを実行します。
-
GGSCIで、次のコマンドを各システムで発行します。
EDIT PARAMS ./GLOBALS
-
各
GLOBALS
ファイルにGGSCHEMA
パラメータを入力し、この手順の前の部分で作成したDDLユーザーのスキーマを指定します。GGSCHEMA
schema
-
ファイルを保存し、閉じます。
-
ソース・システムのSQL*Plusで、次の文を発行します。
ALTER TABLE sys.seq$ ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
マルチテナント・データベースから順序をキャプチャする方法
-
順序のキャプチャ元となる各PDBにOracle GoldenGateユーザーを作成します。
-
ユーザーをGLOBALSパラメータ・ファイルに追加します。各PDBに同じユーザーを使用する方が簡単です。そうしない場合、ステップ3を実行するたびにGLOBALSファイルを変更する必要があります。
-
Admin ClientまたはGGSCIにログインします。
-
DBLOGIN
を使用して、ソースのルート・コンテナに接続します。 -
各PDBに対して
FLUSH SEQUENCE
コマンドを発行します。
これらのデータベース・アカウントを保持しない場合は、ユーザーを削除するか、アカウントを非アクティブ化できます。
プロセス全体の例を次に示します。
Environment information
OGG 19.1 Oracle 12c to Oracle 12c Replication, Integrated
Extract, Parallel Replicat
Source: CDB GOLD, PDB CERTMISSN
Target: CDB PLAT, PDB CERTDSQ
Source Oracle GoldenGate Configuration
Container User: C##GGADMIN
PDB User for Sequences: GGATE
プロンプトが表示されたら、GGATE
を入力します
GLOBALS
GGSCHEMA GGATE
Flush Sequence
GGSCI> DBLOGIN USERIDALIAS GGADMIN DOMAIN GOLD_QC_CDB$ROOT
GGSCI> FLUSH SEQUENCE CERTMISSN.SRCSCHEMA1.
Target OGG Configuration
PDB User: GGATE
Run @sequence
sqlplus / as sysdba
SQL> alter session set container=CERTDSQ;
SQL> @sequence
プロンプトが表示されたら、GGATE
を入力します
-
移行の場合は、スイッチオーバー中にターゲット上の順序を再構築するか、スイッチオーバーの直前に値を大きくする必要があります。
-
順序を独自のReplicatに配置してください。
他のデータベース・プロパティの処理
この項では、Oracle GoldenGateに影響する可能性のあるデータベース・プロパティと、その状態の解決または回避に使用できるパラメータについて説明します。
次の表でリストされるのは、データベース・プロパティおよび関連する問題点/解決策です。
データベース・プロパティ | 問題点/解決策 |
---|---|
時間隔パーティション化がある表 |
時間隔パーティション化がある表をサポートするには、 |
仮想列のある表 |
仮想列は記録されません。また、Oracleで仮想列に対するDMLは許可されません。ただし、次のようにして、このデータをキャプチャし、仮想列ではないターゲット列にマップできます。 Extractの Replicatの |
本質的に更新可能なビューを持つ表 |
本質的に更新可能なビューにレプリケートするには、関連付けの対象のソース表とターゲット表をマップする |
異なる場所にあるREDOログまたはアーカイブ |
|
|
|
順序 |
順序のDDL( 順序値のみをレプリケートするには、Extractパラメータ・ファイルで |