0
0

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.

Oracle Golden Gate 19 環境をローカルに作ってみる STEP3 Oracle Golden Gate セットアップ

Posted at

目的

以下のような Oracle Golden Gate 環境をローカルに作っていきます。
oracle_gg.PNG

STEP1.Oracle Database CUI インストール
STEP2.Oracle Golden Gate インストール

STEP3.Oracle Golden Gate セットアップ (この記事)

STEP4.Oracle Golden Gate を使ってみる

バージョンなど

対象 バージョン
Host OS Windows10
Client OS1 (name: myora1) Centos-7.8 on virtual box
Client OS2 (name: myora2) Centos-7.8 on virtual box
Virtual Box Version 6.1.26
Vagrant Version 2.2.5
Ansible (ansible_local) Version 2.9
Oracle DB 19c
Oracle Golden Gate 19.1.0.0

Oracle Golden Gate セットアップ手順

1.Oracle Golden Gate Config 設計
2.Oracle Golden Gate Config セットアップ

1.Oracle Golden Gate コンフィグ 設計

厳密には多くのパラメータがあると思われますが、自分が環境構築した時に最低限必要だったものを元に設計していきます。
データの同期元(ソース)と同期先(ターゲット)で設定はほとんど同じですが、若干違いがあるところがあります。違いが分かるように併記していきます。
注意点として、CDBにGolden Gate 用の共通ユーザを作成するので、ユーザ名の頭に「c##」を入れる必要があります。

パラメータ ソースDB ターゲットDB
Golden Gate Version 19.1.0.0 19.1.0.0
Golden Gate ホームディレクトリ /gg /gg
Golden Gate 用 Oracle DB ユーザ c##gguser c##gguser
Trail ファイルディレクトリ /gg/dirdat/capture1/lt
/gg/dirdat/pump1/rt
-
Manager port 番号 7809 7809
Capture プロセス名 capture1 -
Capture プロセスモード Integrated Capture -
Data Pump プロセス名 pump1 -
Replicat プロセス名 - repli2
Replicat プロセスモード - Integrated Replicat
2.Oracle Golden Gate コンフィグ セットアップ

データの同期元(ソース)と同期先(ターゲット)でセットアップはほとんど同じですが、若干違いがあるところがあります。違いが分かるように併記していきます。

基本的に以下の操作は全て oracle ユーザーで実行しますので、oracle ユーザーにスイッチしておきます。

$ sudo su - oracle

Golden Gate 初期設定
Golden Gate の設定は主に ggsci を通して行います。
まずは、設定ファイル保管用のサブディレクトリの作成と、Manager の設定を行っていきます。

No 操作 ソースDB ターゲットDB
1 ggsci 起動 /gg/ggsci ソースと同じ
2 サブディレクトリ作成 GGSCI (xxx) 1> create subdirs ソースと同じ
3 Manager port 設定 GGSCI (xxx) 1> EDIT PARAMS MGR
※以下の値を記入
PORT 7809
ソースと同じ
4 ggsci 終了 GGSCI (xxx) 1> exit ソースと同じ
5 captureディレクトリ作成 mkdir -p /gg/dirdat/capture1 不要
6 data pumpディレクトリ作成 mkdir -p /gg/dirdat/pump1 不要
実行例
[oracle@myora1 ~]$ /gg/ggsci

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Linux, x64, 64bit (optimized), Oracle 19c on xxx
Operating system character set identified as UTF-8.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

GGSCI (myora1) 1> create subdirs

Creating subdirectories under current directory /gg

Parameter file                 /gg/dirprm: created.
Report file                    /gg/dirrpt: created.
Checkpoint file                /gg/dirchk: created.
Process status files           /gg/dirpcs: created.
SQL script files               /gg/dirsql: created.
Database definitions files     /gg/dirdef: created.
Extract data files             /gg/dirdat: created.
Temporary files                /gg/dirtmp: created.
Credential store files         /gg/dircrd: created.
Masterkey wallet files         /gg/dirwlt: created.
Dump files                     /gg/dirdmp: created.

