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) の構成でレプリケーションします。 これらの構成に必要な コンパートメント/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 をクリックします。
以下のように入力して行きます。
変数名 | 入力値 |
---|---|
Name | 任意の文字列を入力 |
Description | 任意の説明 |
Compartment | 任意のコンパートメントを選択 |
oCPU count | 必要なoCPU数 ※後から変更可能です。 |
Subnet | OCI GG をデプロイする VCN Subnet を選択 |
Choose a license type | ライセンス持ち込み以外は License included を選択します。 |
GoldenGate instance name | 任意の文字列を入力 |
Administrator usrename | 管理ユーザー名を入力 |
Administrator password | 管理ユーザーのパスワードを入力 |
デプロイが完了すると以下の画面のようになります。
5. データベースの登録
OCI Console の 左上のハンバーガーボタン ⇒ Oracle Database ⇒ GoldenGate(右側) と遷移して、Register Databases の Register Database をクリックします。
以下のように入力して行きます。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ユーザー名 の パスワード を入力します。|
6. Deployment Console への接続 と データベース接続確認
OCI Console の Deploymentトップ画面から Deployment Console に接続します。
なお今回は Private Subnet に OCI GG Deployment を作成して手元のPCからの直接接続は不可だったため、Compute に SSH接続して SSHポートフォワードで Deployment Console に接続しています。
Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) と遷移して、登録データベースのハンバーガーボタンを押して接続を確認します。
接続が成功すると「チェックポイント」「TRANDATA情報」「ハートビート」といった項目が表示されます。
7. スキーマ単位 または 表単位 のサプリメンタル・ロギング設定(Sourceのみ)
Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source のハンバーガーボタンと遷移して Sourceデータベースに接続します。
TRANDATA情報からスキーマ単位 または 表単位 のサプリメンタル・ロギングを設定します。
今回は スキーマAYSHIBAT に対してサプリメンタル・ロギングを設定します。
実行後にTRANDATA情報を検索すると、以下のようにTRANDATAが設定されていることを確認できます。
下記マニュアルも参照して下さい。
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データベースに接続します。
チェックポイントからチェックポイント表の作成を発行します。
チェックポイント表の作成に成功すると、以下のように作成されたチェックポイント表が表示されます。
下記マニュアルも参照して下さい。
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 のチェックは解除して下さい。
次に Deployment Console のトップ画面から 構成 ⇒ データベース(サブタブ) ⇒ Source のハンバーガーボタンと遷移して、まずは Targetデータベースに接続します。
ハートビートからハートビート表の保存期間、パージ頻度を設定して発行ボタンをクリックします。この時に Target Only のチェックは設定しておいて下さい。
10. Extract の作成
Deployment Console のトップ画面から Extract を作成します。Extract の +ボタン をクリックします。
統合Extract を選択して次へをクリックします。
以下を入力します。変更する部分のみをピックアップしています。
変数名 | 入力値 |
---|---|
プロセス名 | 任意の文字列ただし8文字まで |
トレイル名 | 2文字のPREFIXを入力 |
資格証明ドメイン | OracleGoldenGate を選択 |
資格証明別名 | Source DB の Alias を選択 |
共有 | 11.2.0.4 は統合ExtractのShareに対応していないため なし を選択 |
Extract のパラメータは以下のように設定します。GoldenGate は色々と多機能でここの設定も色々有るのですが、今回はシンプルに構成します。
EXTRACT EXT99 USERIDALIAS dbcsseogays DOMAIN OracleGoldenGate EXTTRAIL tr TABLE AYSHIBAT.*;
作成および実行をクリックして、正常に終了すると Extractプロセス が作成&起動します。
11. Replicat の作成
Deployment Console のトップ画面から Replicat を作成します。Replicat の +ボタン をクリックします。
Replicatプロセスの種別を選択します。色々あるのですが今回は 非統合Replicat を選択して次をクリックします。
以下を入力します。変更する部分のみをピックアップしています。
変数名 | 入力値 |
---|---|
プロセス名 | 任意の文字列ただし8文字まで |
資格証明ドメイン | OracleGoldenGate を選択 |
資格証明別名 | Target DB の Alias を選択 |
トレイル名 | Extract に設定した 2文字のPREFIXを入力 |
チェックポイント表 | 上記8. で作成したチェックポイント表を選択 |
Replicat のパラメータは以下のように設定します。やはり色々と設定はあるのですが、今回はここもシンプルに構成します。
REPLICAT REP99 USERIDALIAS dbcseeogays DOMAIN OracleGoldenGate MAP AYSHIBAT.*, TARGET AYSHIBAT.*;
作成および実行をクリックして、正常に終了すると Replicatプロセス が作成&起動します。
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 の 統計タブ からも件数レベルでの伝播状況を確認できます。
Deployment Console の ハートビート からはラグ(伝播遅延)の状況を確認可能です。
まとめ
OCI GoldenGate(OCI GG) で DBCS のデータをレプリケーションできたやで!彡(^)(^)
OCI GoldenGate は従量課金で利用可能なので、皆さんどんどん使ってくださいね。