[OCI] GoldenGate for Big Dataを使用したOracleDB(ADB)→Object Storage(JSON)レプリケーション

# はじめに

OCI GoldenGate および OCI GoldenGate for Big Dataを使用してAutonomous OracleDBの変更データをObject StorageにJSONファイルで出力した際の手順メモ

参考マニュアル、資料
・Replicate data from Autonomous Transaction Processing to OCI Object Storage
https://docs.oracle.com/en/cloud/paas/goldengate-service/retlo/index.html#RETLO-GUID-60970814-7EBB-4C8A-9042-2D5FB38692BD
・GoldenGate 21c 簡単データベース・レプリケーションガイド
https://speakerdeck.com/oracle4engineer/goldengate-21c-jian-dan-detabesurepurikesiyongaido-microservice-architectureban?slide=2

# 1.事前準備
#### ソース側Autonomous DBにGoldenGate必須の設定
- GGADMINアカウントアンロック：ADBならコンソールからも可能
- 最小サプリメンタル・ロギングの構成：[alter pluggable database add supplemental log data;]
- データ連携用テーブル作成（任意）
- DB単位にサプリメンタル・ロギング設定を行う場合： [alter pluggable database add supplemental log data (primary key) columns;]（TRANDATAでスキーマ単位あるいはテーブル単位にPKサプリメンタル・ロギングの構成をするのであれば不要）

#### ターゲット側Object Storageへのアクセス権限設定
- GGBDからObject Storageへ接続するユーザーのAPI秘密キーをダウンロードし、APIキー・フィンガープリントをコピーしておく（Object Storageへの接続で使用。ユーザーのAPIキーが存在しない場合はユーザー詳細からAPIキーを追加。）
- メニュー→「アイデンティティとセキュリティ」→「ポリシー」で下記設定
 ・Allow ＜USERグループ＞ to read buckets in compartment ＜コンパートメント名＞
 ・Allow ＜USERグループ＞ to manage objects in compartment ＜コンパートメント名＞ where any {request.permission='OBJECT_CREATE', request.permission='OBJECT_INSPECT’}
- コンパートメントOCID、ユーザOCIDを控えておく

# 2.構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/5de2bf90-f294-026a-53df-6f29f3e1e71c.png)

# 3.OCI GoldenGateデプロイ
- 「デプロイメントの作成」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/e8c328b2-a6fc-1b3b-234a-1f4483aab299.png)

- 必要項目設定し「次」クリック
・名前：任意
・ライセンスタイプ選択
・パブリックにアクセスする場合は「GoldenGateコンソール・パブリック・アクセスの有効化」にチェック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/3000da8b-18ca-6c65-2687-bd14b73e1041.png)

- 必要項目設定し「次」クリック
・テクノロジの選択：「Oracle Database」
・GoldenGateインスタンス名：任意
・管理者ユーザー名(GGコンソール管理者)：任意
・管理者パスワード設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/7fbc1bb1-dd61-af3c-5d6a-633101e3b625.png)


# 4.OCI GoldenGate for Big Data デプロイ
- GGデプロイ同様、名前、ライセンスタイプ、GoldenGateコンソール・パブリック・アクセスの有効化を設定し「次」クリック

- 必要項目設定し「次」クリック
・テクノロジの選択：「Big Data」
・GoldenGateインスタンス名：任意
・管理者ユーザー名(GGコンソール管理者)：任意
・管理者パスワード設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/48537780-5f88-81a0-f17e-a7f0899e58a1.png)

# 5.ADBへの接続作成
- 「接続」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/d3c8c07a-9dc7-2281-58b0-53aedc70d381.png)

- 「接続の作成」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/a56bb4be-703c-1c2b-1c2b-406e7d3a5b82.png)

- 必要項目設定し「次」クリック
・接続の名前：任意
・コンパートメント：ADB対象コンパートメント選択
・タイプ：「Oracle Autonomous Database」選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/0b7a29fe-e8cb-674a-6240-63f3fd1f4e77.png)

- 必要項目設定し「作成」クリック
・データベース接続：「データベースの選択」
・データベース：対象ADB選択
・データベース・ユーザーのパスワード：ADBのGG管理者ユーザー（ggadmin）パスワード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/0a99e71f-189a-df63-3811-906c4218cfd3.png)

- 「デプロイメントの割当て」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/55251e42-e424-8357-f99c-bff3c92e4f99.png)

- 対象GGデプロイメント選択し「デプロイメントの割当て」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/c9ea8419-9308-aea9-9eff-759f836ec3db.png)

