OCI-GoldenGateの分散パスを利用してOracle Databaseのリージョン間レプリケーションを実装する

# はじめに
OCI-GGの構築から同一リージョン間のAutonomous Database Transaction Processing間のレプリケーションを実装したので手順と結果をまとめます。

ドキュメントに記載されている手順がベースですが実際に構築していく中のハマりポイントなど解説していければと思います。

以下参考資料です。

* OCI-GGの公式ドキュメント
[Oracle Cloud Infrastructure GoldenGateの概要](https://docs.oracle.com/ja-jp/iaas/goldengate/index.html)

* OCI-GGの構築手順
[Oracle GoldenGate Microservices Documentation](https://docs.oracle.com/ja-jp/iaas/goldengate/doc/overview-goldengate.html)

* OCI-GGのSpeakerdeck
[OCI-GoldenGate Overview](https://speakerdeck.com/oracle4engineer/oci-goldengate-overview-2022nian-5yue-ban)

* OCI-GGのチュートリアル
[401 : OCI GoldenGateによるBaseDBからADBへのデータ連携](https://oracle-japan.github.io/ocitutorials/database/adb401-oci-goldengate/)

<!-- 各チャプター -->

<a id="#Chapter1"></a>
# 作成したOCI-GG構成

Region Aに配置したATPからプライベートIPアドレスを利用してRegion Bにデータをレプリケーションする構成です。

OCI-GGデプロイメントはそれぞれのRegionに1つずつ作成します。
各デプロイメントにはExtractとReplicatプロセスをそれぞれ作成します。

ソースDBのREDOログから作成されたTrailファイルがOCI-GGのDistribution path （分散パス）を経由してRegion BのOCI-GGに伝搬され、ターゲットDBにReplicatされる構成となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/4f2b135e-f98d-afad-2081-48ad66fdc813.png)
[Replicate data between cloud databases in different regions](https://docs.oracle.com/en/cloud/paas/goldengate-service/yvyvx/#articletitle)


本構成の前提としてNW設定が必須となります。
* Region AとRegion BはDRGを利用したリモートピアリング構成
* OCI-GGの通信のためVCN内のプライベートDNS参照設定




<a id="#Chapter1"></a>
# Task0　DB、及びデータ準備
事前にソースDBの作成、及びデータの準備

構成図の赤枠、ソースDBを作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/6446bb96-1ce1-9d29-94c4-806cc2753147.png)

ADBの作成手順は割愛します！

尚、今回レプリケーションするデータはOracle Databaseのベンチマークで使われる**Swing Bench**が作成するSOEスキーマを利用します。

レプリケーションするトランザクションの発行もSwing Bentchを利用します。


また、GGでレプリケーションを行う場合は、ターゲットDBのどこからレプリケーションするのか？という観点でソースDBとターゲットDBの平仄を合わせる必要があるためデータの断面を論理的に合わせておく必要があります。

初期移行はATPのフルクローンによってターゲットDBの作成とデータの移行を一括で行います。


他にもDataPumpを利用した初期ロードやOCI-GGから初期ロードする選択肢もあります。

[Oracle Data Pumpを使用したロードの構成](https://docs.oracle.com/cd/F51462_01/oracle-db/configuring-load-oracle-data-pump.html#GUID-5AC98545-EEDF-4AFA-81B5-5B4105184F75)

:::note info
レプリケーション元のDBに対して**ソースDB**
レプリケーション先のDBに対して**ターゲットDB**
と呼ばれます。
:::

<a id="#Chapter2"></a>
# Task1　GGユーザーの作成

まず、Databaseユーザー**ggadmin**を有効化します。

今回はATPのデータベースアクションを利用してパスワード設定＆アンロックを行います。

①データベースアクション上部のハンバーガーメニューより「データベースユーザー」を押下する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/935b0cec-bffe-82d7-f5e9-a4fdfbb1786d.png)

②「GGADMIN」を検索する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b3d8b159-b5b8-5661-9251-724374f2856f.png)

③パスワードの入力、及び **「アカウントがロックされています」** のチェックを外し下部の **変更の適用**を押下する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/961caa73-47ea-b241-763c-c5a218ffc849.png)

④GGADMINが有効化されてOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b42c4daa-f339-d0d8-5365-b1a1a5b3efe4.png)

