Oracle Data Guard は、エンタープライズ データの高可用性、データ保護、および災害復旧を保証します。
計画的または計画外の停止のために本番データベースが使用できなくなった場合、スタンバイ・データベースをプライマリ・ロールに切り替えて、ダウンタイムを最小限に抑えることができます。
また、Oracle Data Guard を使用すると、管理者はオプションで、リソースを大量に消費するDWHレポート処理や検証作業をスタンバイ システムにオフロードすることで、本番データベースのパフォーマンスを向上させることができます。
ということで、前回作成した Exadata Cloud Service X8MをData Guard構成してみてみます。
##● 要件
Peer Database(Primary と Standby)は以下のような条件があります。
- 両方ともExadataシステム・シェイプ
- 同一コンパートメント内
- 同一Database Version
- 同一VersionのExadataクラウド・ツール(dbaastools)
その他 Data Guard構成のため情報をドキュメントを確認して設計します。
・参考: Exadata Cloud ServiceでのOracle Data Guardの使用
##● 事前準備
TokyoリージョンとOsakaリージョンへExaCSを構築し、Primary側に Databaseを作成し、Standby側は Database_HOMEを作成し、Remote Peeringで 双方向Oracle*NET通信できるようにしておきます。
・Oracle Cloud:リージョン間を Remote VCN Peering してみてみた
・Oracle Cloud: Exadata Cloud Service X8M を作成してみてみた
・Network Setup for Exadata Cloud Service Instances
#■ Data Guard設定
Tokyoリージョンで作成したDB01データベースをプライマリDBとして、OsakaリージョンのExaCSへStandbyデータベースを作成
##● Data Guard設定
-
Enable Data Guard画面
以下項目を設定し、[Enable Data Guard]をクリック・Rejion: Standby側ExaCSのリージョンを設定
・Availability domain: Standby側ExaCSのADを設定
・Shape: Standby側ExaCSのShapeを選択
・Data Guard peer resource type: VM Clusterを設定
・Select a VM Cluster: Standby側ExaCSのVM Clusterを選択
・Choose Database Home: PrimaryDBと同じVersionのDatabase Homeを選択
・Database password: PrimaryDBと同じAdminパスワードを設定
##● Data Guard設定確認
ここからは、詳しくログ出力させながらコマンドで確認実行していきます。
###・DGMGRL接続
- 環境変数設定
いずれかのNodeへOSログイン
[oracle@exa-tokyo-xft701 ~]$ . DB01.env
[oracle@exa-tokyo-xft701 ~]$ env | grep ORA
ORACLE_UNQNAME=DB01_nrt1kx
ORACLE_SID=DB011
ORACLE_BASE=/u02/app/oracle
ORACLE_HOSTNAME=exa-tokyo-xft701.sub04130423250.vcn.oraclevcn.com
ORACLE_HOME=/u02/app/oracle/product/19.0.0.0/dbhome_1
- DGMGRL接続
Oracle Data Guardコマンドライン・インタフェース(DGMGRL)を使用してData Guardを確認
[oracle@exa-tokyo-xft701 ~]$ dgmgrl /
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Thu May 20 18:31:01 2021
Version 19.10.0.0.0
Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.
Welcome to DGMGRL, type "help" for information.
Connected to "DB01_nrt1kx"
Connected as SYSDG.
###・現在の保護モード確認
DGMGRL> show configuration verbose
Configuration - fsc
Protection Mode: MaxPerformance
Members:
DB01_nrt1kx - Physical standby database
DB01_kix1wh - Primary database
Properties:
FastStartFailoverThreshold = '30'
OperationTimeout = '30'
TraceLevel = 'USER'
FastStartFailoverLagLimit = '30'
CommunicationTimeout = '180'
ObserverReconnect = '0'
FastStartFailoverAutoReinstate = 'TRUE'
FastStartFailoverPmyShutdown = 'TRUE'
BystandersFollowRoleChange = 'ALL'
ObserverOverride = 'FALSE'
ExternalDestination1 = ''
ExternalDestination2 = ''
PrimaryLostWriteAction = 'CONTINUE'
ConfigurationWideServiceName = 'DB01_CFG'
Fast-Start Failover: Disabled
Configuration Status:
SUCCESS
###・Data Guardの設定確認:Tokyo Region の DB (DB01_nrt1kx)
PRIMARYであることを確認
DGMGRL> show database verbose DB01_nrt1kx
Database - DB01_nrt1kx
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
DB011
DB012
Properties:
DGConnectIdentifier = 'DB01_nrt1kx'
ObserverConnectIdentifier = ''
FastStartFailoverTarget = 'DB01_kix1wh'
PreferredObserverHosts = ''
LogShipping = 'ON'
RedoRoutes = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'optional'
MaxFailure = '0'
ReopenSecs = '300'
NetTimeout = '30'
RedoCompression = 'DISABLE'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyLagThreshold = '30'
TransportLagThreshold = '30'
TransportDisconnectedThreshold = '30'
ApplyParallel = 'AUTO'
ApplyInstances = '0'
StandbyFileManagement = ''
ArchiveLagTarget = '0'
LogArchiveMaxProcesses = '0'
LogArchiveMinSucceedDest = '0'
DataGuardSyncLatency = '0'
LogArchiveTrace = '0'
LogArchiveFormat = ''
DbFileNameConvert = ''
LogFileNameConvert = ''
ArchiveLocation = ''
AlternateLocation = ''
StandbyArchiveLocation = ''
StandbyAlternateLocation = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
LogXptStatus = '(monitor)'
SendQEntries = '(monitor)'
RecvQEntries = '(monitor)'
HostName(*)
StaticConnectIdentifier(*)
TopWaitEvents(*)
SidName(*)
(*) - Please check specific instance for the property value
Log file locations(*):
(*) - Check specific instance for log file locations.
Database Status:
SUCCESS
DGMGRL> validate database verbose DB01_nrt1kx
Database Role: Primary database
Ready for Switchover: Yes
Flashback Database Status:
DB01_nrt1kx: On
DB01_kix1wh: On
Capacity Information:
Database Instances Threads
DB01_nrt1kx 2 2
Managed by Clusterware:
DB01_nrt1kx: YES
Temporary Tablespace File Information:
DB01_nrt1kx TEMP Files: 3
Data file Online Move in Progress:
DB01_nrt1kx: No
Transport-Related Information:
Transport On: Yes
Log Files Cleared:
DB01_nrt1kx Standby Redo Log Files: Cleared
###・Data Guardの設定確認:Osaka Region の DB (DB01_kix1whx)
PHYSICAL STANDBYであることを確認
DGMGRL> show database verbose DB01_kix1wh
Database - DB01_kix1wh
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 4 seconds ago)
Apply Lag: 0 seconds (computed 4 seconds ago)
Average Apply Rate: 6.00 KByte/s
Active Apply Rate: 904.00 KByte/s
Maximum Apply Rate: 3.11 MByte/s
Real Time Query: ON
Instance(s):
DB01_kix1wh1
DB01_kix1wh2 (apply instance)
Properties:
DGConnectIdentifier = 'DB01_kix1wh'
ObserverConnectIdentifier = ''
FastStartFailoverTarget = 'DB01_nrt1kx'
PreferredObserverHosts = ''
LogShipping = 'ON'
RedoRoutes = ''
LogXptMode = 'ASYNC'
DelayMins = '0'
Binding = 'optional'
MaxFailure = '0'
ReopenSecs = '300'
NetTimeout = '30'
RedoCompression = 'DISABLE'
PreferredApplyInstance = ''
ApplyInstanceTimeout = '0'
ApplyLagThreshold = '30'
TransportLagThreshold = '30'
TransportDisconnectedThreshold = '30'
ApplyParallel = 'AUTO'
ApplyInstances = '0'
StandbyFileManagement = ''
ArchiveLagTarget = '0'
LogArchiveMaxProcesses = '0'
LogArchiveMinSucceedDest = '0'
DataGuardSyncLatency = '0'
LogArchiveTrace = '0'
LogArchiveFormat = ''
DbFileNameConvert = ''
LogFileNameConvert = ''
ArchiveLocation = ''
AlternateLocation = ''
StandbyArchiveLocation = ''
StandbyAlternateLocation = ''
InconsistentProperties = '(monitor)'
InconsistentLogXptProps = '(monitor)'
LogXptStatus = '(monitor)'
SendQEntries = '(monitor)'
RecvQEntries = '(monitor)'
HostName(*)
StaticConnectIdentifier(*)
TopWaitEvents(*)
SidName(*)
(*) - Please check specific instance for the property value
Log file locations(*):
(*) - Check specific instance for log file locations.
Database Status:
SUCCESS
DGMGRL> validate database verbose DB01_kix1wh
Database Role: Physical standby database
Primary Database: DB01_nrt1kx
Ready for Switchover: Yes
Ready for Failover: Yes (Primary Running)
Flashback Database Status:
DB01_nrt1kx: On
DB01_kix1wh: On
Capacity Information:
Database Instances Threads
DB01_nrt1kx 2 2
DB01_kix1wh 2 2
Managed by Clusterware:
DB01_nrt1kx: YES
DB01_kix1wh: YES
Temporary Tablespace File Information:
DB01_nrt1kx TEMP Files: 3
DB01_kix1wh TEMP Files: 3
Data file Online Move in Progress:
DB01_nrt1kx: No
DB01_kix1wh: No
Standby Apply-Related Information:
Apply State: Running
Apply Lag: 10 seconds (computed 0 seconds ago)
Apply Delay: 0 minutes
Transport-Related Information:
Transport On: Yes
Gap Status: No Gap
Transport Lag: 0 seconds (computed 0 seconds ago)
Transport Status: Success
Log Files Cleared:
DB01_nrt1kx Standby Redo Log Files: Cleared
DB01_kix1wh Online Redo Log Files: Cleared
DB01_kix1wh Standby Redo Log Files: Available
Current Log File Groups Configuration:
Thread # Online Redo Log Groups Standby Redo Log Groups Status
(DB01_nrt1kx) (DB01_kix1wh)
1 4 5 Sufficient SRLs
2 4 5 Sufficient SRLs
Future Log File Groups Configuration:
Thread # Online Redo Log Groups Standby Redo Log Groups Status
(DB01_kix1wh) (DB01_nrt1kx)
1 4 5 Sufficient SRLs
2 4 5 Sufficient SRLs
Current Configuration Log File Sizes:
Thread # Smallest Online Redo Smallest Standby Redo
Log File Size Log File Size
(DB01_nrt1kx) (DB01_kix1wh)
1 4000 MBytes 4000 MBytes
2 4000 MBytes 4000 MBytes
Future Configuration Log File Sizes:
Thread # Smallest Online Redo Smallest Standby Redo
Log File Size Log File Size
(DB01_kix1wh) (DB01_nrt1kx)
1 4000 MBytes 4000 MBytes
2 4000 MBytes 4000 MBytes
Apply-Related Property Settings:
Property DB01_nrt1kx Value DB01_kix1wh Value
DelayMins 0 0
ApplyParallel AUTO AUTO
ApplyInstances 0 0
Transport-Related Property Settings:
Property DB01_nrt1kx Value DB01_kix1wh Value
LogShipping ON ON
LogXptMode ASYNC ASYNC
Dependency <empty> <empty>
DelayMins 0 0
Binding optional optional
MaxFailure 0 0
ReopenSecs 300 300
NetTimeout 30 30
RedoCompression DISABLE DISABLE
#■ Switchover実行(Primary:Tokyo -> Osaka)
メンテナンス用途など計画的にプライマリ・データベースとスタンバイ・データベースを切り替えます
スイッチオーバー中にデータが失われることはありません。
##● Primary DB (Tokyo)側作業
##● Switch over確認
###・Tokyo Region の DB (DB01_nrt1kx)確認
PHYSICAL STANDBYへ切り替わっていることを確認
DGMGRL> show database DB01_nrt1kx
Database - DB01_nrt1kx
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 2 seconds ago)
Apply Lag: 0 seconds (computed 2 seconds ago)
Average Apply Rate: 25.00 KByte/s
Real Time Query: ON
Instance(s):
DB011 (apply instance)
DB012
Database Status:
SUCCESS
###・Osaka Region の DB (DB01_kix1wh)確認
PRIMARYへ切り替わっていることを確認
DGMGRL> show database DB01_kix1wh
Database - DB01_kix1wh
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
DB01_kix1wh1
DB01_kix1wh2
Database Status:
SUCCESS
#■ Failover実行(Primary: Osaka -> Tokyo)
プライマリ・データベースの障害時に、スタンバイ・データベースをプライマリ・ロールに変更します。
フラッシュバック・データベースが使用可能になっている場合は、障害の原因が修正された後、Reinstateコマンドにより元どおり新しいプライマリ・データベースのスタンバイに戻すことができます。
##● Standby DB (Tokyo)側作業
##● Failover確認
###・Tokyo Region の DB (DB01_nrt1kx)確認
PRIMARYへ切り替わっていることを確認
DGMGRL> show database DB01_nrt1kx
Database - DB01_nrt1kx
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
DB011
DB012
Database Status:
SUCCESS
###・Osaka Region の DB (DB01_kix1wh)確認
PHYSICAL STANDBYへ切り替わり、Statusは DISABLED - ORA-16661であることを確認
DGMGRL> show database DB01_kix1wh
Database - DB01_kix1wh
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: (unknown)
Apply Lag: (unknown)
Average Apply Rate: (unknown)
Real Time Query: OFF
Instance(s):
DB01_kix1wh1
DB01_kix1wh2
Database Status:
DISABLED - ORA-16661: the standby database needs to be reinstated
#■ Reinstate実行(障害が発生したプライマリ・データベース:Osakaの回復)
フェイルオーバーした障害プライマリ・データベースをスタンバイ・データベースとして復旧します
##● Primary DB側作業
##● Reinstate確認
###・Tokyo Region の DB (DB01_nrt1kx)確認
Statusは変わらず、PRIMARYロールであることを確認
DGMGRL> show database DB01_nrt1kx
Database - DB01_nrt1kx
Role: PRIMARY
Intended State: TRANSPORT-ON
Instance(s):
DB011
DB012
Database Status:
SUCCESS
###・Osaka Region の DB (DB01_kix1wh)確認
Statusは DISABLED - ORA-16661から、SUCCESSへ変わっていることを確認
DGMGRL> show database DB01_kix1wh
Database - DB01_kix1wh
Role: PHYSICAL STANDBY
Intended State: APPLY-ON
Transport Lag: 0 seconds (computed 1 second ago)
Apply Lag: 0 seconds (computed 1 second ago)
Average Apply Rate: 6.00 KByte/s
Real Time Query: ON
Instance(s):
DB01_kix1wh1 (apply instance)
DB01_kix1wh2
Database Status:
SUCCESS
#■ Standby DB の REDO適用遅延(LAG)確認
V$DATAGUARD_STATSは、スタンバイ・データベース上での問合せに対して、Oracle Data Guardメトリックに関する情報を示します。
SQL> select name,value,time_computed,unit from v$dataguard_stats;
NAME VALUE TIME_COMPUTED UNIT
-------------------------------- ---------------------------------------------------------------- ------------------------------ ------------------------------
transport lag +00 00:00:00 04/27/2021 18:49:03 day(2) to second(0) interval
apply lag +00 00:00:00 04/27/2021 18:49:03 day(2) to second(0) interval
apply finish time +00 00:00:00.000 04/27/2021 18:49:03 day(2) to second(3) interval
estimated startup time 22 04/27/2021 18:49:03 second
#■ 参考
・Using Oracle Data Guard with Exadata Cloud Service
・Introduction to Oracle Data Guard
・Oracle Data Guardコマンドライン・インタフェース・リファレンス
・Exadata Cloud Service
・Network Setup for Exadata Cloud Service Instances