こんにちは。
今回は、OracleDBA,データリアルタイム同期,データ移行などを扱いたい方を対象に、Oracle GoldenGate導入について解説した記事を書きました。
ご参考に、ぜひご一読ください。
Oracle GoldenGate とは
異機種のデータベース間で、リアルタイムでデータをレプリケーションするための製品です。
主な特徴:
・高速
・軽量
・柔軟
・DBサーバーに稼働
・異なるデータベース間連携
・異なるOS間連携
・双方向同期可能
Oracle GoldenGate 全体イメージ
- データベースの差分のログをTrailファイルという汎用的なフォーマットに変換して転送する
- ManagerプロセスはGoldenGate全体を管理する
- Captureプロセスはソースデータベースからの変更データを抽出してTrailファイルという汎用的なフォーマットに変換して保存する
- DataPumpプロセスはTrailファイルをターゲット側のCollectorプロセスに転送する
- CollectorプロセスはTrailファイルを受信し、ローカルに保存する
- ReplicatプロセスはTrailファイルからデータを読み出し、ターゲットデータベースに反映する
ここからは、GoldenGate12cの統合モードを利用したOracle Database間のデータ連携の説明を行います。
Oracle GoldenGate 導入
環境構成
ソース側(server#A) | Oracle Datebase 12c |
Oracle GoldenGate 12c | |
スキーマ: test | |
テーブル: sample1 | |
ターゲット側(server#B) | Oracle Datebase 12c |
Oracle GoldenGate 12c | |
スキーマ: test | |
テーブル: sample1 |
1.Oracle Database の構成
① ロギング・プロパティを構成する(Server#A)
サプリメンタル・ロギングは、通常REDOログに記録された情報だけでなく、
GoldenGateなどがレプリケーションを行うために必要な情報をREDOログに追加する機能です。
$sqlplus / as sysdba
SQL>alter database add supplemental log data;
SQL>alter database force logging;
② Oracle GoldenGateを有効化する(Server#A , Server#B)
SQL>alter system set enable_goldengate_replication=true;
③ Oracle Data サーバ・リソースを調整する(Server#A , Server#B)
GoldenGateの統合モードを利用するため、
Oracleデータベースの「stream_pool_size」を設定する
推奨値:(max_sgz_size X parallism)+ 0.25
SQL>alter system set stream_pool_size=1250M scope=both;
④ Oracle GoldenGate用ユーザーを作成する(Server#A , Server#B)
SQL>create user ogg identified by oracle;
SQL>grant connect to ogg;
SQL>grant resource to ogg;
SQL>grant dba to ogg;
SQL>exec dbms_goldengate_auth.grant_admin_privilege('ogg');
2.Oracle GoldenGate の導入
① 事前準備(Server#A , Server#B)
GoldenGateGateホームフォルダ、Trailファイルのフォルダを作成およびバイナリファイルの解凍を行う
$mkdir -p /u01/app/goldengate
$mkdir -p /u01/app/goldengate/trail
$unzip <GG Installer Package>.zip
② レスポンスファイル作成(Server#A , Server#B)
GoldenGateホームフォルダ、Trailファイルのフォルダの作成、バイナリファイルの解凍を行う
パラメータ | 設定値 | 説明 |
INTALL_OPTION | ORA12c | データベースのバージョン |
SOFTWARE_LOCATION | /u01/app/goldengate | インストール場所 |
START_MANAGER | TRUE | インストール後 Manager 起動する |
MANAGER_PORT | 31000 | Managerのポート番号 |
DATABASE_LOCATION | $ORACLE_HOME | Oracleホーム |
INVENTORY_LOCATION | oraInventoryのPATH | インベントリのフルパス |
UNIX_GROUP_NAME | oinstall | 所属グループ名 |
③ Oracle GoldenGateインストール(Server#A , Server#B)
$<GG Installer Full Path>/runInstaller -silent -nowait -responseFile <Response File Full Path>/gg.rsp
④ ディレクトリを作成する (Server#A , Server#B)
$ cd /u01/app/goldengate
$./ggsci
GGSCI> CREATE SUBDIRS
⑤ グローバルパラメータを設定する (Server#A , Server#B)
パラメータファイル:/u01/app/goldengate/GLOBALS
syslog none
allowoutputdir /u01/app/goldengate/trail
⑥ MANEGERの設定を行い、起動する(Server#A , Server#B)
パラメータファイル:/u01/app/goldengate/dirprm/mgr.prm
port 31000
dynamicportlist 31100-31109
Managerを起動する
$cd /u01/app/goldengate/
$./ggsci
GGSCI> start mgr
GGSCI> INFO ALL
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER STARTED
⑦ スキーマ・レベルのサプリメンタル・ロギングを有効化する(Server#A)
サンプルスキーマ: test
$cd /u01/app/goldengate/
$./ggsci
GGSCI>dblogin userid ogg,password oracle
GGSCI>add schematrandata test
⑧ Captureを設定する (Server#A)
パラメータファイル:/u01/app/goldengate/dirprm/cap.prm
extract cap
userid ogg, password oracle
ddl include mapped
exttrail /u01/app/goldengate/trail
table test.*
Captureグループをデータベースに登録する
$cd /u01/app/goldengate/
$./ggsci
GGSCI>dblogin userid ogg,password oracle
GGSCI>register extract cap database
GGSCI>add extract cap integrated tranlog,begin now
GGSCI>add exttrail /oracle/trail/source/sr,extract cap
⑨ Datapumpを設定する (Server#A)
パラメータファイル:/u01/app/goldengate/dirprm/puma.prm
ソーステーブル:test.sample1
extract pump
passthru
rmthost Server\#B_IP, mgrport 31000
rmttrail /u01/app/goldengate/trail
table test.sample1;
DataPumpを構成する
GGSCI>add extract pump,exttrailsource /u01/app/goldengate/trail
GGSCI>add rmttrail /u01/app/goldengate/trail,extract pump
⑩ Replicatを設定する (Server#B)
パラメータファイル:/u01/app/goldengate/dirprm/rep.prm
ターゲットテーブル:test.sample1;
replicat rep
userid ogg, password oracle
MAP test.sample1, TARGET test.sample1;
グループを追加する (統合モード)
GGSCI>dblogin userid ogg,password oracle
GGSCI>add replicat rep, integrated ,exttrail /u01/app/goldengate/tail
⑪ GoldenGateのサービスを起動する
GGSCI>start *
GGSCI>info all
以上で、GoldenGateの設定が完了となります。
ソース(Server#A)側の[test.sample1]のデータを更新したら、ターゲット(Server#B)の方も更新されたことを確認できます。
簡単ではありますが、Oracle GoldenGate12cの解説でした。
次回は、12.2のデータベースバックアップについて記事にしたいと思います。