GGSCI (myora1) 2> EDIT PARAMS MGR

GGSCI (myora1) 3> exit

Oracle DB インスタンス起動など

No 操作 ソースDB ターゲットDB
1 tnsname.ora にPDB情報追加 vi /opt/oracle/product/19c/dbhome_1/network/admin/tnsnames.ora
※この表の下に記載しているtnsnames.ora追記の内容を追記する
ソースと同じ
2 Listener起動 lsnrctl start LISTENER ソースと同じ
3 SQLcl 起動 sql / as sysdba ソースと同じ
4 Oracleインスタンス 起動 SQL> startup ソースと同じ
5 PDB open SQL> alter pluggable database all open; ソースと同じ
6 SQLcl 終了 exit ソースと同じ
ソースDB側tnsnames.ora追記
ORCLPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myora1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLPDB1)
    )
  )
ターゲットDB側tnsnames.ora追記
ORCLPDB1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = myora2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = ORCLPDB1)
    )
  )
実行例
[oracle@myora1 ~]$ lsnrctl start LISTENER

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on xx-xxx-2021 15:33:26

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/myora1/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myora1)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myora1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date                xx-xxx-2021 15:33:26
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/myora1/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myora1)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
The listener supports no services
The command completed successfully

[oracle@myora1 ~]$ sql / as sysdba

SQLcl: Release 19.1 Production on xxx xxx xx 15:34:56 2021

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area   771749224 bytes
Fixed Size                   9139560 bytes
Variable Size              515899392 bytes
Database Buffers           239075328 bytes
Redo Buffers                 7634944 bytes
Database mounted.
Database opened.

SQL> alter pluggable database all open;

Pluggable database altered.

SQL> exit

Golden Gate 用 Oracle DB ユーザ作成

|No| 操作 | ソース | ターゲット |
| ----| ---- | ---- | ---- | ---- |
|1| SQLcl 起動 | sql / as sysdba | ソースと同じ |
|2| CDBに接続 | SQL> alter session set container=cdb$root; | ソースと同じ |
|3| ユーザー作成 | SQL> create user c##gguser identified by oracle; | ソースと同じ |
|4| 権限設定 | SQL> grant dba to c##gguser container=all; | ソースと同じ |
|5| 権限設定 | SQL> exec dbms_goldengate_auth.grant_admin_privilege('c##gguser'); | ソースと同じ |
|6| SQLcl 終了 | exit | ソースと同じ |

実行例
[oracle@myora1 ~]$ sql / as sysdba

SQLcl: Release 19.1 Production on xxx xxx xx 15:39:37 2021

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> alter session set container=cdb$root;

Session altered.

SQL> create user c##gguser identified by oracle;

User created.

SQL> grant dba to c##gguser;

Grant succeeded.

SQL> exec dbms_goldengate_auth.grant_admin_privilege('c##gguser');

PL/SQL procedure successfully completed.

Golden Gate 有効化

No 操作 ソースDB ターゲットDB
1 SQLcl 起動 sql / as sysdba ソースと同じ
2 Golden Gate有効化 SQL> alter system set enable_goldengate_replication=true scope=both; ソースと同じ
3 stream_pool_size設定 SQL> alter system set streams_pool_size=128M scope=both SID='*'; ソースと同じ
4 supplemental logging 設定 SQL> alter database add supplemental log data; ソースと同じ
5 supplemental logging 設定 SQL> alter system switch logfile; ソースと同じ
6 Golden Gate有効化確認 SQL> show parameter enable_goldengate_replication; ソースと同じ
7 supplemental logging 設定確認 SQL> select name,supplemental_log_data_min from v$database; ソースと同じ
※stream_pool_size設定は本番環境の非機能要件に合わせて見積するべき(個人PCなので仕方なく128Mという少ない値で設定)
実行例
[oracle@myora1 ~]$ sql / as sysdba
SQLcl: Release 19.1 Production on xxx xxx xx 16:00:10 2021

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> alter system set enable_goldengate_replication=true scope=both;

