ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

OCI GoldenGate(OCI GG) で DBCS SE から DBCS EE にレプリケーションしてみる。(Oracle Cloud Infrastructure)

直近はお仕事で OCI GoldenGate を触ることが多いので、記事を書いてみます。 従量課金なのがエエですね。 表題のとおり OCI GoldenGate で Oracle Database(DBCS) のレプリケーションを設定してみるやで。
彡(^)(^)

下記マニュアルの手順(クイックスタート)でやってみます。

同じリージョン内のクラウド・データベース間でのデータのレプリケート
https://docs.oracle.com/ja-jp/iaas/goldengate/doc/replicating-data-two-cloud-databases.html

1. OCI GoldenGate とは?

OCI GoldenGate は OCI上で動作する論理レプリケーション/データ連携のツール/PaaSとなります。

Oracle Cloud Infrastructure GoldenGateの概要
https://docs.oracle.com/ja-jp/iaas/goldengate/doc/overview-goldengate.html

オンプレの GoldenGate は 様々なデータベース/データストアに対応しますが、
現時点(2022年3月末)ではOCI GoldenGate は Oracle Database にのみ対応しています。

データベース登録の管理
https://docs.oracle.com/ja-jp/iaas/goldengate/doc/database-registrations.html
サポートされるデータベース

次のデータベースは、OCI GoldenGateをソースまたはターゲットとして使用することが保証されています:
Oracle Database 11.2.0.4、12.1.0.2以上
Oracle Exadata
Oracle ExadataCS
Oracle Autonomous Transaction Processing
Oracle Autonomous Data Warehouse

2. 検証環境の構成(OCI)

OCI DBCS SE(11.2.0.4, Source) ⇒ OCI GG ⇒ OCI DBCS EE(19.14, Target) の構成でレプリケーションします。 構成図.jpg これらの構成に必要な コンパートメント/VCN/Subnet/DBCS等は作成済みのものとします。

また DBCS SE(11.2.0.4, Source) にはマニュアル記載の推奨パッチを適用しておきます。

https://docs.oracle.com/ja-jp/iaas/goldengate/doc/database-registrations.html

Oracleサポートが推奨するように、OCI GoldenGateで使用するデータベースの最新パッチを適用してください。
Oracle 11gの推奨パッチ
https://support.oracle.com/epmos/faces/DocumentDisplay?id=1557031.1

伝播対象のテーブルも予め作成しておきます。Source と Target の両方に作成しておきます。

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ユーザー作成&権限付与、初期化パラメータ設定

下記のマニュアルに従って 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

下記のパラメータも 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側(DBCS 11.2.0.4) のDBユーザー作成、権限付与、パラメータ変更、サプリメンタル・ロギング設定
CREATE USER OGGAYSHIBAT IDENTIFIED BY xxxxxxxxxxxx
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

GRANT CREATE SESSION         TO OGGAYSHIBAT;
GRANT RESOURCE               TO OGGAYSHIBAT;
GRANT ALTER SYSTEM           TO OGGAYSHIBAT;
GRANT ALTER USER             TO OGGAYSHIBAT;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('OGGAYSHIBAT');
GRANT SELECT ANY DICTIONARY  TO OGGAYSHIBAT;
GRANT SELECT ANY TRANSACTION TO OGGAYSHIBAT;

-- For User Object Privilege
GRANT DBA TO OGGAYSHIBAT;

ALTER SYSTEM SET enable_goldengate_replication = TRUE SCOPE=BOTH SID='*';
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

  • Target側(DBCS EE 19.14) のDBユーザー作成、権限付与、パラメータ変更
ALTER SESSION SET CONTAINER = PDB1;
SHOW CON_NAME;

CREATE USER OGGAYSHIBAT IDENTIFIED BY xxxxxxxxxxxx
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;

GRANT CREATE SESSION         TO OGGAYSHIBAT;
GRANT RESOURCE               TO OGGAYSHIBAT;
GRANT ALTER SYSTEM           TO OGGAYSHIBAT;
GRANT ALTER USER             TO OGGAYSHIBAT;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('OGGAYSHIBAT', CONTAINER => 'PDB1');
GRANT LOCK ANY TABLE         TO OGGAYSHIBAT;
GRANT SELECT ANY DICTIONARY  TO OGGAYSHIBAT;

-- For User Object Privilege
GRANT DBA                    TO OGGAYSHIBAT;

-- These commands are required execute in CDB.
ALTER SESSION SET CONTAINER = CDB$ROOT;
ALTER SYSTEM SET enable_goldengate_replication = TRUE SCOPE=BOTH SID='*';

4. OCI GG Deployment の作成

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

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

変数名 入力値
Name 任意の文字列を入力
Description 任意の説明
Compartment 任意のコンパートメントを選択
oCPU count 必要なoCPU数 ※後から変更可能です。
Subnet OCI GG をデプロイする VCN Subnet を選択
Choose a license type ライセンス持ち込み以外は License included を選択します。
GoldenGate instance name 任意の文字列を入力
Administrator usrename 管理ユーザー名を入力
Administrator password 管理ユーザーのパスワードを入力

OCIGG001.jpg OCIGG002.jpg

デプロイが完了すると以下の画面のようになります。 OCIGG003.jpg

5. データベースの登録

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

OCIGG004.jpg