# 6.Object Storageへの接続作成
- ADBへの接続同様、「接続」→「接続の作成」クリック

- 必要項目設定し「次」クリック
・接続の名前：任意
・コンパートメント：ADB対象コンパートメント選択
・タイプ：「Oracle Autonomous Database」選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/f9a85613-f891-09c7-ce65-4f730ea10427.png)

- 必要項目設定し「作成」クリック
・ターゲットObject Storageのテナンシとリージョンを選択
・ダウンロードしておいたAPI秘密キーをアップロードし、APIキー・フィンガープリントをペースト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/90365135-cf34-8f70-61c1-5aa6c4ebec81.png)

- ADB接続同様、「デプロイメントの割当て」クリック

- 作成したGGBDデプロイメントを選択し「デプロイメントの割当て」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/57e6ac4e-9ee9-e145-7513-56c62e2e8e6b.png)


# 7.Primary Keyのサプリメンタル・ロギング設定
※[alter pluggable database add supplemental log data (primary key) columns]でDB単位にPKサプリメンタルログ設定を行うのであればスキーマ単位またはテーブル単位のPKサプリメンタルログ設定は不要

- GGデプロイメントから「コンソールの起動」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/508c5397-0555-fd98-1d83-590bf60d3059.png)

- デプロイ時に設定したコンソールユーザとパスワード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/49da8ab9-ed66-5429-cf3d-cd1f488a7b4b.png)

- 「メニュー」 → 「構成」から作成したADBへの接続の「アクション：接続」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/8f5b9ecc-d594-5b27-246e-90e15ac28814.png)

- TRANDATA情報で「＋」ボタンからサプリメンタル対象（スキーマ or テーブル or プロシージャ）を設定し「発行」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/18532535-f19c-25f6-94d5-b92474d29d97.png)


# 8.Extract追加＆実行
- GGコンソールの「メニュー」 → 「概要」の管理サービスからExtract追加「＋」 クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/b36f47e3-2986-46c2-add7-8edbb4ea443c.png)

- 統合Extractを選択し「次」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/b58bda76-2808-d3fd-26a5-6bf7f69392e7.png)

- 必要項目設定し「作成」クリック
・Extractプロセス名：任意
・トレイル名：任意（2文字）
・資格証明ドメイン：OracleGoldenGate
・資格証明別名：作成したADB接続名
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/8d862388-07ac-7004-0754-52c33b779c34.png)

- パラメータ・ファイルは指定によりデフォルト設定されているので、TABLE句など必要設定追記し「作成および実行」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/2607fc04-0ced-41ad-7740-854fe0f4e0c1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/a707a3a1-cc36-9a5b-e7fb-6b33978d40f9.png)


# 9.分散パス(GG→GGBDへのパス)作成
- GGBDコンソールからメニュー → 「管理者」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/1f1ccfbe-8be9-c131-6e3b-1eb271362b1a.png)

- ユーザー作成（＋ボタン）クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/8ee82ea1-3b6f-e64a-558f-94d9e40f5bde.png)

- 必要項目設定し「発行」クリック
・分散パスユーザー：任意
・ロール：「ユーザー」
・パスワード：分散パスユーザーパスワード（任意）設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/b304eb78-e2d6-b2cd-cffb-c866e954e6dd.png)

- GGコンソールからメニュー → 「構成」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/8bb3282d-5d55-b897-d9a8-024af3db7bb5.png)

- 資格証明作成（＋ボタン）クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/eb9e08c4-0483-a558-a8f8-dfbb29f28c68.png)

- 必要項目設定し「発行」クリック
・資格証明ドメイン名：任意
・資格証明別名：任意
・分散ユーザーID：GGBDコンソールで作成した分散ユーザー名
・パスワード：分散ユーザーパスワード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/0917ae2a-baf5-6ccf-3c3a-5c76ebda9415.png)

- GGコンソール「分散サービス」タブの「＋」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/5b898ab3-6903-4355-7005-a5cab663b158.png)


- 必要項目設定し「作成および実行」クリック
・パス名：任意
・ソース：Extract作成で作成した名前
・ターゲット認証方式：ユーザーID別名（デフォルト）
・ターゲット ホスト：GGBDデプロイドメイン（GGBDのコンソールURL上のドメイン）
・ポート：443
・ターゲットTrail名：任意
・ドメイン：GGコンソールの資格証明で作成したドメイン名
・資格証明別名： GGコンソールの資格証明で作成したドメイン名
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/5b835cf8-1ead-323f-b80a-271d1848ff0d.png)