<a id="#Chapter2"></a>
# Task2　最小サプリメンタルロギング設定

続いてREDOログのサプリメンタルロギング設定を有効化します。

①ATPのデータベースアクションより 「SQL」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e9421e75-f86b-dee4-5639-82208fac9ebe.png)

②以下のSQLを実行する。
```SQL
ALTER PLUGGABLE DATABASE ADD SUPPLEMENTAL LOG DATA;
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/01e7c31e-0d33-ea7f-8575-c8a780527f8b.png)

②確認用SQL
```SQL
SELECT MINIMAL FROM DBA_SUPPLEMENTAL_LOGGING;
```

YESでOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e8308727-0475-4234-add8-244d333cf96e.png)


<a id="#Chapter2"></a>
# Task3　PKのVALIDATED設定

:::note info
TBLのPKがVALIDATEDになっていないときのみ実行
※Swing BenchでGGレプリケーションを実行する場合は必要
:::

```SQL
ALTER TABLE <TABLE_NAME> MODIFY CONSTRAINT <PK_NAME> VALIDATE;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/93e7f941-64f5-395f-9265-d470af60febd.png)

<a id="#Chapter2"></a>
# Task4　ATP初期ロード（フルクローン）

構成図の赤枠、ターゲットDBの作成をしていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/437910e3-e29c-d0cb-7dd9-dc7d6ad8ac46.png)


①クローンの作成を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e4f2b0bc-79b2-d521-e3c2-83fca2ec34be.png)

②クローン先のリージョン選択/ATPの名前を指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/60989236-4d81-cd7e-8cbd-ce444eeeb8e5.png)


③クローン先のVCNを指定し、最後にメールアドレスを入力したらクローンの作成を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/7d717796-8913-3472-8d3b-51f4d301e03e.png)

④クローン中

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/0a920dba-91da-0204-c952-6f4cdc012ca4.png)

⑤クローン完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b100448e-3f83-2bc9-5364-ed7b7be56c13.png)


以上でDBの準備は完了です。


<a id="#Chapter2"></a>
# Task5　OCIｰGGのプロビジョニング

OCI-GGデプロイメントの作成を行います。
今回の構成ではリージョンごとにデプロイメントを作成する必要があるため2つ作成します。

構成図の以下赤枠のソースGGとターゲットGGを作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/0ac504ea-b2cf-f868-5205-bd3ab86587bb.png)

①GoldenGateのページに遷移
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/f8cbc3fa-8383-8a26-6049-ae9abf3f63b5.png)

②デプロイメントの作成を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/12359f14-6216-f7a4-afc9-813edd2a89b1.png)

③一般情報を入力

名前、コンパートメント、OCPU数、GGデプロイメントを配置するサブネット指定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/2cc95d72-92b0-9a7a-4c55-b85a4290bd6a.png)


④GoldenGateの詳細を入力

テクノロジ：Oracle Database
GoldenGateインスタンス名：任意
管理者ユーザー名：任意
管理者パスワード：任意

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/413b2dd1-5fae-408e-ce8c-d3b238e13958.png)


尚、テクノロジはOracle Database以外に以下5つの選択肢がありますので用途に応じたサービスが選択できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/d06b217a-120e-9b6f-10cd-788d93e8c33e.png)

⑤作成中

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/7ea6079b-90bd-d990-86a1-ab319045dbcc.png)


⑥SouceGGのプロビジョニングが完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e457ccc7-5b8c-e89a-9986-5d1e72f8c3c2.png)

