OCI GoldenGate(OCI GG) で BaseDB 19c から ADW-S にレプリケーションしてみる。(Oracle Cloud Infrastructure)

以前にも似たような記事を書いているんですが、あれから OCI GoldenGate(以下、OCI GG)もアップデートされてUI等が変更されてたりするので、その整理も兼ねて改めて書いてみますやで。
彡(ﾟ)(ﾟ)

# 1. 参考にした記事＆マニュアル

以前書いた記事とOCIチュートリアル401とマニュアルを参考にしています。やっている事はOCIチュートリアル401と同じなのですが、本記事では OCI GG で新たに必要になった OCI Secret作成、BaseDB の CDB/PDB接続 や ハートビート表の動作確認などを加味して記載しています。

https://qiita.com/ora_gonsuke777/items/0b7d7585e54c808ab55e

https://oracle-japan.github.io/ocitutorials/adb/adb401-oci-goldengate/

> Oracle GoldenGate Microservicesアーキテクチャを使用してのステップ・バイ・ステップ・データ・レプリケーション 21c
> 1.1 Oracle GoldenGate Microservices Architectureによるデータ・レプリケーションの設定
> https://docs.oracle.com/cd/F51462_01/ggmas/quickstart-your-data-replication-oracle-goldengate-microservices-architecture.html#GUID-FAAAFDB1-FF77-4EF5-A85C-3FBBB832CCD1

# 2. 構成図

Private Subnet に BaseDB, ADW-S, OCI GoldenGate を作成して BaseDB 19c → ADW-S にレプリケーションします。

![OCIGG2_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/642a1624-3371-2642-4881-8e5aabf67547.png)

これらの構成に必要な コンパートメント/VCN/Subnet/BaseDB/ADW-S等は作成済みのものとします。
伝播対象のDBユーザーやテーブルも予め作成しておきます。Source DB(PDB) と Target DB(ADW-S) の両方に作成しておきます。

```sql
CREATE TABLE AYSHIBAT.TEST_TBL01 (
    ID   NUMBER
  , NAME VARCHAR2(20)
);

ALTER TABLE AYSHIBAT.TEST_TBL01 ADD CONSTRAINT TEST_TBL01_PK PRIMARY KEY(ID) USING INDEX;
```

# 3. データベースの設定(ユーザー作成、権限付与、パラメータ変更など)

下記のマニュアルに従って OCI GG用 の DBユーザー を作成＆権限付与します。

> Oracle DatabaseでのOracle GoldenGateの使用 21c (21.3.0)
> 3.1.1.1 適切なユーザー権限の付与
> https://docs.oracle.com/cd/F51462_01/oracle-db/establishing-oracle-goldengate-credentials.html#GUID-F9EBB989-E22F-4355-BE60-40F957B8515E

下記のパラメータ(ENABLE_GOLDENGATE_REPLICATION)も Source/Target の両方で TRUE に変更します。

> Oracle Database データベース・リファレンス 19c
> 1.119 ENABLE_GOLDENGATE_REPLICATION
> https://docs.oracle.com/cd/F19136_01/refrn/ENABLE_GOLDENGATE_REPLICATION.html#GUID-600FC071-1516-49B2-B3B3-C1C5430C5917