- GGコンソールの分散パス作成後、GGBDコンソールのレシーバ・サービスにも出力される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/8bc8be8f-7d01-8525-66b6-74c639766e33.png)

# 10.Replicat追加&実行
- GGBDコンソールから「＋」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/9333d4ac-c2cd-79f5-5ecb-09381675f89a.png)

- Replicatタイプを選択肢「次」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/32c7fd60-7c39-ed61-7145-044d805f6b2a.png)

- 必要項目設定し「次」クリック
・Replicatプロセス名：任意
・トレイル名：分散パスで作成したターゲットTrail名
・ターゲット：OCI Object Storage
・Object Storageへの接続の作成で指定した接続名（※2023年4月20現在、左端にリストボックスが出力される）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/fbcfad91-e94a-64d6-946e-94c05741e575.png)

- 必要に応じてパラメータ・ファイルを修正し「次」クリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/864cc97a-dd0d-0bfb-5e2f-be689899e248.png)

- 必要項目設定し「作成および実行」クリック
・compartmentID：ターゲットObject StorageのコンパートメントOCID
・bucketMappingTemplate：Object Storageバケット名
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/1544a408-eddf-c923-0c6f-f90a18be44b9.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/136169/9f93bd18-9cc5-0c48-8f18-f553a63ce51d.png)

- ADB上の更新がObject Storage上にJSONファイルで出力されていること確認



# 参考
OCI GoldenGate（for Big Data含む）で対象とすることのできるソース・ターゲットは2023年4月20現在、以下の通り。
- サポートされるソース・テクノロジ:
Oracle Database 11.2.0.4+, 12.1.0.2+, 19c, 21c
Oracle Exadata
Oracle Exadata Cloud Service
Oracle Autonomous Transaction Processing
Oracle Autonomous Data Warehouse
Amazon RDS for Oracle 19c
OCI Streaming
Azure Event Hubs
Apache Kafka
Confluent Kafka
MongoDB
OCI MySQL Database Service
Amazon RDS for MySQL 5.7, 8.0
Amazon Aurora MySQL 5.7
MariaDB
Amazon RDS for MariaDB
Azure Database for MySQL 5.7, 8.0
MySQL Database Server 5.7, 8.0
Google Cloud SQL for MySQL 8.0
PostgreSQL 10, 11, 12, 13, 14
Amazon Aurora PostgreSQL 10, 11, 12
Amazon RDS for PostgreSQL 10, 11, 12, 13, 14
Azure Database for PostgreSQL 10, 11, 12, 13
Google Cloud SQL for PostgreSQL 10, 11, 12, 13, 14
Amazon RDS for SQL Server 2012, 2014, 2016, 2017, 2019
Azure SQL Managed Instance
Microsoft SQL Server 2012, 2014, 2016, 2017, 2019


- サポートされるターゲット・テクノロジ:
Oracle Database 11.2.0.4+, 12.1.0.2+, 19c, 21c
Oracle Exadata
Oracle Exadata Cloud Service
Oracle Autonomous Transaction Processing
Oracle Autonomous Data Warehouse
Amazon RDS for Oracle 19c
OCI Oracle NoSQL
OCI Object Storage
OCI Streaming
Oracle Autonomous Database
Oracle Autonomous JSON
Oracle WebLogic JMS
Azure Data Lake Storage
Azure Event Hub
Azure Synapse Analytics
Azure CosmosDB for MongoDB
Amazon S3
Apache Kafka
Confluent Kafka
Hadoop Distributed File System
MongoDB
Snowflake
OCI MySQL Database Service
Amazon RDS for MySQL 5.7, 8.0
Amazon Aurora MySQL 5.7
MariaDB
Amazon RDS for MariaDB
Azure Database for MySQL 5.7, 8.0
MySQL Database Server 5.7, 8.0
Google Cloud SQL for MySQL 8.0
PostgreSQL 10, 11, 12, 13, 14
Amazon Aurora PostgreSQL 10, 11, 12
Amazon RDS for PostgreSQL 10, 11, 12, 13, 14
Azure Database for PostgreSQL 10, 11, 12, 13
Google Cloud SQL for PostgreSQL 10, 11, 12, 13, 14
Amazon RDS for SQL Server 2012, 2014, 2016, 2017, 2019
Azure SQL Database
Azure SQL Managed Instance
Microsoft SQL Server 2012, 2014, 2016, 2017, 2019


サポート対象記載 docs
https://docs.oracle.com/en/cloud/paas/goldengate-service/wxntz/index.html#articletitle