⑥レプリケーション先のターゲットGGも①～⑤の手順で同様に作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3ad43374-9824-be5b-0297-cbe9ea645393.png)

<a id="#Chapter2"></a>
# Task6　認証ユーザーの作成

Reagoin AとRegion BのOCI-GGを接続するための認証ユーザーを作成します。
今回はgguserとします。

①OCIコンソールのGGデプロイメント詳細画面より、コンソールの起動をクリックしURLをコピー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/24d1d89e-6f27-f3b0-1883-afeb4803b266.png)

②GGデプロイメントのサブネットに接続できるNW内のブラウザからURLにアクセスしサインイン

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/02f3c8fa-acef-2698-88ee-2ff64ac9cf3b.png)

③サインインできると管理サービスに遷移する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/2dd8ed3a-e790-00b3-1294-db71ead9216d.png)

④管理ページ左上のハンバーガーメニューより、管理者をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/ae6239e3-3e5b-a5cb-d585-6743e7461110.png)

⑤ユーザーの右の「＋」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/9cb4635c-da41-a3d1-ba6a-42b84b18455c.png)

⑥ページ下部に入力フォームが出るので必要な情報を入力し発行をクリック

ユーザー名：<任意>
ロール：演算子　※英語ではOperatorとなります。
タイプ：パスワード
パスワード：<任意>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/c5bb1774-978b-7a0f-e0ef-c82b23769abe.png)

⑥これでユーザーの作成が完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/bee0bca3-76d8-9ca0-b989-14e87f9e9fc3.png)

⑦続いてターゲットGG側でもユーザーの作成を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/87c7d317-86e6-2ccd-4f94-dc0613fae387.png)




:::note info
後段の手順でGG接続の作成があります。
その際に作成したユーザー名とパスワードが必要になります。
:::

<a id="#Chapter2"></a>
# Task7　DB接続の作成とデプロイメントへの割り当て

構成図の赤枠内、のDBとGGの接続部分を作成していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/f4d87361-0907-f4b6-bac7-00ace238729a.png)


①OCIコンソールのGoldenGate概要画面から接続を選択し、接続の作成をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e0e6840f-de5d-f3f8-2bbe-b6fa0cc18a3a.png)

②一般情報を入力

名前：<任意>
コンパートメント：<任意>
タイプ：Oracle Autonomous Database

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b56f1b60-795b-1913-2181-c853989f0320.png)

※タイプは接続対象によって選択肢が変わり様々な接続サービスが提供されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/2c1f80e0-1878-c58a-1c27-7c9fc9e00acb.png)

③詳細情報を入力し、作成をクリック

データベース・ユーザー名：ggadmin
データベース・ユーザー・パスワード：<アンロック時に指定したPW>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/c58e2ef1-8088-4be9-78e9-d60f83fd2a8a.png)



:::note info
同一コンパートメント内に存在するATPならウォレットや接続情報の入力を省略できます。
ウォレットは自動的に取得されます。
:::

④接続の作成が完了したら、 **デプロイメントの割り当て** をクリックしGGデプロイメントへの割り当てを行う。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/fe6aef77-e65a-ae11-cb59-af51674e2a37.png)

⑤デプロイメントを選択し「デプロイメントの割り当て」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3e4f5072-825d-4886-9ed5-19330afba73b.png)

⑥割り当てが完了したら、右部のホットドックメニューから「接続のテスト」を行う

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/e81f35dd-7ac0-90bc-3731-d6469077ac9c.png)

⑦接続のテストが完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/22797a5c-b4f3-f2a0-77be-a6eae90b1fa5.png)

⑧ターゲットGGも同様に接続の作成からデプロイメントへの割り当てを行う。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/287682c1-27cc-6c40-1d67-196b9f4f43cb.png)


<a id="#Chapter2"></a>
# Task8　GG接続の作成とデプロイメントへの割り当て