System altered.

SQL> alter system set streams_pool_size=128M scope=both SID='*';

System altered.

SQL> alter database add supplemental log data;

Database altered.

SQL> show parameter enable_goldengate_replication;
NAME                          TYPE    VALUE
----------------------------- ------- -----
enable_goldengate_replication boolean TRUE
SQL> select name,supplemental_log_data_min from v$database;

NAME      SUPPLEME
--------- --------
ORCLCDB   YES

Oracle ログモード変更

No 操作 ソースDB ターゲットDB
1 ログモード変更(DBシャットダウン) SQL> shutdown immediate; ソースと同じ
2 ログモード変更(インスタンス開始) SQL> startup mount; ソースと同じ
3 ログモード変更(archivelog有効) SQL> alter database archivelog; ソースと同じ
4 ログモード変更(DB open) SQL> alter database open; ソースと同じ
5 ログモード確認 SQL> select log_mode from v$database; ソースと同じ
6 SQLcl終了 SQL > exit ソースと同じ
実行例
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.

Total System Global Area   771749224 bytes
Fixed Size                   9139560 bytes
Variable Size              629145600 bytes
Database Buffers           125829120 bytes
Redo Buffers                 7634944 bytes
Database mounted.
SQL> alter database archivelog;
alter database archivelog
SQL> alter database open;

Database altered.

SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

Capture パラメータ設定

No 操作 ユーザー ソースDB ターゲットDB
1 ggsci 起動 oracle /gg/ggsci 不要
2 Capture パラメータ設定 oracle GGSCI (xxx) 1> edit params capture1
※以下の値を記入
EXTRACT capture1
USERID c##gguser@ORCLCDB, PASSWORD oracle
EXTTRAIL /gg/dirdat/capture1/lt
TABLE ORCLPDB1.c##gguser.*;
設定なし

Capture プロセス追加

No 操作 ユーザー ソースDB ターゲットDB
1 CDBへログイン oracle dblogin userid c##gguser@ORCLCDB password oracle 不要
2 Capture登録 oracle REGISTER EXTRACT capture1 DATABASE CONTAINER(ORCLPDB1) 不要
3 Capture追加 oracle ADD EXTRACT capture1, integrated tranlog, begin now 不要
4 Exttrail追加 oracle ADD EXTTRAIL /gg/dirdat/capture1/lt, extract CAPTURE1, megabytes 500 不要
5 Capture登録確認 oracle info all 不要
実行例
GGSCI (myora1) 2> dblogin userid c##gguser@ORCLCDB password oracle
Successfully logged into database CDB$ROOT.

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 3> REGISTER EXTRACT capture1 DATABASE CONTAINER(ORCLPDB1)

2021-xx-xx xx:xx:xx  INFO    OGG-02003  Extract CAPTURE1 successfully registered with database at SCN 2330023.

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 5> ADD EXTRACT capture1, integrated tranlog, begin now
EXTRACT (Integrated) added.

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 7> ADD EXTTRAIL /gg/dirdat/capture1/lt, extract CAPTURE1, megabytes 500
EXTTRAIL added.

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 10> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     STOPPED
EXTRACT     STOPPED     CAPTURE1    00:00:00      00:05:16

Data Pump パラメータ設定

No 操作 ユーザー ソースDB ターゲットDB
1 Data Pump パラメータ設定 oracle edit params pump1
※以下の値を記入
EXTRACT pump1
RMTHOST 192.168.56.60,MGRPORT 7809,PARAMS "-f"
RMTTRAIL /gg/dirdat/pump1/rt
TABLE ORCLPDB1.c##gguser.*;
不要

Data Pump プロセス追加

