Oracle GoldenGate 12c導入の手引き

こんにちは。
今回は、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_OPTIONORA12cデータベースのバージョン
SOFTWARE_LOCATION/u01/app/goldengateインストール場所
START_MANAGERTRUEインストール後 Manager 起動する
MANAGER_PORT31000Managerのポート番号
DATABASE_LOCATION$ORACLE_HOMEOracleホーム
INVENTORY_LOCATIONoraInventoryのPATHインベントリのフルパス
UNIX_GROUP_NAMEoinstall所属グループ名

③ 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のデータベースバックアップについて記事にしたいと思います。