Region A とRegion BのGGを連携させるための接続を作成します。

構成図の赤枠、GoldenGate間の連携部分になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b346383b-7b96-84a2-0399-efa0a894ef67.png)

:::note warn
GGの接続作成はソースGG側のみです。
:::

①事前に接続先のターゲットGGの情報を取得しておきます。

FQDNの取得
　TargetGGの編集→デプロイメントの編集→FQDN

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/76c69eb8-c47b-6a7e-946e-b9bb049a277a.png)


Private IPアドレスの取得
　ページ右下のプライベートIPアドレス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/486d387e-297d-86fa-5c93-a9803b91670b.png)


②ソースGG側のGoldenGate、接続の作成をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/09c7e802-4147-28e1-3f8e-d1aed0ec6ef4.png)

③一般情報を入力

名前：<任意>
コンパートメント：<任意>
タイプ：GoldenGate

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/6dbd04ed-280c-9cda-496f-823292f206aa.png)

④接続詳細を入力

チェックボックス：GoldenGate情報の入力
ホスト：<ターゲットGGのFQDN>
ポート：443
ユーザー名：Task6で作成したGG認証用のユーザー
パスワード：Task6で作成したユーザーのパスワード

:::note warn
OCIコンソール上ではユーザー名とパスワードは **オプション**と補足されていますが **必須** 項目として入力してください。
:::

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/f26f77b5-3a3c-0237-34b4-98177f662aca.png)

チェックボックス：顧客割り当てサブネット
サブネット：<GGデプロイメントが配置されているサブネット>
プライベートIPアドレス：<ターゲットGGのIPアドレス>


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b74b1f1e-ee70-f4ca-ab65-4a50a69c8e52.png)

:::note warn
ここで選択するサブネットはReagion A とRegion Bが接続されていることが前提で今回はVCNリモートピアリング構成済みであることが必要です。
また、FQDN解決のために双方のVCNに対するプライベートDNSエンドポイント作成の作成が必要です。
:::

③GGの接続の作成が完了したら、DBの割り当てと同じ要領でデプロイメントに割り当てる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/82c34889-c260-bc3d-216f-b59f4800a320.png)



:::note info
接続テストはDBのみ対応であるためGGデプロイメントへの割り当てパートではテストは行いません。
:::

以上でOCIコンソールの構成図上の構築は終了です。

# Task9　OCI-GG　Extractの作成

いよいよ、OCI-GGのExtractを作成します。

①ソースGGの管理画面のハンバーガーメニューより **構成** をクリック


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/75082697-f9c4-a4b3-8286-7d75772c44aa.png)

②DBの接続資格証明がリストされます。アクションの赤枠「データベースへの接続」をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/52c0b8f4-2839-d299-cf70-0f9e9e3f891f.png)

③入力フォームが表示されるので、TRANDATA情報　横の＋をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/1a3482f1-8bdb-54d1-3723-3f17cb6a1da8.png)

④レプリケーションする対象スキーマを入力し発行をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b86ac42e-d584-c6a9-fb1b-b1d4e7cf0a0a.png)

⑤TRANDATAの検索でスキーマが登録されたことを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/4fcca2f4-bced-495f-d817-845a7c933653.png)

⑥続いてハートビート横の　＋を押下し、発行をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3bbf3775-7da8-1443-a90c-f34e79ca6df7.png)

⑦発行が完了

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/9844efc9-ce59-3606-2656-7538e3635ba0.png)

⑧Extract　の＋をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/bb65a8e4-2067-d353-a4f8-9634ce7400a3.png)

⑨統合Extractを選択し、次へ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/c53115b0-53ca-1f1e-4f35-70fc6e008497.png)

⑩Extractの情報を入力　1/3

プロセス名：<任意>
トレイル名：<任意>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/bd307fa0-053e-b0c9-dcc5-6f8437837508.png)

