Oracle
この項では、Oracle GoldenGate for Oracleの構成の詳細を示します。
- データベース・ユーザーおよび権限の準備
- データベース接続、システムおよびパラメータ設定の準備
- Oracle GoldenGateからOracle Databaseへのセキュアな接続の構成
- ロギング・プロパティの構成
- Oracle: DDLおよびDMLに対してサポートされているデータ型、オブジェクトおよび操作
親トピック: 構成
データベース・ユーザーおよび権限の準備
データベース・ユーザーの作成およびOracle GoldenGate for Oracleの権限の割当てについて学習します。
Oracle Database 21c以前のユーザー権限の付与
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以降では、
|
|
はい |
はい |
共通ユーザー Oracleマルチテナント・データベースの共通ユーザーに付与される権限の例を参照してください。 |
|
はい |
はい |
データベースへの接続に必要です。 |
|
はい |
はい |
ハートビート表ビューを追加するために必要です。 各オブジェクトに固有にする場合は、各オブジェクトの権限を個別に指定することもできます。このような権限を維持するために、特定のデータベース・ロールの作成を検討できます。 |
|
はい |
はい |
ロギングの有効化などの管理変更を実行 |
|
はい |
はい |
マルチテナント・アーキテクチャに必要であり、 |
|
はい | はい |
|
|
はい |
はい |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
レルムに適用する場合は、 |
NA | はい |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
ターゲット表の |
NA |
はい |
レプリケートされたDMLをターゲット・オブジェクトに適用「Oracle DMLのオブジェクトと操作のサポートの詳細」を参照してください |
|
NA |
はい |
すべての表をレプリケートする場合は、 |
DDLレプリケーションを実行する場合は、次の権限をDatabase Vault所有者として付与してください:
|
いいえ | いいえ |
Data Vaultからキャプチャ「Oracle Data Vaultからキャプチャするための権限」を参照してください。 |
ターゲット・オブジェクトのDDL権限(DDLサポートを使用している場合) |
NA |
はい |
レプリケートされた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は必要な権限を追加で付与する必要があります。
PDBユーザーggadmin
に付与される権限は、次の例に示します:
ALTER SESSION SET CONTAINER=dbwest;
CREATE USER ggadmin IDENTIFIED BY PASSWORD CONTAINER=CURRENT;
GRANT CONNECT, RESOURCE, DBA TO ggadmin CONTAINER=CURRENT;
GRANT CREATE SESSION TO ggadmin CONTAINER=CURRENT;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('ggadmin');
ノート:
DBAロールの付与は、すべてのユーザーに必須なわけではありません。権限は、ユーザーがデータベースで実行する必要がある操作に応じて付与する必要があります。たとえば、トランザクションを挿入、更新および削除するDML操作権限をggadminに付与するには、GRANT ANY INSERT/UPDATE/DELETE
権限を使用し、さらに、DML操作の一部として表および索引を操作することをユーザーに許可するには、GRANT CREATE/DROP/ALTER ANY TABLE/INDEX
権限を使用します。
例: 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’);
データベース接続、システムおよびパラメータ設定の準備
Oracle GoldenGate for Oracleのデータベース接続、システムおよびパラメータ設定の構成について学習します。
- Oracle GoldenGate for Oracleの有効化
- フラッシュバック問合せの設定
- 他のデータベース・プロパティの処理
- マルチテナント・コンテナ・データベースの構成
- Extractの自動キャプチャ・モードの構成
- サーバー・リソースの管理
- ソース表とターゲット表での行の一意性の確保
- Oracle順序のサポート
親トピック: Oracle
Oracle GoldenGate for Oracleの有効化
Oracle GoldenGateキャプチャおよび適用をサポートするために必要なデータベース・サービスは、すべてのOracleデータベース・バージョンで明示的に有効化する必要があります。これは、ExtractおよびすべてのReplicatモードに必要です。
Oracle GoldenGateを有効化するには、次のデータベース初期化パラメータを設定します。Oracle RACのすべてのインスタンスで同じ設定にする必要があります。
ENABLE_GOLDENGATE_REPLICATION=true
このパラメータは、DBA_FEATURE_USAGE_STATISTICS
ビューを変更します。このパラメータの詳細は、初期化パラメータに関する項を参照してください。
親トピック: データベース接続、システムおよびパラメータ設定の準備
フラッシュバック問合せの設定
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とOracle Databaseを使用すると、各プラガブル・データベース(PDB)で、特定のPDBにExtractを登録でき、これらはPDBごとのExtractと呼ばれます。
次の図は、マルチテナント・コンテナ・データベース構成における様々なアプローチの構成を示しています:
-
アプローチ1: PDBから直接Extractを追加します。このアプローチは、Extractが分離されたPDBからキャプチャし、PDBレベルで所有権および責任を管理する場合に役立ちます。
-
アプローチ2: ルート・コンテナにExtractを追加し、関連付けられたPDBを参照します。このアプローチは、Extractが複数のPDBからデータをキャプチャする場合に便利です。
アプローチ1を使用する場合は、ローカルPDBユーザー(ggadmin
など)として接続してPDBごとのExtractを作成し、このExtractをPDBに登録できます。PDBユーザーとしてすでにログインしているため、container
句は必要ありません。同様に、SOURCECATALOG
および2つの部分からなる命名規則も適切です。
c##ggadmin
を使用してルート・コンテナに接続し、特定のPDBに対してExtractを作成できます。このExtractは、container句を使用して特定のPDBに登録する必要があります。container句には、1つまたは複数のPDBを含めることができます。
ノート:
ルートレベルのExtractを使用する場合でも、キャプチャする必要があるPDBごとにユーザー資格証明が必要です。ハートビート表も個々のPDBに存在します。Extractを設定するには、「プライマリExtractの追加」を参照してください。
マルチテナント・コンテナ・データベース構成に関する考慮事項
Oracle GoldenGateを使用してデータ・レプリケーション用にマルチテナント・コンテナ・データベースを構成する場合は、次のガイドラインを考慮してください:
-
マルチテナント・コンテナ・データベース内の異なるプラガブル・データベースが異なる文字セットを持つことができます。Oracle GoldenGateは、異なる文字セットを持つマルチテナント・データベースから、1つの証跡ファイルにデータをキャプチャして、データをレプリケートしますが、異なる文字セットの使用によってデータは破損しません。
-
PDBごとのExtractを作成して登録するには、PDBレベルのアクセス用に作成された
ggadmin
などのPDBユーザーに接続する必要があります。USERIDALIAS
パラメータを使用して、ggadmin@pdbeast
などのSQL*Net接続文字列を構成します。PDBごとのExtractを設定するためにコンテナ句またはSOURCECATALOG
は必要ありません。 -
ルート・コンテナのユーザーを追加するには、ログマイニング・サーバーと対話するために、Extractが共通ユーザーとしてルート・コンテナ(
cdb$root
)に接続する必要があります。ルート・コンテナを指定するには、USERIDALIAS
パラメータで指定するデータベース・ユーザーに適切なSQL*Net接続文字列を使用します(c##ggadmin@dbeast
など)。 -
ソースCDB 12.2をサポートするためには、Extractで証跡形式としてリリース12.3を指定する必要があります。REDOログ内の変更により、Oracle 12.2以上のマルチテナント・データベースからキャプチャするには、証跡フォーマット・リリースが12.3以上である必要があります。
-
DDLレプリケーションはマルチテナント・データベースの通常のレプリケーションとして機能します。
Oracle GoldenGate資格証明にマルチテナント・コンテナ・データベース・ユーザーを追加するには、「データベース資格証明の追加」を参照してください。構成する必要があるOracleデータベース・インストールに応じて、「Oracle Database 21c以前のユーザー権限の付与」を参照してください。
マルチテナント・コンテナ・データベースのフラッシュ順序
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}.
-
GLOBALS
ファイルには、プロシージャをインストールするスキーマを指定するGGSCHEMA
パラメータが含まれている必要があります。このユーザーは、CONNECT
、RESOURCE
およびDBA
権限を持っている必要があります。 -
FLUSH SEQUENCE
を使用する前に、updateSequence
プロシージャでEXECUTE
権限を持つデータベース・ユーザーとして、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 / as sysdba
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 / as sysdba
ALTER SESSION SET CONTAINER=DBEAST;
@sequence.sql
GGADMIN GLOBALS
GGSCHEMA GGADMIN
FLUSH SEQUENCE
コマンドを実行します:DBLOGIN USERIDALIAS ggeast DOMAIN OracleGoldenGate
FLUSH SEQUENCE DBEAST.HR.*
sqlplus / as sysdba
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はターゲット・データベース内のインバウンド・サーバーと対話します。この項では、これらのサーバーで消費される共有メモリーを管理するためのガイドラインについて説明します。
サーバーで使用される共有メモリーは、データベースのシステム・グローバル領域(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
親トピック: データベース接続、システムおよびパラメータ設定の準備
ソース表とターゲット表での行の一意性の確保
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順序のサポート
Oracle順序をサポートするには、いくつかのデータベース・プロシージャをインストールする必要があります。
SQLプロンプトから、ソース・データベースおよびターゲット・データベースでDBAとしてスクリプト$OGG_HOME/lib/SQL/legacy/sequence.SQL
を実行します。
コンテナ・データベース(CDB)で、プラガブル・データベース(PDB)のDBA権限を持つローカル・ユーザーとして接続します。
CDBではない場合は、データベースのDBAとして接続します。
Oracle GoldenGate管理ユーザーには、必ずしもDBA権限は必要ありません。ただし、Oracle GoldenGate管理ユーザーには、Oracle Database 23c以上の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
親トピック: データベース接続、システムおよびパラメータ設定の準備
Oracle GoldenGateからOracle Databaseへのセキュアな接続の構成
-
ExtractおよびReplicatパラメータ・ファイルにUSERIDALIASオプションを含めます
-
Bequeath接続を設定します
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
ロギング・プロパティの構成
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
サブセット・データベース・レプリケーションのロギングの有効化
Oracleソース・データベースを強制ロギング・モードにすることを強くお薦めします。強制ロギング・モードでは、すべてのトランザクションおよびロードのロギングを強制し、反対にユーザーまたは記憶域の設定をオーバーライドします。これにより、Extract構成のソース・データが失われることがなくなります。
サブセット・データベース・レプリケーションと呼ばれる詳細なデータベース・サプリメンタル・ロギング・モードがあります。これは、すべてのOracle GoldenGateおよびXStreamクライアントの基本的な推奨モードです。これは、以前に使用していた最小サプリメンタル・ロギング・モードにかわるものです。
詳細は、Oracle Database SQL言語リファレンスのALTER DATABASE
を参照してください。
現時点では、サブセット・データベース・レプリケーション・ロギングは、CDB$ROOT
で有効になっています(これは、すべてのユーザーPDBに継承されます)。
ノート:
データベース・レベルの主キー(PK)および一意索引(UI)のロギングは、表のサブセットをレプリケートする場合にかぎり非推奨です。ライブ・スタンバイで使用することも、移行やアップグレードの停止時間を短縮するために、Oracle GoldenGateがすべての表をレプリケートする場合に使用することもできます。
次のステップを実行して、サブセット・データベース・レプリケーション・ロギングと強制ロギングを確認し、必要に応じて有効化します。
親トピック: ロギング・プロパティの構成
スキーマ・レベルのサプリメンタル・ロギングの有効化
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の入力におけるオブジェクト名の指定」を参照してください。 -
ADD TRANDATA
で他のオプションを指定しない場合は、主キーの無条件のサプリメンタル・ロギングを自動的に有効化し、表の一意キーおよび外部キーの条件付きのサプリメンタル・ロギングを自動的に有効化します。無条件ロギングでは、主キーの値を、キーが現在の操作で変更されたかどうかにかかわらず、強制的にログに記録します。条件付きロギングは、外部キーまたは一意キーの列のすべての値を、それらのうちの少なくとも1つが現在の操作で変更された場合に、ログに記録します。デフォルトは、非統合Replicat (NOSCHEDULINGCOLS
も参照)をオプションでサポートしますが、依存関係を計算するために、主キー、一意キーおよび外部キーをすべてインバウンド・サーバーで使用できるようにする必要があるため、統合Replicatをサポートする必要があります。統合Replicatの詳細は、unresolvable-reference.html#GUID-6635228F-F992-4DAE-AD5E-0BE5A36542CCを参照してください。 -
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
文に追加する必要があります。
親トピック: ロギング・プロパティの構成
表レベルのサプリメンタル・ロギングの削除
表をOracle GoldenGateで取得する必要がなくなり、表のTABLE
パラメータがExtractパラメータ・ファイルから削除されているか、またはTABLEEXCLUDE
を使用してワイルドカード文から表を除外している場合、サプリメンタル・ロギングを表から削除できます。
ノート:
Extractで、サプリメンタル・ロギングが有効になっていない表を解決すると、DML操作のタイプによっては異常終了します。
DELETE TRANDATA
を使用してサプリメンタル・ロギングを削除すると、Replicatの表のIDENTITYレベルはNOTHING
に設定されます。サプリメンタル・ロギングは、Microservices Architecture Webインタフェースを使用して、「管理サービス」、「構成」ページから、ソース・データベースに対して作成された「資格証明」で無効にするか、DELETE TRANDATA
コマンドを使用して発行できます。
次に、DELETE TRANDATA
を発行する構文を示します。
DBLOGIN USERIDALIAS alias_name
DELETE TRANDATA schema.tablename
サプリメンタル・ロギングのレベルをチェックするには、次のようにします。
INFO TRANDATA schema.tablename
親トピック: ロギング・プロパティの構成