Oracle Data Guard / Oracle
GoldenGate 高可用性のための
実践Tips
製品戦略統括本部 戦略製品ソリューション本部
Principal Sales Consultant
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは
できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン
ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ
い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい
ては、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 4
Oracle Maximum Availability Architecture (MAA)
ノード障害
データ障害
システム変更
アプリ変更
Real Application Clusters
Flashback
RMAN & Oracle Secure Backup
ASM
Active Data Guard
GoldenGate
Online Reconfiguration
Rolling Upgrades
Edition-based Redefinition
Ora
cle
M
A
A
Be
st Pr
ac
tice
s
Online Redefinition
データ変更
MAA を構成する機能・製品
計画外停止
計画停止
アジェンダ
前半:Oracle Data Guard のTips
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 6
前半アジェンダ
データ破損対策としての Data Guard
データロス・ゼロのフェイルオーバー
RACスタンバイでの適用インスタンスの可用性
スタンバイDBの賢い構築法
Data Guard と GoldenGateの違い
データ破損対策としての Data Guard
Data Guard のアーキテクチャ
データファイル
オンライン
REDOログ
REDO転送
ログバッファまたはオンラインREDOログ
からREDOを転送、スタンバイ側で受信
ログ
バッファ
ログ
バッファ
LGWR
NSS/NSA
RFS
アーカイブ
ログ
データファイル
スタンバイ
REDOログ
REDO適用
リカバリの仕組みでREDO
を逐次適用
MRP
サーバー
プロセス
アーカイブ
ログ
プライマリ
スタンバイ
データファイルはデータブロックレベルで等しいが、
データファイルをコピーしているわけではない
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 8
データ破損対策としての Data Guard
プライマリのデータファイル破損をスタンバイから復旧
データファイル
オンライン
REDOログ
ログ
バッファ
ログ
バッファ
LGWR
NSS/NSA
RFS
アーカイブ
ログ
データファイル
スタンバイ
REDOログ
MRP
サーバー
プロセス
アーカイブ
ログ
プライマリ
スタンバイ
リストア / リカバリ
プライマリのデータファイルが破損しても、スタンバイのデータファイルは破損しない
データ破損対策としての Data Guard
Active Data Guard による、自動ブロック修復(Oracle 11gR2)
MAX(C1)
---
5000
②ブロック破損
の検知
④スタンバイ側の正常な
ブロックを自動的に転送
③スタンバイに正常
ブロックを要求
⑤自動的に
修復
①SQL発行
⑥エラーなく
結果が返る
Waiting Auto BMR response
for (file# 7, block# 261)
Auto BMR successful
Requesting Auto BMR for
(file# 7, block# 261)
alert
alert
SQL> SELECT max(c1)
FROM tab1;
破損を自動的に修復。アプリケーションは障害に気づかない
※ Active Data Guard オプション
があれば使用可能
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 10
データ破損対策としての Data Guard
REDO転送は同期でも非同期でも良い
タイムアウト(60秒)に達するまでに、
正常ブロックがスタンバイに適用されていれば
自動ブロック修復は動作する
自動ブロック修復の動き
データ破損対策としての Data Guard
ストレージ層の障害により書き込みに失敗しているにも関わらず、
OSに対して正常完了の通知を返す
更新(update)のトランザクションでLost Writeが起こると?
–
次のトランザクションがLost Writeのブロックにアクセスしてもエラーにならない
–
ディスク上のデータは更新前のままだが、アプリケーションは更新後
のデータとして扱う
–
正しくないデータをユーザー/顧客に提供するリスク
–
Oracleが障害を検知するまでに時間がかかるケースがある
Lost Write
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 12
データ破損対策としての Data Guard
初期化パラメータ(Oracle 11.1 以降)
DB_LOST_WRITE_PROTECT
–
TYPICAL:
read / write の表領域について、バッファキャッシュ読み取りをREDOに記録
–
FULL:
read / write, read-onlyの表領域について、バッファキャッシュ読み取りをREDOに記録
–
プライマリから受信したREDOブロックのSCNとフィジカル・スタンバイ上のSCNを比較する
プライマリのSCNがスタンバイのSCNより低い場合、スタンバイはLost Write を検知
ORA-00752: recovery detected a lost write of a data block
ORA-10567: Redo is inconsistent with data block (file# 7, block# 26)
ORA-10564: tablespace TBS_2
ORA-01110: data file 7: '/oracle/dbs/btbs_21.f'
ORA-10561: block type 'TRANSACTION MANAGED DATA BLOCK', data object# 57503
スタンバイにフェイルオーバーすることで復旧
–
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
参考:MOS Note 1265884.1 - Resolving ORA-752 or ORA-600 [3020] During Standby Recovery
(参考)計画外停止の主な要因(過去3年)
2012 IOUG Database Availability Survey アンケート結果より
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 14
データ破損は I/Oのあらゆる層で起こり得る障害
Oracleは、ブロック構造を理解したデータ検証、破損検知、修復が可能
–
DB_BLOCK_CHECKSUM
–
DB_BLOCK_CHECKING
–
DB_LOST_WRITE_PROTECT
–
ASM
–
Flashback Technology
–
Active Data Guard 自動ブロック修復
Oracle DBによるデータ破損対策の全体像
Preventing, Detecting, and Repairing Block Corruption: Oracle Database 11g
–
http://www.oracle.com/technetwork/database/availability/maa-datacorruption-bestpractices-396464.pdf
ビルトインされた Data Validation
Disk
FC / TCP/IP
Disk Firmware
HBA / NIC
SAN/NAS
Device Driver
OS
CPU/Memory
I/
O
P
A
T
H
(参考)Oracle DBによるデータ破損対策
前半アジェンダ
データ破損対策としての Data Guard
データロス・ゼロのフェイルオーバー
RACスタンバイでの適用インスタンスの可用性
スタンバイDBの賢い構築法
Data Guard と GoldenGateの違い
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 16
データロス・ゼロのフェイルオーバー
スイッチオーバー
–
計画停止用途
–
データロスなしを保証
Data Guard の切り替え操作
昇
格
降
格
フェイルオーバー
–
計画外停止用途
–
同期転送ならデータロスなし
–
非同期転送ならデータロストあり
(未転送データ分)
昇
格
データロス・ゼロのフェイルオーバー
システム表領域破損でデータベースをオープンできない
スタンバイへのフェイルオーバーは可能、但しデータロスは?
障害の例
SQL> alter database open; --- primary cannot be opened
alter database open
*
ERROR at line 1:
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/home/oracle/dbs/t_db1.f'
ORA-01210: data file header is media corrupt
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 18
データロス・ゼロのフェイルオーバー
以下の条件で、未転送データをスタンバイに強制転送(Oracle 11.2以降)
–
プライマリDBがマウント可能(データファイルは不要)
–
制御ファイル、オンライン/アーカイブREDOログにアクセス可能
※条件を満たせばデータ・ロス・ゼロのフェイルオーバーが可能
実行コマンド
SQL> alter system flush redo to ‘boston’;
(スタンバイに適用されるまでコマンドレスポンスを待つ)
SQL> alter system flush redo to ‘boston‘ no confirm apply;
(スタンバイに転送されるまでコマンドレスポンスを待つ)
データロス・ゼロのフェイルオーバー
アラート・ログ出力
Media Recovery: FLUSH REDO EOR logs encountered.
Media Recovery recovers through FLUSH REDO EOR logs.
Tue Aug 30 21:45:36 2011
…………
Standby switchover readiness check: Checking whether recovery
applied all redo..
Physical Standby applied all the redo from the primary.
データロス・ゼロのフェイルオーバーを実行可能
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 20
前半アジェンダ
データ破損対策としての Data Guard
データロス・ゼロのフェイルオーバー
RACスタンバイでの適用インスタンスの可用性
スタンバイDBの賢い構築法
Data Guard と GoldenGateの違い
RACスタンバイでの適用インスタンスの可用性
overview
スタンバイがRACの場合、
REDO適用は1インスタンスの
みで行われる
適用インスタンスがダウンした
時の対応は?
Solution: Data Guard Broker
REDO転送
Active Standby Instances
Apply Instance
N1
N1
N2
N2
N3
N3
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 22
RACスタンバイでの適用インスタンスの可用性
PreferredApplyInstance: 優先する適用インスタンス
ApplyInstanceTimeout: 適用インスタンスの障害を検知して、他のインスタンスへのフェ
イルオーバー時間(デフォルト0秒)
フェイルオーバー時の挙動
–
PreferredApplyInstance が使用可能であれば、使う
–
PreferredApplyInstance が使用できない場合はランダムに選択される
Active Data Guardの場合
–
障害前にオープンしていたインスタンスは、Brokerにより自動的にオープンされる
前半アジェンダ
データ破損対策としての Data Guard
データロス・ゼロのフェイルオーバー
RACスタンバイでの適用インスタンスの可用性
スタンバイDBの賢い構築法
Data Guard と GoldenGateの違い
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 24
スタンバイDBの賢い構築方法
1.
プライマリDBを設定(
Force logging / アーカイブ・ログ・モード)
2.
初期化パラメータの設定
3.
データベースファイルをスタンバイにコピー(
バックアップ / リストア or ネットワーク転送)
4.
REDOログの作成
5.
管理リカバリプロセスの開始
懸念
–
バックアップ / リストアの領域が必要。取得に時間がかかる
データファイルを直接コピーし、バックアップ / リストアを不要にする
–
ネットワーク帯域が狭いと、転送に時間がかかる
バックアップを圧縮して、転送量を抑える
一般的なスタンバイの構築方法
スタンバイDBの賢い構築方法
RMANでスタンバイ構築を最適化
パターン
手法
使用ポイント
使用可能バージョン
(1)
プライマリDBから直接コ
ピーして作成
(Duplicate from Active
Database)
•ネットワーク帯域が広い場合に有効
•バックアップ用領域が確保できない場合に有効
•DBサイズ / 帯域 で試算可能
•本番DBファイルに長時間のアクセスが発生 する
11gR1以降
(2)
プライマリDBの高速圧縮
バックアップから作成
(Advanced Compression)
• 圧縮率が高く、ネットワーク帯域が狭い場合に有効
•(3)より高速
•マルチセクション・バックアップによる高速化が可能
•試算にはバックアップ/リストアの性能と圧縮率が必要
11gR1以降
(3)
プライマリDBの標準圧縮
バックアップから作成
• 圧縮率が高く、ネットワーク帯域が狭い場合に有効
•(2)より低速
•試算にはバックアップ/リストアの性能と圧縮率が必要
10gR1以降
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 26
スタンバイDBの賢い構築方法
検証結果
処理内容
(1)
(2)
(3)
Backup
プライマリDBのバック
アップを取得
N/A
0:18:24
0:32:28
SCP
バックアップをスタンバイ
DBサーバーに転送
N/A
0:29:11
0:26:23
Nomount
スタンバイDBインスタン
スを起動
0:00:04
0:00:04
0:00:06
Duplicate
DBリストアとREDOログ
ファイルの作成
3:39:01
0:24:40
0:41:33
StartMRP
スタンバイDBのリカバリ
プロセスを起動
0:00:06
0:00:07
0:00:07
合計
3:39:11
1:12:26
1:40:37
検証環境
–
4 core のIAサーバー
–
メモリ8GB
–
Oracle Linux 5.3 (64bit)
–
Oracle 11.2.0.2 (single)
–
ネットワーク帯域40Mbps (実効4.6MB/s程度)
テストデータ
–
データファイル57GB (データサイズ52GB)
スタンバイDBの賢い構築方法
ファイル転送性能
–
ネットワーク帯域に依存
本検証は実効4.6MB/s
バックアップ/リストア性能
–
ストレージI/O 性能と圧縮率に依存
–
本検証では高い圧縮効果
高速圧縮(2) : バックアップサイズ 7.9GB
標準圧縮(3) : バックアップサイズ 7.1GB
ポイントとなる性能値
(参考)RMANの圧縮機能
未使用ブロック圧縮 : 未使用のデータブロックは
スキップされる
バイナリ圧縮 : バックアップ出力時に圧縮アルゴリ
ズムを適用
データファイルサイズ 57.2GB
52.8GB
7.9GB
未使用ブロック圧縮
バイナリ圧縮
(例)パターン(2)の場合
- 4.4GB
6.7倍
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 28
参考:検証で使用したスクリプト抜粋:パターン(1)
#!/bin/sh
# 本スクリプトは、以下の作業後にスタンバイで実行します。
# 1. スタンバイにはlistener.oraで静的サービスを登録し、Nomoutでも接続可能な状態
# 2. パスワード・ファイルはプライマリのコピーをスタンバイのSIDに合わせてrenameし、
$ORACLE_HOME/dbsに配置済み
# 3. スタンバイ用の初期化パラメータファイルを作成済み
LOGDIR=<ログディレクトリ>
PRIMARYDB=<プライマリの接続記述子>
STANDBYDB=<スタンバイの接続記述子>
PASSWORD=<パスワード>
mkdir -p ${LOGDIR}
echo "Nomount,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
sqlplus / as sysdba <<EOF
startup nomount
exit
EOF
echo "Duplicate,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
(
echo "run{
CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
duplicate target database for standby from active database;
}"
echo "exit"
) | rman target sys/${PASSWORD}@${PRIMARYDB} auxiliary
sys/oracle@{STANDBYDB} > ${LOGDIR}/duplicate.log
echo "StartMRP,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
sqlplus / as sysdba <<EOF
alter database recover managed standby database using current logfile disconnect;
exit
EOF
参考:検証で使用したスクリプト抜粋:パターン(2)
#!/bin/sh # 本スクリプトは、以下の作業後にスタンバイで実行します。 # 1. スタンバイにはlistener.oraで静的サービスを登録し、Nomoutでも接続可能な状態 # 2. パスワード・ファイルはプライマリのコピーをスタンバイのSIDに合わせてrenameし、$ORACLE_HOME/dbsに 配置済み # 3. スタンバイ用の初期化パラメータファイルを作成済み LOGDIR=<ログディレクトリ> BACKUPDIR=<バックアップ出力先のディレクトリ> PRIMARYHOST=<プライマリのホスト名> PRIMARYDB=<プライマリの接続記述子> STANDBYDB=<スタンバイの接続記述子> PASSWORD=<パスワード> mkdir -p ${LOGDIR}echo "Backup,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
# 圧縮アルゴリズムの設定方法はOracleバージョンにより異なります。本スクリプトは 11.2 のものです (
echo "run {
CONFIGURE DEVICE TYPE DISK PARALLELISM 4; configure compression ALGORITHM 'medium';
backup as compressed backupset section size 500M DEVICE TYPE DISK FORMAT '${BACKUPDIR}/%U' database plus archivelog;
BACKUP DEVICE TYPE DISK FORMAT ''${BACKUPDIR}/%U' CURRENT CONTROLFILE FOR STANDBY; }"
echo "exit"
)| rman target sys/${PASSWORD}@$<PRIMARYDB> > ${LOGDIR}/backup.log
echo "SCP,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log scp -rp ${PRIMARYHOST}:${BACKUPDIR}/* ${BACKUPDIR}
du -h ${BACKUPDIR} > ${LOGDIR}/size_of_backup.log
echo "Normount,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
sqlplus / as sysdba <<EOF
startup nomount
exit
EOF
echo "Duplicate,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
(
echo "run{
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
DUPLICATE TARGET DATABASE FOR STANDBY;
}"
echo "exit"
) | rman target sys/${PASSWORD}@${PRIMARYDB} auxiliary sys/oracle@${STANDBYDB} >
${LOGDIR}/duplicate.log
echo "StartMRP,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
sqlplus / as sysdba <<EOF
alter database recover managed standby database using current logfile disconnect;
exit
EOF
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 30
参考:検証で使用したスクリプト抜粋:パターン(3)
#!/bin/sh # 本スクリプトは、以下の作業後にスタンバイで実行します。 # 1. スタンバイにはlistener.oraで静的サービスを登録し、Nomoutでも接続可能な状態 # 2. パスワード・ファイルはプライマリのコピーをスタンバイのSIDに合わせてrenameし、$ORACLE_HOME/dbsに 配置済み # 3. スタンバイ用の初期化パラメータファイルを作成済み # ※ 10gの場合、スタンバイ制御のバックアップが個別に必要です。詳細はマニュアルをご参照ください。 LOGDIR=<ログディレクトリ> BACKUPDIR=<バックアップ出力先のディレクトリ> PRIMARYHOST=<プライマリのホスト名> PRIMARYDB=<プライマリの接続記述子> STANDBYDB=<スタンバイの接続記述子> PASSWORD=<パスワード> mkdir -p ${LOGDIR}echo "Backup,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
# 圧縮アルゴリズムの設定方法はOracleバージョンにより異なります。本スクリプトは 11.2 のものです (
echo "run {
CONFIGURE DEVICE TYPE DISK PARALLELISM 4; configure compression ALGORITHM 'basic';
backup as compressed backupset DEVICE TYPE DISK FORMAT '${BACKUPDIR}/%U' database plus archivelog;
BACKUP DEVICE TYPE DISK FORMAT '${BACKUPDIR}/%U' CURRENT CONTROLFILE FOR STANDBY; }"
echo "exit"
)| rman target sys/${PASSWORD}@${PRIMARYDB} > ${LOGDIR}/backup.log
echo "SCP,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log scp -rp ${PRIMARYHOST}:${BACKUPDIR}/* ${BACKUPDIR}
du -h ${BACKUPDIR} > ${LOGDIR}/size_of_backup.log
echo "Normount,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
sqlplus / as sysdba <<EOF
startup nomount
exit
EOF
echo "Duplicate,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
(
echo "run{
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
DUPLICATE TARGET DATABASE FOR STANDBY;
}"
echo "exit"
) | rman target sys/${PASSWORD}@${PRIMARYDB} auxiliary sys/oracle@${STANDBYDB} >
${LOGDIR}/duplicate.log
echo "StartMRP,`date +%y%m%d,%H%M%S`" >> ${LOGDIR}/time.log
sqlplus / as sysdba <<EOF
alter database recover managed standby database using current logfile disconnect;
exit
EOF
前半アジェンダ
データ破損対策としての Data Guard
データロス・ゼロのフェイルオーバー
RACスタンバイでの適用インスタンスの可用性
スタンバイDBの賢い構築法
Data Guard と GoldenGateの違い
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 32
Data Guard と GoldenGate の違い
DBの完全なコピーに特化し
て、性能・管理性・データ保護
考慮されたアーキテクチャ
REDO適用によるデータ同期
アーキテクチャ
ログ
バッファ
ログ
バッファ
NSS
/ NSA
RFS
データファイル
データファイル
オンライン
REDOログ
Data Guard
LGWR
REDOログ
Capture
Trail
Files
Pump
Trail
Delivery
Files
GoldenGate
DBとの分離性、プロセス毎
の分離性、構成の柔軟性が
考慮されたアーキテクチャ
SQL適用によるデータ同期
MRP
スタンバイ
REDOログ
Data Guard と GoldenGate の違い
データレプリケーションと切り替えの考え方
Data Guard
DBレベルで正(プライマリ)、副(スタンバ
イ)の概念を持つ
実運用を想定した切り替え機能(スイッチ
オーバー / フェイルオーバー)を持つ
GoldenGate
正 / 副の考え方はない。Read / Write 可能
なDB間のデータレプリケーション
GoldenGate は、DB間の更新トランザク
ションのレプリケーションをするのみ。実運
用での切り替え手順は管理者が考える必
要がある
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 34
Data Guard と GoldenGate の違い
出来ること、出来ないこと
Data Guardだけが出来ること
同期転送
データ破損検知・修復
- 自動ブロック修復(Active Data Guard)
- DB_LOST_WRITE_PROTECT
スタンバイのバックアップをプライマリにリス
トア
自動フェイルオーバー
(Data Guard Broker)
全てのデータ型・オブジェクトに対応
GoldenGateだけが出来ること
Active-Active構成(両DBで書き込み可能)
異OSかつ異バージョン間の
レプリケーション
表単位のレプリケーション
複数DBから単一DBへ集約
フィルタ / 変換処理をかませたレプリケー
ション
Standard Editionのレプリケーション
前半アジェンダ
データ破壊対策としての Data Guard
データロス・ゼロのフェイルオーバー
RACスタンバイでの適用インスタンスの可用性
スタンバイDBの賢い構築法
Data Guard と GoldenGateの違い
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 36
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 1
Oracle Data Guard / Oracle
GoldenGate 高可用性のための
実践Tips
日本オラクル株式会社
テクノロジーソリューションコンサルティング統括本部
テクニカルアーキテクト本部 データベースアーキテクト部
シニアコンサルタント
浅井 純
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 3
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。
また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことは
できません。以下の事項は、マテリアルやコード、機能を提供することをコミットメン
ト(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さ
い。オラクル製品に関して記載されている機能の開発、リリースおよび時期につい
ては、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
アジェンダ
前半:Oracle Data Guard の Tips
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 5
後半アジェンダ
Oracle GoldenGate 基本アーキテクチャ
GoldenGate 自動フェイル・オーバー設計
自動フェイル・オーバー設計以外の高可用性検討事項
【前提条件】
Real Application Clusters 環境(ソース/ターゲットともに)
Oracle GoldenGate 基本アーキテクチャ
Oracle GoldenGate
Trail
ファイル
差分ログ
ソース
ターゲット
OS
Oracle GoldenGate
Trail
ファイル
OS
ターゲット
データベース
ソース
データベース
•
データベースの差分ログを
Trailファイル
という汎用的なフォーマットに変換して転送
•
各プロセスの進行状況は
チェックポイントファイル(バイナリファイルまたはデータベース上の表)
に保存
•
上記の構成の他に、データベース・サーバとは別のサーバにGoldenGateを切り出す構成などが可能
チェックポイント
ファイル
チェックポイント
ファイル
チェックポイント
ファイル
抽出プロセス
Extract
(Capture)
転送プロセス
Extract
(Data Pump)
管理プロセス
Manager
受信プロセス
Collector
適用プロセス
Replicat
管理プロセス
Manager
チェック
ポイント表
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 7
後半アジェンダ
Oracle GoldenGate 基本アーキテクチャ
GoldenGate 自動フェイル・オーバー設計
自動フェイル・オーバー設計以外の高可用性検討事項
【前提条件】
Real Application Clusters 環境(ソース/ターゲットともに)
GoldenGate の自動フェイル・オーバー設計
GoldenGate の各プロセスは 1 ノードのみで稼働
接続先ノードを意識させないためのアプリケーション VIP の作成
フェイル・オーバー後の伝播再開のために必要なファイルを共有領域に配
置
【参考】 NOTE:1313703.1 Oracle GoldenGate Best Practices: Oracle
GoldenGate high availability using Oracle Clusterware
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 9
GoldenGate の自動フェイル・オーバー設計
ソース/ターゲット別に GoldenGate を稼働させるノードは1つ
–
ソース/ターゲットとも複数の GoldenGate プロセスを 1 ノードで稼働させる
–
Managerプロセス : Oracle Clusterware による管理
–
Managerプロセス以外 : <起動> Manager プロセスによる管理
<停止> Oracle Clusterware による管理
各 GoldenGate プロセスの稼働ノード
Oracle Grid Infrastracture
ターゲット
Oracle Grid Infrastracture
ソース
Capture
Data Pump
Manager
Collector
Replicat
Manager
起動
停止
フェイル・
オーバー
フェイル・
オーバー
Capture
Data Pump
Manager
Collector
Replicat
GoldenGate の自動フェイル・オーバー設計
接続先を意識させないためのアプリケーション VIP
–
ターゲット側フェイル・オーバーを意識させない為の設定
–
Data Pump プロセスの接続先としてアプリケーション VIP を用意
GoldenGate 用アプリケーション VIP の作成
Oracle Grid Infrastracture
ターゲット
Oracle Grid Infrastracture
ソース
Data Pump
Collector
APP VIP
Manager
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 11
Oracle Grid Infrastracture
GoldenGate の自動フェイル・オーバー設計
接続先を意識させないためのアプリケーション VIP
–
ターゲット側フェイル・オーバーを意識させない為の設定
–
Data Pump プロセスの接続先としてアプリケーション VIP を用意
GoldenGate 用アプリケーション VIP の作成
ターゲット
Oracle Grid Infrastracture
ソース
Data Pump
Collector
APP VIP
Manager
Oracle Grid Infrastracture
GoldenGate の自動フェイル・オーバー設計
以下の 2 つのリソースをOracle Clusterware に登録して、同一ノードで稼
働するように設計
–
GoldenGate 用アプリケーション VIP
–
Manager プロセス管理用 GoldenGate リソース
Oracle Clusterware に登録するリソース
ターゲット
Oracle Grid Infrastracture
ソース
APP VIP
GGAPP(Manager)
APP VIP
GGAPP(Manager)
APP VIP
GGAPP(Manager)
APP VIP
GGAPP(Manager)
フェイル・
オーバー
フェイル・
オーバー
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 13
Capture
Data Pump
Collector
Replicat
GoldenGate の自動フェイル・オーバー設計
自動フェイル・オーバーのための Oracle Clusterware へのリソース登録
DB
Instance
GGAPP(Manager)
ASM
Instance
APP Vip
強い依存性
プルアップ依存性
GoldenGate 設定
による依存関係
【開始の依存関係】
DBLOGREADER
の場合
ASMUSER /
ASMPASSWORD の場合
Network
DB
Instance
GGAPP(Manager)
ASM
Instance
APP Vip
Capture
Data Pump
Collector
Replicat
強い依存性
【停止の依存関係】
GoldenGate の自動フェイル・オーバー設計
フェイル・オーバーを考慮して必要なファイルを共有領域に配置
–
上記以外にも以下の関連ファイルの配置が必要
アーカイブ REDO ログ・ファイル/パラメータ・ファイル/プロセス状態ファイル/
レポート・ファイル/ Discard ファイル/ Bounded Recovery ファイル(ソースのみ)
共有領域への配置が必要な GoldenGate 関連ファイル
ソース
Trail ファイル
チェックポイント
ファイル
チェックポイント
ファイル
Capture
Data Pump
Trail ファイル
チェックポイント
ファイル
Collector
Replicat
ターゲット
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 15
GoldenGate の自動フェイル・オーバー設計
共有領域への配置が必要な GoldenGate 関連ファイル
Trail ファイル
チェックポイント
ファイル
Collector
Replicat
ターゲット
Capture
Data Pump
ソース
Trail ファイル
チェックポイント
ファイル
チェックポイント
ファイル
Capture
Data Pump
フェイル・オーバーを考慮して必要なファイルを共有領域に配置
–
上記以外にも以下の関連ファイルの配置が必要
アーカイブ REDO ログ・ファイル/パラメータ・ファイル/プロセス状態ファイル/
レポート・ファイル/ Discard ファイル/ Bounded Recovery ファイル(ソースのみ)
GoldenGate の自動フェイル・オーバー設計
共有領域に配置
–
共有領域の耐障害性の検討が必要
各ノードのローカルに配置
–
共有領域に配置が必要なファイルのうち、出力先設定変更ができないファイル
はシンボリック・リンク等で共有領域に配置させる
GoldenGate バイナリの配置先
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 17
後半アジェンダ
Oracle GoldenGate 基本アーキテクチャ
GoldenGate 自動フェイル・オーバー設計
自動フェイル・オーバー設計以外の高可用性検討事項
【前提条件】
Real Application Clusters 環境(ソース/ターゲットともに)
自動フェイル・オーバー設計以外の高可用性検討事項
共有領域が準備できないケース
–
ACFS / DBFS を活用する場合の考慮事項
Trail ファイルのデータ欠落の防止
–
共有領域マウント設定の考慮事項
フェイル・オーバーを伴わない障害発生時のデータ伝播の継続
–
接続先インスタンス設定の考慮事項
–
Collector プロセスの TIMEOUT 設定
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 19
自動フェイル・オーバー設計以外の高可用性検討事項
ACFS ( Automatic Storage Management (ASM) Cluster File System )
–
GoldenGate バイナリは配置制限あり。
–
ACFS は複数ノードでマウント可能。但し、 GoldenGate 稼働ノード以外でプロ
セスのステータスを確認すると正しくないステータスが表示される。
【参考】 NOTE:1350133.1 OGG displaying incorrect status from inactive node
⇒ ACFS を使用する場合は以下のどちらかで対応
–
ACFS を 1 ノードでのみマウント
–
GoldenGate 稼働ノードでのみで操作 ( GoldenGate バイナリはローカルに配置)
自動フェイル・オーバー設計以外の高可用性検討事項
DBFS ( DataBase File System )
–
Exadata 環境では ACFS が利用できないため、 DBFS を利用
–
Bounded Recovery ファイルのみ配置制限あり。
GoldenGate 11.2以降、かつ、Oracle Database 11.2以降
–
DBFS は複数ノードでマウントすることは可能。但し、複数ノードでマウントされ
た状態ではファイル・ロッキング機能がサポートされない。
⇒ DBFS を使用する場合は1ノードのみマウントさせる。
共有領域が準備できないケース
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 21
自動フェイル・オーバー設計以外の高可用性検討事項
共有領域へのTrailファイル書き込み時にデータ欠落する可能性
–
Trail ファイルへの書き込み内容がディスクにフラッシュされる前に障害が発生
するケース
共有領域のマウント設定で書き込み時のディスクへのフラッシュを強制させ
ることで防止可能
【参考】 NOTE:1232303.1 Oracle GoldenGate Best Practice: NFS Mount
options for use with GoldenGate
自動フェイル・オーバー設計以外の高可用性検討事項
障害復旧後、欠落したデータが再伝播されて補完される可能性がある。
–
障害時に Trail ファイルに書き込みを行うプロセスも停止する。
–
障害復旧後のプロセス再起動で、書き込み先 Trail ファイルが切り替えられる。
Trail ファイル読み込み側プロセスのチェックポイント情報と Trail ファイルの
不整合が発生した場合、プロセスが停止する。
【参考】 NOTE:1138409.1 OGG EXTRACT / REPLICAT CHECKPOINT RBA
IS LARGER THAN LOCAL TRAIL SIZE
Trail ファイルのデータ欠落の防止
ディスク書き込み済みデータ
ディスク書き込み未済データ
ディスク書き込み未済データ
Trailファイルnnn
Trailファイルnnn+1
から消失する範囲
障害時にファイル
障害復旧後に次のTrailに
書き出される
障害発生前の書き
込み完了位置
実際のTrailファイル
のEOFの位置
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 23
自動フェイル・オーバー設計以外の高可用性検討事項
Classic Capture / Replicat からデータベースへの接続方法
–
データベース・インスタンス障害を考慮して、接続時フェイル・オーバーを設定
–
複数プロセス構成で、接続先インスタンスを分散させる
接続先インスタンス設定の考慮事項
ターゲット
Capture
Replicat
ソース
DB Instance
DB Instance
Replicat
tnsnames.ora
DB Instance
DB Instance
tnsnames.ora
Capture
tnsnames.ora
フェイル・
オーバー
自動フェイル・オーバー設計以外の高可用性検討事項
GoldenGate パラメータは共通
各ノードの tnsnames.ora は異なる
–
自ノードのインスタンスに優先的に接
続するように設定
インスタンス障害を考慮した接続時フェイル・オーバーの設定
Extract CAP01
USERID gguser
@ggcap
, PASSWORD oracle
・・・・・
cap01.prm (Capture のパラメータ)【共有領域に配置】
GGCAP =
(DESCRIPTION =
・・・・・
(ADDRESS=(PROTOCOL=TCP)(HOST=racsrc1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=racsrc2-vip)(PORT=1521))
・・・・・
tnsnames.ora 【1号機側】
Capture
DB Instance
tnsnames.ora
Capture
tnsnames.ora
フェイル・
オーバー
DB Instance
#1
#2
GGCAP =
(DESCRIPTION =
・・・・・
(ADDRESS=(PROTOCOL=TCP)(HOST=racsrc2-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=racsrc1-vip)(PORT=1521))
・・・・・
tnsnames.ora 【2号機側】
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 25
自動フェイル・オーバー設計以外の高可用性検討事項
GoldenGate パラメータで Replicat
毎に接続先を変更
tnsnames.ora でそれぞれの接続先
設定を定義
複数プロセス構成で接続先インスタンスの分散
Replicat REP01
USERID gguser
@ggrep1
, PASSWORD oracle
・・・・・
rep01.prm (Replicat のパラメータ)【共有領域に配置】
GGREP1 =
・・・・・
(ADDRESS=(PROTOCOL=TCP)(HOST=ractrg1-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=ractrg2-vip)(PORT=1521))
・・・・・
GGREP2 =
・・・・・
(ADDRESS=(PROTOCOL=TCP)(HOST=ractrg2-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=ractrg1-vip)(PORT=1521))
・・・・・
tnsnames.ora 【1号機側】
Replicat REP01
USERID gguser
@ggrep2
, PASSWORD oracle
・・・・・
rep02.prm (Replicat のパラメータ)【共有領域に配置】
Replicat
Replicat
DB Instance
DB Instance
tnsnames.ora
#1
#2
Oracle Grid Infrastracture
自動フェイル・オーバー設計以外の高可用性検討事項
Data Pump プロセスのフェイル・オーバー発生のケース
–
Collector プロセスは障害発生時に停止しない
–
フェイル・オーバー発生前の Collector プロセスが起動したままの場合、新たに
起動された Collector プロセスと競合してデータ伝播が再開できない
⇒フェイル・オーバー時間を考慮して Collector の TIMEOUT を設定
Collector プロセスの TIMEOUT 設定
ターゲット
Oracle Grid Infrastracture
ソース
Data Pump
Collector
Collector
Manager
Data Pump
①障害発生
②伝播停止
③フェイル・
オーバー
④ Collector
起動依頼
⑤ Collector
起動
独立して
起動中
⑥伝播再開
⑦ Collector
同士で競合
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 27
関連 Note のご紹介
Note:1313703.1 Oracle GoldenGate Best Practices: Oracle GoldenGate
high availability using Oracle Clusterware
Note:1232303.1 Oracle GoldenGate Best Practice: NFS Mount options
for use with GoldenGate
Note:1303611.1 Does Oracle GoldenGate support Oracle ACFS?
Note:1350133.1 OGG displaying incorrect status from inactive node
Note:1371489.1 Configure Oracle GoldenGate on Oracle Exadata
Database Machine
Note:1138409.1 OGG EXTRACT / REPLICAT CHECKPOINT RBA IS
LARGER THAN LOCAL TRAIL SIZE
Oracle Database 11g R2: Data Guard管理
Database
コース内容
■フィジカル・スタンバイ・データベースおよびロジカル・スタンバイ・データベースの作成および管理
■レポート、問合せ、テスト、バックアップ実行などの本番機能をサポートするためのData Guardスタンバイ・データベースの使用
■高可用性Oracle Databaseを実現するためのData Guardの使用
■Data Guard構成をメンテナンスするためのEnterprise Manager Grid Controlおよび Data Guardコマンドライン・インタフェース(DGMGRL)の使用
対象者
・データベース管理者 ・テクニカルコンサルタント
前提条件
・Oracle Database 11g: 管理ワークショップ I / II ご受講済み もしくは相当の知識をお持ちの方
コース日程
4日間
【会場:トレーニングキャンパス青山】
■2013年3月11日(月)~14日(木)
受講料
(2012年11月現在)定価 ¥291,060(税込)
※Oracle PartnerNetwork会員様は、パートナー割引価格で受講いただけます。
~BCP策定の要となる、11g R2 DBAのための必修コース~
Oracle Data Guardを使用してOracle Databaseを計画停止および計画外停止から保護する方法を学習します。また、Data Guardスタンバ
イ・データベースを使用してレポート、問合せ、テストなどの本番機能をサポートする方法についても学習します。
別のシステムへのビジネス処理要求のオフロード
別のシステムへのバックアップ要求のオフロード
高可用性システムの構築
お申込み・お問合せ
http://www.oracle.com/jp/education
オラクルユニバーシティ Tel: 0120-155-092
Copyright © 2012, Oracle and/or its affiliates. All rights reserved. 29