No 操作 ユーザー ソースDB ターゲットDB
1 CDBへログイン oracle dblogin userid c##gguser@ORCLCDB password oracle 不要
2 Data Pump追加 oracle ADD EXTRACT PUMP1, exttrailsource /gg/dirdat/capture1/lt 不要
3 Rmttrail追加 oracle ADD RMTTRAIL /gg/dirdat/pump1/rt, extract PUMP1 不要
4 Data Pump登録確認 oracle info all 不要
実行例
GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 11> edit params pump1

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 12> dblogin userid c##gguser@ORCLCDB password oracle
Successfully logged into database CDB$ROOT.

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 14> ADD EXTRACT PUMP1, exttrailsource /gg/dirdat/capture1/lt
EXTRACT added.

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 15> ADD RMTTRAIL /gg/dirdat/pump1/rt, extract PUMP1
RMTTRAIL added.

GGSCI (myora1 as c##gguser@ORCLCDB/CDB$ROOT) 16> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     STOPPED
EXTRACT     STOPPED     CAPTURE1    00:00:00      00:42:23
EXTRACT     STOPPED     PUMP1       00:00:00      00:00:14

Replicat パラメータ設定

No 操作 ユーザー ソースDB ターゲットDB
1 ggsci 起動 oracle 不要 /gg/ggsci
2 CDBへログイン oracle 不要 dblogin userid c##gguser@ORCLCDB password oracle
3 Replicat パラメータ設定 oracle 不要 edit params repli2
※以下の値を記入
REPLICAT repli2
USERID c##gguser@ORCLPDB1, PASSWORD oracle
MAP ORCLPDB1.c##gguser.*, TARGET ORCLPDB1.c##gguser.*;

Replicat プロセス追加

No 操作 ユーザー ソースDB ターゲットDB
1 CDBへログイン oracle 不要 dblogin userid c##gguser@ORCLCDB password oracle
2 Replicat 追加 oracle 不要 ADD REPLICAT repli2, INTEGRATED, EXTTRAIL /gg/dirdat/pump1/rt
3 Replicat 登録確認 oracle 不要 info all
実行例
[oracle@myora2 ~]$ /gg/ggsci

GGSCI (myora2) 1> dblogin userid c##gguser@ORCLCDB password oracle
Successfully logged into database CDB$ROOT.

GGSCI (myora2 as c##gguser@ORCLCDB/CDB$ROOT) 2> edit params repli2

GGSCI (myora2) 4> dblogin userid c##gguser@ORCLCDB password oracle
Successfully logged into database CDB$ROOT.

GGSCI (myora2 as c##gguser@ORCLCDB/CDB$ROOT) 5> ADD REPLICAT repli2, INTEGRATED, EXTTRAIL /gg/dirdat/pump1/rt
REPLICAT (Integrated) added.

GGSCI (myora2 as c##gguser@ORCLCDB/CDB$ROOT) 6> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     STOPPED
REPLICAT    STOPPED     REPLI2      00:00:00      00:00:07

サプリメンタルロギング設定

No 操作 ユーザー ソースDB ターゲットDB
1 ggsci 起動 oracle /gg/ggsci 不要
2 CDBへログイン oracle dblogin userid c##gguser@ORCLPDB1 password oracle 不要
3 SCHEMATRANDATA追加 oracle ADD SCHEMATRANDATA c##gguser 不要
実行例
GGSCI (myora1) 1> dblogin userid c##gguser@ORCLPDB1 password oracle
Successfully logged into database ORCLPDB1.

GGSCI (myora1 as c##gguser@ORCLCDB/ORCLPDB1) 2> ADD SCHEMATRANDATA c##gguser

2021-xx-xx 05:31:02  INFO    OGG-01788  SCHEMATRANDATA has been added on schema "c##gguser".

2021-xx-xx 05:31:02  INFO    OGG-01976  SCHEMATRANDATA for scheduling columns has been added on schema "c##gguser".

2021-xx-xx 05:31:02  INFO    OGG-10154  Schema level PREPARECSN set to mode NOWAIT on schema "c##gguser".

以上

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?