10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2022-03-31

直近はお仕事で 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 は従量課金で利用可能なので、皆さんどんどん使ってくださいね。

10
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?