⑪Extractの情報を入力　2/3 ソース・データベース資格証明を選択し、次へ

資格証明ドメイン：OracleGoldenGate
資格証明別名：<構成で確認したDB接続資格証明の別名>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/868bf96d-ee0c-d36e-ee5e-a8973217dedd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/1108a11c-97ab-2168-882d-4da9465eb8b4.png)

⑫Extractの情報を入力　3/3 パラメータを入力し、「作成及び実行」を押下

パラメータ末尾にレプリケーションするスキーマ名（TBL名）を追加する。

Swing BenchのSOEスキーマの場合

```SQL
TABLE SOE.*;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/0ad793a9-3c30-24ea-298e-8f50205aa3e6.png)

⑬Extractが正常に作成されたことを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/f908fed4-d001-be9c-5155-829e7a214e6d.png)

# Task10　OCI-GG　分散パスの作成

続いて、Reagion AからReagion Bに連携するための **分散パス**　を作成します。

①ページ右部の　＋　をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3d9d2e6d-8ecb-50c0-21ea-7f73273831b5.png)


②パスの追加情報を入力　1/3

パス名：<任意>
ソース：<作成したExtract名>
トレイルファイル名：<指定したトレイルファイル名>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/1bd3630a-b521-6e9e-55b4-690797ea7a1d.png)

③パスの追加情報を入力　2/3

ターゲット認証方式：ユーザーID別名
Target Protocol：wss
ターゲット：＜ターゲットGGのFQDN＞
ポート：443
トレイルファイル名：＜指定したトレイルファイル名＞
認証情報：＜構成にリストされたGGの接続資格証明名＞
認証情報別名：＜構成にリストされたGGの接続資格証明別名＞


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/4bcff254-7019-bae7-9fbe-47cf84b94030.png)

③パスの追加情報を入力　3/3

その他はデフォルトで作成及び実行をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/579861f0-9d93-19f7-80fe-101136acbe1a.png)

④分散パスが正常に発行されたことを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/f4a18061-1bfa-b54d-ad1f-cd31ea8d03dc.png)

⑤連携先のターゲットGGのレシーバサービスにも追加されたことを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/2aa87199-7b34-e616-617a-7e0b346b902e.png)


# Task11　OCI-GG　Replicatの作成

最後にターゲットGG側でReplicatを作成し、OCI-GGの構築は完了です。

①ターゲットDBの構成を設定するため、ハンバーガーメニューから構成をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/5570aec5-6182-e65c-7df9-a7afcfa54067.png)


②アクションより、データベースへの接続をクリック


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/5c3fd5f4-07e1-32bd-b88e-de5613305b62.png)

③GGADMIのスキーマにチェックポイント表を追加する

表名：GGADMIN.<任意のTBL名>

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3394e7fa-854b-0d61-0a19-efb68537b44d.png)


③ハートビート表の作成を行う

Target Only:有効化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/5bf336cd-a737-ca37-8757-d4314a127f22.png)

④概要ページ　のReplicat　右部の　＋　をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/4dcab646-a7cd-4d39-369d-c2ee695a8557.png)

⑤パラレルReplicat　→　非統合　を選択し、次へ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/25044e96-fe73-cfa7-09f5-a39dcd04036b.png)

⑥Replicat情報を入力　1/2

プロセス名：<任意>
資格証明ドメイン：<構成にリストされたDBの資格証明名>
資格証明別名：<構成にリストされたDBの資格証明別名>
トレイル名：<Extractで指定したトレイル名>


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/d486578f-d012-f82a-d629-8ffe4bb39349.png)

⑦Replicat情報を入力　2/2

チェックポイント表：<作成したチェックポイント表名>

入力したら次へ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/3efb3ddb-063d-a756-ca5b-6f1bf8a89035.png)

⑧パラメータを入力し、作成及び実行

Extractと同様にレプリケーションするスキーマ（TBL）を指定します。

Swing BenchのSOEスキーマの場合

```SQL
MAP SOE.*, TARGET SOE.*;
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/50e34677-4acc-ff19-42de-99e0622c4a38.png)