以下のように入力して行きます。Source と Target の両方を登録して下さい。

変数名 入力値
Name 任意の文字列
Alias Name 任意の文字列ただし記号等の制限有り
Description 任意の説明を入力
Compartment OCI GG を作成したコンパートメントを選択
Database Type 今回は DB system database(Bare Metal, VM, Exadata) を選択します。
Database system in ~ Source または Target の DBCS を選択します。

データベース(今回はDBCS)を選択すると他の変数は自動で入力されます。下記を追加入力&修正しています。 | 変数名 | 入力値 | |-|-| |Database connection string | DBサービス名部分を必要に応じて修正します。今回は Target DB の接続サービス名として pdb1 に修正しています。| |Database username | 上記 3. の手順で作成した OCI GG用 の DBユーザー名を入力します。| |Database user password | OCI GG用DBユーザー名 の パスワード を入力します。|

OCIGG005.jpg OCIGG006.jpg

6. Deployment Console への接続 と データベース接続確認

OCI Console の Deploymentトップ画面から Deployment Console に接続します。

なお今回は Private Subnet に OCI GG Deployment を作成して手元のPCからの直接接続は不可だったため、Compute に SSH接続して SSHポートフォワードで Deployment Console に接続しています。

OCIGG011.jpg OCIGG009.jpg

Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) と遷移して、登録データベースのハンバーガーボタンを押して接続を確認します。 OCIGG010.jpg

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

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

Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source のハンバーガーボタンと遷移して Sourceデータベースに接続します。

TRANDATA情報からスキーマ単位 または 表単位 のサプリメンタル・ロギングを設定します。
今回は スキーマAYSHIBAT に対してサプリメンタル・ロギングを設定します。

OCIGG012.jpg

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

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

Oracle GoldenGate Microservicesアーキテクチャを使用してのステップ・バイ・ステップ・データ・レプリケーション
TRANDATAまたはSCHEMATRANDATA情報の有効化
https://docs.oracle.com/cd/F51462_01/ggmas/working-data-replications.html#GUID-C3B8B4EE-B13F-43BF-AE94-CFCB01B26F60

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

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

Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source のハンバーガーボタンと遷移して Sourceデータベースに接続します。

チェックポイントからチェックポイント表の作成を発行します。

OCIGG014.jpg

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

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

Oracle GoldenGate Microservicesアーキテクチャを使用してのステップ・バイ・ステップ・データ・レプリケーション
3.6 Replicatを作成する前に
https://docs.oracle.com/cd/F51462_01/ggmas/working-data-replications.html#GUID-2CE071E8-1B2F-4138-A01D-B5BC6A010062

9. ハートビート表の作成(Source と Target両方)

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

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

Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source のハンバーガーボタンと遷移して、まずは Sourceデータベースに接続します。

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

OCIGG016.jpg

次に Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source のハンバーガーボタンと遷移して、まずは Targetデータベースに接続します。

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

OCIGG017.jpg

10. Extract の作成

Deployment Console のトップ画面から Extract を作成します。Extract の +ボタン をクリックします。 OCIGG020.jpg

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

OCIGG021.jpg

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

変数名 入力値
プロセス名 任意の文字列ただし8文字まで
トレイル名 2文字のPREFIXを入力
資格証明ドメイン OracleGoldenGate を選択
資格証明別名 Source DB の Alias を選択
共有 11.2.0.4 は統合ExtractのShareに対応していないため なし を選択

OCIGG022.jpg

OCIGG023.jpg

Extract のパラメータは以下のように設定します。GoldenGate は色々と多機能でここの設定も色々有るのですが、今回はシンプルに構成します。

EXTRACT EXT99
USERIDALIAS dbcsseogays DOMAIN OracleGoldenGate
EXTTRAIL tr
TABLE AYSHIBAT.*;

OCIGG024.jpg

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

OCIGG025.jpg

11. Replicat の作成

Deployment Console のトップ画面から Replicat を作成します。Replicat の +ボタン をクリックします。 OCIGG030.jpg

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

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

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

OCIGG032.jpg

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

REPLICAT REP99
USERIDALIAS dbcseeogays DOMAIN OracleGoldenGate
MAP AYSHIBAT.*, TARGET AYSHIBAT.*;

OCIGG033.jpg

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

OCIGG034.jpg

12. レプリケーションの確認(INSERT, UPDATE, DELETE, 統計, ラグ)

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

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
se01

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

10 rows created.

SQL> COMMIT;

Commit complete.

Target側 で対象テーブルを SELECT してみます。

SQL> SHOW CON_NAME;

CON_NAME
------------------------------
PDB1
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.

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

UPDATE や DELETE も Source側 で実行してみます。

SQL> SELECT INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NAME
----------------
se01

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> SHOW CON_NAME;

CON_NAME
------------------------------
PDB1
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.

UPDATE や DELETE もレプリケーションされていますやね彡(^)(^)

Deployment Console の 統計タブ からも件数レベルでの伝播状況を確認できます。 OCIGG040.jpg

Deployment Console の ハートビート からはラグ(伝播遅延)の状況を確認可能です。 OCIGG041.jpg

まとめ

OCI GoldenGate(OCI GG) で DBCS のデータをレプリケーションできたやで!彡(^)(^)
OCI GoldenGate は従量課金で利用可能なので、皆さんどんどん使ってくださいね。