* Source側(BaseDB, CDB$ROOT) の共通ユーザー(C##～)作成、権限付与、パラメータ変更、サプリメンタル・ロギング設定

```sql
CREATE USER C##GGADMIN IDENTIFIED BY xxxxxxxxxx
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

GRANT CREATE SESSION         TO C##GGADMIN CONTAINER = ALL;
GRANT RESOURCE               TO C##GGADMIN CONTAINER = ALL;
GRANT ALTER SYSTEM           TO C##GGADMIN CONTAINER = ALL;
GRANT ALTER USER             TO C##GGADMIN CONTAINER = ALL;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('C##GGADMIN', container => 'ALL');
GRANT SELECT ANY DICTIONARY  TO C##GGADMIN CONTAINER = ALL;
GRANT SELECT ANY TRANSACTION TO C##GGADMIN CONTAINER = ALL;

-- For User Objects
GRANT DBA TO C##GGADMIN CONTAINER = ALL;
GRANT UNLIMITED TABLESPACE TO C##GGADMIN CONTAINER = ALL;

-- DB Setting
ALTER SYSTEM SET enable_goldengate_replication = TRUE SCOPE=BOTH SID='*';
ALTER DATABASE FORCE LOGGING;
-- 19c以降のサプリメンタル・ロギング有効化
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA SUBSET DATABASE REPLICATION;
-- 19cより前のサプリメンタル・ロギング有効化
-- ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
```

サプリメンタル・ロギングの「～ SUBSET DATABASE REPLICATION;」は 19c の新機能です。下記マニュアルを参照して下さい。

> Oracle Database データベース新機能ガイド 19c
> 粒度の高いサプリメンタル・ロギング
> https://docs.oracle.com/cd/F19136_01/newft/new-features.html#GUID-1466A888-5F47-41BA-AF7D-9A4B30F5F8D2

* Source側(BaseDB, PDB) の GG用ユーザー(GGADMIN)作成、権限付与

```sql
CREATE USER GGADMIN IDENTIFIED BY xxxxxxxxxx
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

-- For GG
GRANT CREATE SESSION TO GGADMIN CONTAINER=CURRENT;
GRANT ALTER ANY TABLE TO GGADMIN CONTAINER=CURRENT;
GRANT RESOURCE TO GGADMIN CONTAINER=CURRENT;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('GGADMIN');

-- For User Objects
GRANT DBA TO GGADMIN CONTAINER=CURRENT;
GRANT UNLIMITED TABLESPACE TO GGADMIN CONTAINER = CURRENT;
```

* Target側(ADW-S) の設定
Autonomous Database の場合は事前定義ユーザーの GGADMIN のアカウントロック解除＋パスワード設定を行います。

```sql
CONNECT ADMIN/xxxxxxxx@(description=～;
ALTER USER GGADMIN ACCOUNT UNLOCK;
ALTER USER GGADMIN IDENTIFIED BY xxxxxxxx;
```

ADB の場合は GUI でもアカウントロックを解除可能です。下記記事を参照して下さい。

https://oracle-japan.github.io/ocitutorials/database/adb401-oci-goldengate/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/81478ae7-c5c2-dd14-ac55-2ec87f07355c.png)


# 4. OCI Key-Management(旧OCI Vault)の暗号化キー作成

新規にデプロイする OCI GG Deployment のパスワードについて、OCI Key-Management(旧OCI Vault)に格納されたシークレットを使用することが必要になりました。
前準備として OCI Key-Management の暗号化キーを事前に準備しておきます。

まず OCI Key-Management の Vault を作成します。
![OCIGG2_003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/573d855f-4553-f9e2-137b-ebe0deaa2aeb.png)

次に暗号化キー(パスワードを暗号化するための鍵)を作成します。HSM は非常に高価なのでソフトウェアキーで作成しましょう……。
![OCIGG2_004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/b35803b7-2d91-c284-ded4-5cd2d896fc5f.png)

現時点で OCI GG で使用する暗号化キーのアルゴリズムは AES のみが使用可能です。下記マニュアルを参照してください。

> Create a deployment
> https://docs.oracle.com/en/cloud/paas/goldengate-service/llyhq/index.html#GUID-899C1348-58CA-43EE-B775-EAD3B365A7A9
> Note:Only AES keys, Software protected keys, and HSM keys are supported. RSA and ECDSA keys are not supported for GoldenGate password secret keys.

# 5. OCI GG Deproyment の作成

OCI Console の 左上のハンバーガーボタン ⇒ Oracle Database ⇒ GoldenGate(右側)と遷移して、Deployments の Create deployment をクリックします。

![OCIGG2_007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/3a34f30c-6891-5d15-4092-0a64668302df.png)
![OCIGG2_008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/6f1c3b71-31e6-323c-b750-6fd5dc663ffa.png)
![OCIGG2_009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/789673c6-c8a3-6d0b-bfe1-4390a2f74ae8.png)


以下のように入力していきます。

| 変数名 | 入力値 |
|-|-|
|Name|任意の文字列を入力|
|Description|任意の説明|
|Compartment|任意のコンパートメントを選択|
|oCPU count|必要なoCPU数 ※後から変更可能です。|
|Subnet|OCI GG をデプロイする VCN Subnet を選択|
|Choose a license type|ライセンス持ち込み以外は License included を選択します。|
|GoldenGate instance name|任意の文字列を入力|
|Administrator usrename|GoldenGate管理ユーザー名を入力、DBユーザーとは異なります。|
|Password secret|GoldenGate管理ユーザーのパスワードを格納したSecretを選択 ※この時点では未作成で選択不可|

パスワードは直接入力が不可になって OCI Secret を選択する方式になっています。
この時点では未作成なので画面右下の「Create password secret」ボタンをクリックします。

![OCIGG2_010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/fa450eb0-a6c4-4e18-c11b-10f40334a50b.png)

Secret は以下のように入力してCreateボタンをクリックします。

| 変数名 | 入力値 |
|-|-|
|Name|任意の文字列を入力|
|Description|任意の説明|
|Compartment|任意のコンパートメントを選択|
|Vault|前述 4. で作成した暗号化キーを保持している OCI Vault を選択|
|Encryption key|前述 4. で作成した暗号化キーを選択、AESのキーのみ利用可能です。|
|User Password, Confirm User Password|GoldenGate管理ユーザー名のパスワードを入力|

Create Deployment画面に戻ってCreateボタンをクリックします。完了すると以下のようになります。
![OCIGG2_011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/821118e0-c8f1-ca9c-ec0d-d844a6514a96.png)

# 6. データベース接続の作成とアサイン＆接続テスト

OCI Console の 左上のハンバーガーボタン ⇒ Oracle Database ⇒ GoldenGate(右側) と遷移して、Connections の Create Connectionボタンをクリックして、BaseDB および ADW-S への接続を作成します。

BaseDB は CDB と PDB をそれぞれ個別にひとつずつ、ADW-S はひとつの合計3つのデータベース接続を作成します。
![OCIGG2_012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/828a5cf3-156e-218b-1de0-e55847f3d211.png)

* BaseDB CDB接続の作成

BaseDB の CDB接続 は下記のとおり入力しています。

| 変数名 | 入力値 |
|-|-|
|Name|任意の文字列を入力|
|Description|任意の説明|
|Compartment|任意のコンパートメントを選択|
|Type|Oracle Database を選択|
|Enter Connection details for Oracle Database|今回は Enter Database Information を選択|
|Database Connection String|SCANアドレス+CDBサービス名の接続文字列を設定します|
|Database username|前述 3. で作成した C##～ユーザーを入力|
|Database user password|C##～ユーザーのパスワードを入力|
|Traffic routing method|BaseDB/ADW/OCIGG を Private Subnet に作成しているので Dedicated endpoint を選択|
|Session mode|今回作成した BaseDB は RAC のため Redirect を選択|

![OCIGG2_013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/9ee9c2d4-f805-22cb-4a2e-0d2f549e2a3d.png)
![OCIGG2_014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/9a3a529d-3fbc-6933-ff68-b643858b333d.png)

* BaseDB PDB接続の作成

BaseDB の PDB接続 は下記のとおり入力しています。

| 変数名 | 入力値 |
|-|-|
|Name|任意の文字列を入力|
|Description|任意の説明|
|Compartment|任意のコンパートメントを選択|
|Type|Oracle Database を選択|
|Enter Connection details for Oracle Database|今回は Enter Database Information を選択|
|Database Connection String|SCANアドレス+PDBサービス名の接続文字列を設定します|
|Database username|前述 3. で作成した GGADMIN を入力|
|Database user password|前述 3. で作成した PDB の GGADMIN のパスワードを入力|
|Traffic routing method|BaseDB/ADW/OCIGG を Private Subnet に作成しているので Dedicated endpoint を選択|
|Session mode|今回作成した BaseDB は RAC のため Redirect を選択|

![OCIGG2_049.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/76161f52-a6e5-d1d8-9f9e-2f103eca682b.png)
![OCIGG2_050.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/d47e632a-adbd-a9a2-5831-68072e75c9c7.png)

* ADW-S接続の作成

ADW-S(Autonomous Database Warehourse)は下記のとおり入力しています。今回の ADW-S は Private Endpoint で作成しているため、通常の Oracle Database相当の接続設定としています。

| 変数名 | 入力値 |
|-|-|
|Name|任意の文字列を入力|
|Description|任意の説明|
|Compartment|任意のコンパートメントを選択|
|Type|Oracle Database を選択|
|Enter Connection details for Oracle Database|今回は Enter Database Information を選択|
|Database Connection String|ADW-SのTLS(※1521ポート)接続文字列を設定します。ADW-Sの事前定義DBサービスはlowサービスを選択します。|
|Database username|前述 3. でロック解除した GGADMIN を入力|
|Database user password|前述 3. で設定した GGADMINユーザーのパスワードを入力|
|Traffic routing method|BaseDB/ADW/OCIGG を Private Subnet に作成しているので Dedicated endpoint を選択|
|Session mode|Private Subnet に作成した ADW-S のエンドポイントは Single のため Direct を選択|
|Subnet|Private Subnetを選択|
|Database node IP|無し|

![OCIGG2_023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/d4845178-7669-c778-268e-b3319b1b112d.png)
![OCIGG2_024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/c7ca25f5-6aca-96d6-9c26-9db2c8460aa4.png)

作成したデータベース接続を OCI GG Deployment にアサインします。

![OCIGG2_015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/85a827dc-1b0b-cbe9-8b22-24323dec9be7.png)
![OCIGG2_016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/ad420fbd-1ef1-887f-d9de-4cebb18d98ca.png)

データベース接続のアサイン完了後に Deployment にアサインした接続をテストします。

![OCIGG2_019.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/adc37b6b-8b7d-946b-7e71-b0bc79d4b4fa.png)
![OCIGG2_020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/0a369290-89aa-3e24-4f1d-509c0ae1d17b.png)

Test Connection で successful が出ていればデータベース接続の作成とアサインは完了です。
BaseDB 19c の CDB と PDB、ADW-S で合計3つのデータベース接続が作成＆アサインされた状態です。

![OCIGG2_025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/d3705675-c44e-1317-8718-e7ec8fcaf31f.png)

各データベース接続の接続先, 接続ユーザー, 用途は以下の通りです。

| データベース接続(接続先) | 接続ユーザー | 用途 |
|-|-|-|
|BaseDB CDB|C##GGADMIN|Extractで使用|
|BaseDB PDB|GGADMIN|スキーマ or 表単位の ADD TRANDATA, ハートビート表(Source側)作成で使用|
|ADW-S|GGADMIN|ハートビート表(Target側)作成、チェックポイント表作成、Replicatで使用|

# 7. Oracle GoldenGate管理サービス・コンソールへの接続 と コンソールからのデータベース接続確認

OCI GG Deployment のトップ画面からOracle GoldenGate管理サービス・コンソールに接続します。

今回は Private Subnet に OCI GG Deployment を作成しており、手元のPCからの直接接続は不可だったため、Compute に SSH接続して SSHポートフォワードで管理サービス・コンソールに接続しています。

![OCIGG2_026.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/f523958e-8195-c691-62b2-f6f05ab7506d.png)
![OCIGG2_027.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/c34b3231-130c-6102-e29f-62f82213b8de.png)

管理サービス・コンソールのトップ画面から 構成 ⇒ データベース(サブタブ) と遷移して、登録データベースのハンバーガーボタンを押して接続を確認します。BaseDB の CDB, PDB および ADW-S の三つで接続できることを確認します。

![OCIGG2_028.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/659ae75f-b499-36f3-24e2-e10c559e7a17.png)

接続が成功すると「チェックポイント」「TRANDATA情報」「ハートビート」といった項目が表示されます。

# 8. スキーマ単位 または 表単位 のサプリメンタル・ロギング設定(Source DB の PDB のみ)

管理サービス・コンソールのトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source DB(PDB) のハンバーガーボタンと遷移して Source DB(BaseDB) の PDB に接続します。

今回はAYSHIBATスキーマに対してサプリメンタル・ロギングを有効化します。
スキーマ名に AYSHIBAT を入力して発行ボタンをクリックします。

![OCIGG2_029.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/a45eaeff-6216-9e17-6999-df972724b7e0.png)

実行後にTRANDATA情報を検索すると、以下のようにTRANDATAが設定されていることを確認できます。

![OCIGG2_030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/23d601be-353b-51e4-6e11-401884930f82.png)

下記マニュアルも参照して下さい。

> Oracle GoldenGate Microservicesアーキテクチャを使用してのステップ・バイ・ステップ・データ・レプリケーション
> 4.4 Extractを作成する前に
> https://docs.oracle.com/cd/F44199_01/ggmas/working-data-replications.html#GUID-C3B8B4EE-B13F-43BF-AE94-CFCB01B26F60

# 9. チェックポイント表の作成(Target DB のみ)

チェックポイント表は Replicat がレプリケーションの進行状況を記録するための GoldenGate内部表 です。

管理サービス・コンソールのトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Target(ADW-S) のハンバーガーボタンと遷移して Targetデータベース(ADW-S)に接続します。

チェックポイントからチェックポイント表の作成を発行します。
チェックポイント表の名前はGG用DBユーザーのユーザー名(ADBの場合はGGADMIN).チェックポイント表名の形式で入力してください。

![OCIGG2_031.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/d155f1cb-65bd-4b09-cfd6-237c1a9cf404.png)

チェックポイント表の作成に成功すると、以下のように作成されたチェックポイント表が表示されます。

![OCIGG2_032.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/7f669a28-b92d-4cea-60a7-82b72d2a4b16.png)

下記マニュアルも参照して下さい。

> Oracle GoldenGate Microservicesアーキテクチャを使用してのステップ・バイ・ステップ・データ・レプリケーション
> 3.6 Replicatを作成する前に
> https://docs.oracle.com/cd/F44199_01/ggmas/working-data-replications.html#GUID-498DD0DD-25DD-4578-92B6-F3A41E3AE6AB

# 10. ハートビート表の作成(Source DB(PDB) と Target両方)

ハートビート表は GoldenGate の伝播状況、特にラグ(伝播遅延)を確認するのに極めて有益な情報となります。

> 17.4 自動ハートビート表を使用した監視
> https://docs.oracle.com/cd/F51462_01/admin/monitoring-oracle-goldengate-processing.html#GUID-59E61274-BDDE-4D4B-9681-ED0BC39E9FCF

管理サービス・コンソールのトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source DB(PDB) のハンバーガーボタンと遷移して Source DB(BaseDB) の PDB に接続します。

ハートビートからハートビート表の更新頻度、保存期間、パージ頻度を設定して発行ボタンをクリックします。この時に Target Only のチェックは解除して下さい。

![OCIGG2_033.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/092107f2-6023-9751-7f75-ab9daf2f7b6f.png)

次に管理サービス・コンソールのトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Target DB のハンバーガーボタンと遷移して Target DB(ADW-S) に接続します。

ハートビートからハートビート表の保存期間、パージ頻度を設定して発行ボタンをクリックします。この時に Target Only のチェックは設定しておいて下さい。

![OCIGG2_034.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/f2b21f42-163c-eb14-03c7-7a70f69fa520.png)

# 11. GLOBALSパラメータ編集

管理サービス・コンソールのトップ画面から 構成 ⇒ パラメータ・ファイル(サブタブ) ⇒ GLOBALS の編集ボタンと遷移して GLOBALSパラメータを以下のように編集します。

```sql
ggschema <Source DB(PDB) の GG用ユーザー>
CRYPTOENGINE FIPS140
checkpointtable <Target DB のGG用DBユーザー名>.<チェックポイント表名>
```

今回は以下のように設定しています。

```sql
ggschema GGADMIN
CRYPTOENGINE FIPS140
checkpointtable GGADMIN.OCIGGCKPT
```

![OCIGG2_045.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/7bda2817-146b-c305-f6fd-30cfc5b20206.png)

# 12. Extract の作成

管理サービス・コンソールのトップ画面から Extract を作成します。Extract の +ボタン をクリックします。

![OCIGG2_035.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/b8038344-ea68-ca93-5539-c1f842f20d9b.png)

統合Extract を選択して次へをクリックします。

![OCIGG2_036.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/df5b23ac-af62-fa77-3bcb-745f9cf8e134.png)

| 変数名 | 入力値 |
|-|-|
|プロセス名|任意の文字列ただし8文字まで、今回は EXT01 を入力|
|トレイル名|2文字のPREFIXを設定、今回は tr を入力|
|資格証明ドメイン|OracleGoldenGate を選択|
|資格証明別名|Source DB の CDB の Alias を選択|
|PDBに登録|資格証明を選択後に入力できます。伝播対象表が有る PDB を選択|

![OCIGG2_037.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/b0f7bb83-e005-6c9f-285a-efa3b43bec32.png)

次へボタンをクリックして Extractパラメータの画面に遷移します。Extract のパラメータは以下のように設定します。GoldenGate は色々と多機能でここの設定も色々有るのですが、今回はシンプルに構成します。

```sql
EXTRACT EXT01
USERIDALIAS aysoskociggconnection01basedb1 DOMAIN OracleGoldenGate
EXTTRAIL tr
TABLE AYSPDB19C.AYSHIBAT.*;
```

![OCIGG2_038.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/3c51263a-7658-e419-fa51-3e1378f1eccf.png)

「作成および実行」をクリックして正常に終了すると、Extractプロセス が作成されて起動します。

![OCIGG2_039.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/d73fc3e9-2844-0f32-1e6e-4d31b2572fb2.png)

# 13. Replicat の作成

管理サービス・コンソールのトップ画面から Replicat を作成します。Replicat の +ボタン をクリックします。

![OCIGG2_040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/f04ea56d-c061-b049-8d7a-619cfdee53fa.png)

Replicatプロセスの種別を選択します。色々あるのですが今回は 非統合Replicat を選択して次をクリックします

![OCIGG2_041.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/28495404-45bc-6284-da59-33f1a0c9c1c6.png)

以下を入力します。変更する部分のみをピックアップしています。

| 変数名 | 入力値 |
|-|-|
|プロセス名|任意の文字列ただし8文字まで、今回は REP01 を入力|
|資格証明ドメイン|OracleGoldenGate を選択|
|資格証明別名|Target DB(ADW-S) の Alias を選択|
|トレイル名|Extract に設定した 2文字のPREFIXを入力、今回は tr を入力|
|チェックポイント表|上記8. で作成したチェックポイント表を選択|

![OCIGG2_042.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/c962d521-fa0a-b871-51b4-cce991de2c1f.png)

Replicat のパラメータは以下のように設定します。やはり色々と設定はあるのですが、今回はここもシンプルに構成します

```sql
REPLICAT REP01
USERIDALIAS aysoskociggconnection03adws DOMAIN OracleGoldenGate
MAP AYSPDB19C.AYSHIBAT.*, TARGET AYSHIBAT.*;
```

![OCIGG2_043.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/56eb076d-b0eb-c754-1488-009261dda685.png)

「作成」をクリックして正常に終了すると、Replicatプロセス が作成されます。この時点ではまだ起動していません。

![OCIGG2_051.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/d5c7443d-423f-c649-0148-8056e22ecbdd.png)

「アクション」→「オプションを使用して開始」を選択します。

![OCIGG2_052.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/b9402471-db6d-e563-1fa9-d2aae9fefedf.png)

今回は CSN に 0 を指定して Replicat を起動します。ケースによっては「CSNより後」を選択して Oracle Database の SCN値 を入力して起動します。

![OCIGG2_053.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/adc52e10-db2a-0a3f-5deb-4ba0f4d693a9.png)

Replicat が正常に起動したことを確認します。

![OCIGG2_054.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/7f2cd3fc-d0cc-cefd-aae6-24939623aa16.png)

# 14. レプリケーションの確認(INSERT, UPDATE, DELETE, 統計, ハートビート)

レプケーションを確認します。まず Source DB(BaseDB PDB)側 でデータを INSERT してみます。

```sql
SQL> SHOW USER;
USER is "AYSHIBAT"

SQL> SHOW CON_NAME;

CON_NAME
------------------------------
AYSPDB19C

SQL> INSERT INTO TEST_TBL01 SELECT LEVEL, 'REC' || LEVEL FROM DUAL CONNECT BY LEVEL <= 10;

10 rows created.

SQL> COMMIT;

Commit complete.
```

Target(ADW-S)側 で対象テーブルを SELECT してみます。

```sql
SQL> SHOW USER
USER is "AYSHIBAT"

SQL> SHOW CON_NAME

CON_NAME
------------------------------
L5LSSTUM9V4ZR9T_AYSADW01

SQL> SELECT * FROM TEST_TBL01;

        ID NAME
---------- --------------------
         1 REC1
         2 REC2
         3 REC3
         4 REC4
         5 REC5
         6 REC6
         7 REC7
         8 REC8
         9 REC9
        10 REC10

10 rows selected.

SQL>
```

レプリケーションされてるやで！彡(^)(^)

UPDATE や DELETE も Source DB(BaseDB PDB)側 で実行してみます。

```sql
SQL> SHOW USER;
USER is "AYSHIBAT"

SQL> SHOW CON_NAME;

CON_NAME
------------------------------
AYSPDB19C

SQL> UPDATE TEST_TBL01 SET NAME = 'XXXXXXXX' WHERE ID = 10;

1 row updated.

SQL> DELETE FROM TEST_TBL01 WHERE ID = 9;

1 row deleted.

SQL> COMMIT;

Commit complete.

SQL>
```

Target DB(ADW-S)側で結果を確認してみます。

```sql
SQL> SHOW USER;
USER is "AYSHIBAT"

SQL> SHOW CON_NAME;

CON_NAME
------------------------------
L5LSSTUM9V4ZR9T_AYSADW01

SQL> SELECT * FROM TEST_TBL01;

        ID NAME
---------- --------------------
         1 REC1
         2 REC2
         3 REC3
         4 REC4
         5 REC5
         6 REC6
         7 REC7
         8 REC8
        10 XXXXXXXX

9 rows selected.

SQL>
```

Extract, Replicat のプロセス名はリンクになっていて、遷移先の統計(サブタブ)から各種統計を確認可能です。

![OCIGG2_046.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/02abae2a-8fc3-2c13-3b32-2daf5d3ced7d.png)
![OCIGG2_047.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/322c24b7-3fa7-50c4-5b90-aae7da893428.png)

Replicat のハートビート(サブタブ)からはラグ(伝播遅延)を確認できます。

![OCIGG2_048.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/110066/5f07606b-6f4d-cacc-64e2-b3347353011d.png)

# まとめ
OCI GG で BaseDB のデータを ADW-S にレプリケーションできました。
皆さんどんどんご活用くださいね。彡(^)(^)