:::note info
Replicat及びExtractのパラメータはOCI-GGの挙動によってチューニングが必要なポイントになります。
OCI-GGのパラメータは以下のドキュメントを参照しながら行います。

https://docs.oracle.com/cd/F13565_01/reference/summary-oracle-goldengate-parameters.html#GUID-F0B2C37F-DEDC-4990-A51F-30687D48082E
:::


⑨正常にReplicatが構成されたことを確認

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/a0b183a3-b829-82f6-b5dc-cd32ba9fe11c.png)


以上で、OCI-GG（分散パス）の構築が終了です。
お疲れ様でした。


# レプリケーションしてみる

いよいよ、構成したOCI-GGでデータをレプリケーションさせます。

実行前のプロセスを確認します。
ラグが0秒なのが確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/38cdfa20-d530-c4ac-f8e7-a3a11d6108fe.png)


ちなみに、実行する前の統計情報はこんな感じです。
レプリケーションラグを管理するハートビート表の連携しかされていないことがわかります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/6f8887cc-2b74-30eb-1b96-524f791ada63.png)



それではSwing Benchのcharbenchを利用しソースDBにトランザクションを発行します。

実行コマンド
```SQL
./charbench -c ../configs/SOE_Server_Side_V2.xml \
         -cf /home/opc/Wallet_extatp2.zip \
         -cs extatp2_tpurgent -u soe -p Welcome1#Welcome1# \
         -v users,tpm,tps,vresp \
         -intermin 0 \
         -intermax 0 \
         -min 0 \
         -max 0 \
         -uc 8 \
         -di SQ,WQ,WA 
```

実行中。。。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/1e1ceb18-7507-fdc5-6303-e1bf0b591433.png)

レプリケーションが開始されてExtractとReplicatに少しラグが出たようです。
ちゃんとレプリケーションされてる証拠ですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/b3365c6f-42dc-ff85-448b-ad1b5d3255e0.png)

今回は5分程度でトランザクションを停止します。

改めて統計情報を見てみると

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/ff0fd6ca-0ac5-aac8-f146-446369977316.png)

ちゃんとSwing BenchのSOEスキーマがレプリケーションされたことが確認できます。

トランザクション発行中のラグがどうだったか？
についてはハートビートを参照することで確認できます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139103/7623e970-6cd2-3da2-4e80-c594bb94ae00.png)


大体5-6秒の間を推移しているようです。
また、Extractの時間が割を占めているように見えます。

今回実施したトランザクションのREDO生成量はおよそ30MB/s程度なので、REDO生成量が増えていくと割合も変化していくと考えられます。
その際はパラメータチューニングが必要になってきますね。



# まとめ

いかがでしたでしょうか。
オンプレミス版のOracle GoldenGateと比べて、構築自体は優しくなった印象です。
構築作業のほとんどをOCIコンソールから実施できるのも便利でクラウドサービスらしい特徴かと思います。

この手順が参考になれば幸いです。




# 参考文献

* OCI-GGの公式ドキュメント
[Oracle Cloud Infrastructure GoldenGateの概要](https://docs.oracle.com/ja-jp/iaas/goldengate/index.html)

* OCI-GGの構築手順
[Oracle GoldenGate Microservices Documentation](https://docs.oracle.com/ja-jp/iaas/goldengate/doc/overview-goldengate.html)

* OCI-GGのSpeakerdeck
[OCI-GoldenGate Overview](https://speakerdeck.com/oracle4engineer/oci-goldengate-overview-2022nian-5yue-ban)

* OCI-GGのチュートリアル
[401 : OCI GoldenGateによるBaseDBからADBへのデータ連携](https://oracle-japan.github.io/ocitutorials/database/adb401-oci-goldengate/)