[Oracle Cloud] Data Guard で自動フェールオーバー(Fast-Start Failover) をやってみた

# はじめに

Oracle Cloud には、Oracle DB を提供するマネージドサービスが存在しています。オンプレミスと同様に、RAC, Data Guard といったOracle DB の高可用性構成をとることが出来ます。Data Guard は、Oracle DB の Primary(Active) - Secondary(Standby) 構成を実現することが出来る機能です。

これを利用することで、例えば Oracle Cloud Infrastructure(以下OCI)のリージョン間や、Availability Domain 間、Fault Domain 間でOracleDBの可用性構成を実現することが可能です。Data Guard 構成の Primary で障害が発生した場合、Standby 側を Primary へ昇格するためのフェールオーバーを行うことで、障害に耐えることが出来ます。
デフォルトの構成では、障害時に手動でフェールオーバーを行う必要がありますが、Data Guard Broker を使うことで、自動フェールオーバー(fast-start failover) をすることが出来ます。

今回の記事では、自動フェールオーバーを構成するための手順を確認していきます。

Data Guard Broker を構成するには、Oracle Client Administrator を完全インストールする必要がありますが、今回はEnterprise Manager を Data Guard Broker として利用します。Enterprise Manager を利用するのは以下の2点の理由があります。

- MarketPlace から簡単に構築することが可能
- Enterprise Manager で提供している SQLモニターを初めとした様々な便利機能を利用可能

OCI上で Data Guard の構築は、次の記事を参考にしてください
https://qiita.com/sugimount/items/eb96a906ca71e2a2418e

OCI上で Enterprise Manager の構築は、次の記事を参考にしてください
https://qiita.com/sugimount/items/96f2349b9938b3642f90

Data Guard Broker の構成手順については、以下のDocumentを参考にしています。
https://docs.oracle.com/cd/E96517_01/dgbkr/examples-using-data-guard-broker-DGMGRL-utility.html#GUID-AAE5EA1A-53A2-4D8D-BF59-A2856B38C99D



# 構成図

![1566128630540.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/0d2fa4f0-803d-ab7e-75ae-b676053c9d00.png)



# Data Guard Broker 設定

## DBパラメータの調整

Data Guard Broker の構成を行う前に、Data Guard としてのデータベースパラメータを調整します。
長時間の停止後でも回復が可能となるように、`UNDO_RETENTION`および`DB_FLASHBACK_RETENTION_TARGET`初期化パラメータが十分に大きな値に変更します。



Enterprise Manager に SSH ログインして、oracle ユーザーへスイッチ

```
sudo su - oracle
```



Data Guard を構成するためのコマンド `dgmgrl` は以下に格納されています。これを起動します。

```
/u01/app/database/product/bin/dgmgrl
```



実行例

```
[oracle@emcc ~]$ /u01/app/database/product/bin/dgmgrl 
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Sun Aug 18 04:11:54 2019 
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Welcome to DGMGRL, type "help" for information.
DGMGRL> 
```



OCI の DBaaS コンソールから、接続文字列を確認します。DB Connection のボタンをクリックします。

![1566101830430.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1226be9c-3e2b-2285-5093-1fc2d67e4b28.png)



Copy を押します

![1566101870252.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/38156766-46ef-bae0-c1be-408065516733.png)



DBaaS の Primary Role インスタンスに、sysユーザーで接続します。パスワードが求められるので、DBaaS インスタンスを作成した時に指定したパスワードを入力します。

```
CONNECT sys@sugihostname01.priv01.vcn.oraclevcn.com:1521/suginm01_nrt1mv.priv01.vcn.oraclevcn.com;
```



DBaaS 側で Data Guard 構成がされているので、その Config を確認します

```
SHOW CONFIGURATION VERBOSE;  
```



実行例

```
DGMGRL> SHOW CONFIGURATION VERBOSE;  

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxAvailability
  Members:
  suginm01_nrt1mv - Primary database
    suginm01_nrt1fr - Physical standby 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    = 'suginm01_CFG'

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS

DGMGRL> 
```



Data Base の表示。Primary Role

```
DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1mv;  

Database - suginm01_nrt1mv

  Enterprise Manager Name: suginm01_sugihostname01
  Role:                    PRIMARY
  Intended State:          TRANSPORT-ON
  Instance(s): 
    suginm01

  Properties: 
    DGConnectIdentifier             = 'suginm01_nrt1mv'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'SYNC'
    RedoRoutes                      = ''
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '30'
    TransportLagThreshold           = '30'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    ApplyInstances                  = '0'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '8'
    LogArchiveMinSucceedDest        = '1'
    DataGuardSyncLatency            = '0'
    DbFileNameConvert               = ''
    LogFileNameConvert              = ''
    FastStartFailoverTarget         = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)' 
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    PreferredObserverHosts          = ''
    HostName                        = 'sugihostname01'
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sugihostname01)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=suginm01_nrt1mv_DGMGRL.priv01.vcn.oraclevcn.com)(INSTANCE_NAME=suginm01)(SERVER=DEDICATED)))'
    OnlineArchiveLocation           = 'LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY'
    OnlineAlternateLocation         = ''
    StandbyArchiveLocation          = 'LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY'
    StandbyAlternateLocation        = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = '%t_%s_%r.dbf'
    TopWaitEvents                   = '(monitor)'
    SidName                         = '(monitor)'

  Log file locations:
    Alert log               : /u01/app/oracle/diag/rdbms/suginm01_nrt1mv/suginm01/trace/alert_suginm01.log
    Data Guard Broker log   : /u01/app/oracle/diag/rdbms/suginm01_nrt1mv/suginm01/trace/drcsuginm01.log

Database Status:
SUCCESS

DGMGRL> 
```



Secondary Role

```
DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1fr; 

Database - suginm01_nrt1fr

  Enterprise Manager Name: suginm01_nrt1fr.priv01.vcn.oraclevcn.com_1
  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:      2.00 KByte/s 
  Active Apply Rate:       495.00 KByte/s
  Maximum Apply Rate:      1.08 MByte/s
  Real Time Query:         OFF
  Instance(s):
    suginm01

  Properties:
    DGConnectIdentifier             = 'suginm01_nrt1fr'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'SYNC'
    RedoRoutes                      = ''
    DelayMins                       = '0'
    Binding                         = 'optional'
    MaxFailure                      = '0'
    MaxConnections                  = '1'
    ReopenSecs                      = '300'
    NetTimeout                      = '30'
    RedoCompression                 = 'DISABLE'
    LogShipping                     = 'ON'
    PreferredApplyInstance          = ''
    ApplyInstanceTimeout            = '0'
    ApplyLagThreshold               = '30'
    TransportLagThreshold           = '30'
    TransportDisconnectedThreshold  = '30'
    ApplyParallel                   = 'AUTO'
    ApplyInstances                  = '0'
    StandbyFileManagement           = 'AUTO'
    ArchiveLagTarget                = '0'
    LogArchiveMaxProcesses          = '8'
    LogArchiveMinSucceedDest        = '1'
    DataGuardSyncLatency            = '0'
    DbFileNameConvert               = ''
    LogFileNameConvert              = ''
    FastStartFailoverTarget         = ''
    InconsistentProperties          = '(monitor)'
    InconsistentLogXptProps         = '(monitor)'
    SendQEntries                    = '(monitor)'
    LogXptStatus                    = '(monitor)'
    RecvQEntries                    = '(monitor)'
    PreferredObserverHosts          = ''
    HostName                        = 'sugihostname02' 
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sugihostname02)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=suginm01_nrt1fr_DGMGRL.priv01.vcn.oraclevcn.com)(INSTANCE_NAME=suginm01)(SERVER=DEDICATED)))'
    OnlineArchiveLocation           = 'LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY'
    OnlineAlternateLocation         = ''
    StandbyArchiveLocation          = 'LOCATION=USE_DB_RECOVERY_FILE_DEST MANDATORY'
    StandbyAlternateLocation        = ''
    LogArchiveTrace                 = '0'
    LogArchiveFormat                = '%t_%s_%r.dbf'
    TopWaitEvents                   = '(monitor)'
    SidName                         = '(monitor)'

  Log file locations: 
    Alert log               : /u01/app/oracle/diag/rdbms/suginm01_nrt1fr/suginm01/trace/alert_suginm01.log
    Data Guard Broker log   : /u01/app/oracle/diag/rdbms/suginm01_nrt1fr/suginm01/trace/drcsuginm01.log

Database Status:
SUCCESS

DGMGRL> 
```



DBaaS で作成したインスタンスへ ログインし、FLASHBACK 機能が有効になっているか確認します。SQL PLUS で DBaaS インスタンスに接続します

```
[oracle@sugihostname01 ~]$ sqlplus / as sysdba
```



以下のコマンドを実行します

```
SQL> SELECT FLASHBACK_ON FROM V$DATABASE; 

FLASHBACK_ON
------------------
YES

SQL> 
```



長時間の停止後でも回復が可能となるように、`UNDO_RETENTION`および`DB_FLASHBACK_RETENTION_TARGET`初期化パラメータを変更します。

- DB_FLASHBACK_RETENTION_TARGET を、`1440`分(1日) から `4320`分(3日)に変更 
- UNDO_RETENTIONを、`900`秒(15分)から、`3600 `秒(1時間)に変更



現在の設定値を確認

```
SQL> SHOW PARAMETER DB_FLASHBACK_RETENTION_TARGET; 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     1440

SQL> 
```



現在の設定値を確認

```
SQL> SHOW PARAMETER UNDO; 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_gc_undo_affinity                    boolean     TRUE
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     900
undo_tablespace                      string      UNDOTBS1

SQL> 
```



プライマリ、セカンダリ両方のインスタンスで、パラメータ変更コマンドをSQL*PLUSで実施します。
まずはプライマリインスタンスを変更します。
UNDO_RETENTIONの最低保存時間パラメータを変更します。

```
ALTER SYSTEM SET UNDO_RETENTION=3600 SCOPE=SPFILE; 
```



実行例

```
SQL> ALTER SYSTEM SET UNDO_RETENTION=3600 SCOPE=SPFILE; 

System altered.

SQL> 
```



Oracle DB インスタンスを、一時的に停止します。(1分くらいかかります)

```
SHUTDOWN IMMEDIATE;
```



実行例

```
SQL> SHUTDOWN IMMEDIATE; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> 
```



データベースをマウントし、開始(OPEN)しない状態でインスタンスを起動します

```
STARTUP MOUNT;
```



実行例

```
SQL> STARTUP MOUNT; 
ORACLE instance started. 

Total System Global Area 1.6106E+10 bytes
Fixed Size                  8915160 bytes
Variable Size            2281701376 bytes
Database Buffers         1.3791E+10 bytes
Redo Buffers               24637440 bytes
Database mounted. 
SQL>  
```



UNDOのパラメータを確認して、undo_retentionが3600秒へ変更されているか確認します

```
SHOW PARAMETER UNDO;
```



実行例

```
SQL> SHOW PARAMETER UNDO; 

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
_gc_undo_affinity                    boolean     TRUE
temp_undo_enabled                    boolean     FALSE
undo_management                      string      AUTO
undo_retention                       integer     3600
undo_tablespace                      string      UNDOTBS1
SQL> 
```



DB_FLASHBACK_RETENTION_TARGET を 4320分(3日) に変更します

```
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320 SCOPE=BOTH;
```



実行例

```
SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320 SCOPE=BOTH; 

System altered.

SQL> 
```



変更されたか確認

```
SHOW PARAMETER DB_FLASHBACK_RETENTION_TARGET; 
```



実行例

```
SQL> SHOW PARAMETER DB_FLASHBACK_RETENTION_TARGET;  

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_flashback_retention_target        integer     4320
SQL> 
```



データベースを OPEN します

```
ALTER DATABASE OPEN;
```



実行例

```
SQL> ALTER DATABASE OPEN; 

Database altered.

SQL> 
```



セカンダリ側を変更するために、一時的にスイッチオーバーを実施します。実施完了後、プライマリ側と同様の作業を実施し、以下2個のパラメータを変更します。

- DB_FLASHBACK_RETENTION_TARGET を、`1440`分(1日) から `4320`分(3日)に変更 
- UNDO_RETENTIONを、`900`秒(15分)から、`3600 `秒(1時間)に変更

**注意。セカンダリ側で `SHUTDOWN IMMEDIATE;`を実行すると、接続できなくなるので、セカンダリ側のOS oracle ユーザーでログインし、以下のコマンドでログインすると良いです **

```
export ORACLE_HOME=/u01/app/oracle/product/18.0.0.0/dbhome_1
export ORACLE_SID=suginm01
/u01/app/18.0.0.0/grid/bin/sqlplus / as sysdba
```



## ファスト・スタート・フェイルオーバーを有効化

### Data Guard Broker のログ出力先を作成

Enterprise Manager の oracle ユーザーで、Broker 用のログ出力ディレクトリを作成します

```
mkdir /home/oracle/broker
```



### tnsnames.ora の編集

Data Guard Broker を構成するために、tnsnames.ora を編集する必要があります。
編集する文字列は、OCIコンソール上からコピーすることが可能です。

OCI の コンソールから、作成した Oracle DB インスタンスの詳細画面を開きます。

![1566129597880.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/8f59aa40-abf4-9cc0-8c02-d1ee545b0a1a.png)



次に、database の名前を選択します

![1566129631292.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/7368d1a8-04d6-a341-29e1-c06229feefe5.png)



DB Connection を選択します

![1566129662628.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/ca615f07-4203-3a0e-0669-87d08ce7f5c6.png)



Copy を選択して、値を控えます。これを、Primary, Standby の両方とも行います。

![1566129702217.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/80d77346-d8f2-2487-82d0-fe2493f8ea6f.png)



次に、Enterprise Manager にSSHログインし、デフォルトで設定されているORACLE_HOME の場所を確認します

```
[oracle@emcc ~]$ env | grep ORACLE_HOME 
ORACLE_HOME=/u01/app/database/product
```



ORACLE_HOME配下のtnsnames.ora を編集します

```
vim /u01/app/database/product/network/admin/tnsnames.ora
```



OCIコンソールからコピーした内容をもとに、末尾に追記を行います。`suginm01_nrt1mv` や `suginm01_nrt1fr` の文字列は、OCI コンソール上に表示されているDatabase Unique Name を指定します。

```
suginm01_nrt1mv =
  (DESCRIPTION=
    (CONNECT_TIMEOUT=5)
    (TRANSPORT_CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)
    (ADDRESS_LIST=
      (LOAD_BALANCE=on)
      (ADDRESS=
        (PROTOCOL=TCP)
        (HOST=10.2.100.5)
        (PORT=1521)
      )
    )
    (CONNECT_DATA=
      (SERVICE_NAME=suginm01_nrt1mv.priv01.vcn.oraclevcn.com)
    )
  )

suginm01_nrt1fr = 
  (DESCRIPTION=
    (CONNECT_TIMEOUT=5)
    (TRANSPORT_CONNECT_TIMEOUT=3)
    (RETRY_COUNT=3)
    (ADDRESS_LIST=
      (LOAD_BALANCE=on)
      (ADDRESS=
        (PROTOCOL=TCP)
        (HOST=10.2.100.6)
        (PORT=1521)
      )
    )
    (CONNECT_DATA=
      (SERVICE_NAME=suginm01_nrt1fr.priv01.vcn.oraclevcn.com)
    )
  )
```





### 有効化

Enterprise Manager で、dgmgrl  コマンドを再度実行し、接続を行います。

実行例

```
[oracle@emcc ~]$ /u01/app/database/product/bin/dgmgrl 
DGMGRL for Linux: Release 19.0.0.0.0 - Production on Sun Aug 18 04:11:54 2019 
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Welcome to DGMGRL, type "help" for information.
DGMGRL> 
```



DBaaS の Primary Role インスタンスに接続。パスワードが求められるので、DBaaS インスタンスを作成した時に指定したパスワードを入力します。

```
CONNECT sys@10.2.100.5:1521/suginm01_nrt1mv.priv01.vcn.oraclevcn.com;
```



有効にする前に、Fast Start Failover の詳細設定を確認します。

```
SHOW FAST_START FAILOVER;
```



実行例。Disabled になっていることが確認できます。

```
DGMGRL> SHOW FAST_START FAILOVER; 

Fast-Start Failover:  Disabled <=============== Disabledとなっている

  Protection Mode:    MaxAvailability
  Lag Limit:          30 seconds

  Threshold:          30 seconds
  Active Target:      (none)
  Potential Targets:  (none) 
  Observer:           (none)
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configurable Failover Conditions
  Health Conditions:
    Corrupted Controlfile          YES
    Corrupted Dictionary           YES
    Inaccessible Logfile            NO
    Stuck Archiver                  NO
    Datafile Write Errors          YES

  Oracle Error Conditions:
    (none)

DGMGRL> 
```



以下のコマンドで、Fast Start Failover を有効化します

```
ENABLE FAST_START FAILOVER;
```



実行例

```
DGMGRL> ENABLE FAST_START FAILOVER; 
Enabled in Zero Data Loss Mode. 
DGMGRL> 
```



確認します

```
DGMGRL> SHOW FAST_START FAILOVER;  

Fast-Start Failover: Enabled in Zero Data Loss Mode <=============== Enabled となっている

  Protection Mode:    MaxAvailability
  Lag Limit:          30 seconds 

  Threshold:          30 seconds
  Active Target:      suginm01_nrt1fr
  Potential Targets:  "suginm01_nrt1fr"
    suginm01_nrt1fr valid
  Observer:           (none)
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configurable Failover Conditions
  Health Conditions:
    Corrupted Controlfile          YES
    Corrupted Dictionary           YES
    Inaccessible Logfile            NO
    Stuck Archiver                  NO
    Datafile Write Errors          YES

  Oracle Error Conditions:
    (none)

DGMGRL> 
```



プライマリーと、セカンダリーの詳細設定を表示し、Fast Start Failover のターゲットが、相互に設定されているかを確認します。

```
SHOW DATABASE VERBOSE suginm01_nrt1fr FastStartFailoverTarget;
SHOW DATABASE VERBOSE suginm01_nrt1mv FastStartFailoverTarget;
```



実行例

```
DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1fr FastStartFailoverTarget; 
  FastStartFailoverTarget = 'suginm01_nrt1mv' 
DGMGRL> 
DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1mv FastStartFailoverTarget; 
  FastStartFailoverTarget = 'suginm01_nrt1fr' 
```



DGMGRLを使用して接続している現在のコネクションを、オブザーバーとして起動し続けるコマンドを発行します。
 (以下のコマンドを実行すると、ターミナルが戻らないので注意)

- OBSERBER名 : emcc
- FILE : `/home/oracle/broker/fsfo.dat`
- LOGFILE : `/home/oracle/broker/observer.log`

```
START OBSERVER emcc FILE IS /home/oracle/broker/fsfo.dat LOGFILE IS /home/oracle/broker/observer.log
```



実行例

```
DGMGRL> START OBSERVER emcc FILE IS /home/oracle/broker/fsfo.dat LOGFILE IS /home/oracle/broker/observer.log 
[W000 2019-08-18T08:08:07.830+00:00] FSFO target standby is suginm01_nrt1fr 
Observer 'emcc' started 
```



memo : OBSERVER を停止する方法。別のターミナルからDGMGRLを開き、以下のコマンドを押すことで、オブザーバーを停止できます

```
STOP OBSERVER emcc
```



オブザーバーが起動できたら、DGMGRL に制御が戻らないので、そのままターミナルを閉じます。
再度Enterprise Manager に接続をして、DGMGRLに接続を行います。

オブザーバーが正常に構成できているか、確認を行います

```
SHOW CONFIGURATION VERBOSE;
```



実行例

```
DGMGRL> SHOW CONFIGURATION VERBOSE;   

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxAvailability
  Members:
  suginm01_nrt1mv - Primary database
    suginm01_nrt1fr - (*) Physical standby database 

  (*) Fast-Start Failover target  <=================== 表示されていること

  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    = 'suginm01_CFG'

Fast-Start Failover: Enabled in Zero Data Loss Mode
  Lag Limit:          30 seconds 
  Threshold:          30 seconds
  Active Target:      suginm01_nrt1fr
  Potential Targets:  "suginm01_nrt1fr"
    suginm01_nrt1fr valid
  Observer:           emcc　　　<=================== emcc と表示されていること
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configuration Status:
SUCCESS　　　　　　　　　　　　　　<=================== SECCESS と表示されていること

DGMGRL> 
```



#  fast-start failover テスト

## Primaryの停止

Data Guard Broker のログは、Enterprise Manager の以下のディレクトリに出力するように設定しています。動作を確認するために、tail で常時観察をします

```
tail -f /home/oracle/broker/observer.log
```



Primary Role のインスタンスにSSHログインをして、停止します

```
[opc@client ~]$ ssh opc@sugihostname01.priv01.vcn.oraclevcn.com 
Last login: Sun Aug 18 07:24:49 2019 from 10.2.0.2 
[opc@sugihostname01 ~]$ sudo su - 
[root@sugihostname01 ~]# shutdown -h now 
[root@sugihostname01 ~]#
Broadcast message from opc@sugihostname01 
        (/dev/pts/0) at 8:16 ...

The system is going down for halt NOW!    
```



シャットダウン押下後、Data Guard Broker に以下のログが出力されます。Fast-Start Failoverが発生し、正常終了していることが確認できます。

```
[W000 2019-08-18T08:16:18.860+00:00] Primary database cannot be reached. 
[W000 2019-08-18T08:16:18.860+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 30 seconds
[W000 2019-08-18T08:16:19.861+00:00] Try to connect to the primary. 
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 

Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:19.890+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:16:20.890+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:20.895+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:16:21.895+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:21.899+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:16:22.900+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:45.988+00:00] Primary database cannot be reached. 
[W000 2019-08-18T08:16:45.988+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 3 seconds
[W000 2019-08-18T08:16:46.988+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:46.991+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:16:46.991+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 2 seconds
[W000 2019-08-18T08:16:47.991+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 
 
Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:47.995+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:16:47.995+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 1 second
[W000 2019-08-18T08:16:48.995+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:48.999+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:16:48.999+00:00] Fast-Start Failover threshold has expired.
[W000 2019-08-18T08:16:49.041+00:00] Try to connect to the standby. 
[W000 2019-08-18T08:16:49.041+00:00] Making a last connection attempt to primary database before proceeding with Fast-Start Failover.       
[W000 2019-08-18T08:16:49.041+00:00] Check if the standby is ready for failover.
ORA-12541: TNS:no listener 
 
Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:16:49.075+00:00] Fast-Start Failover is not possible because primary last contacted the standby within FastStartFailoverThreshold seconds.
[W000 2019-08-18T08:16:52.075+00:00] Making a last connection attempt to primary database before proceeding with Fast-Start Failover. 
[W000 2019-08-18T08:16:52.075+00:00] Check if the standby is ready for failover.
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1mv
[S002 2019-08-18T08:16:52.131+00:00] Fast-Start Failover started... 

2019-08-18T08:16:52.131+00:00
Initiating Fast-Start Failover to database "suginm01_nrt1fr"...
[S002 2019-08-18T08:16:52.131+00:00] Initiating Fast-start Failover.
Performing failover NOW, please wait... 
Failover succeeded, new primary is "suginm01_nrt1fr" 
2019-08-18T08:17:43.409+00:00
[S002 2019-08-18T08:17:43.409+00:00] Fast-Start Failover finished...
[W000 2019-08-18T08:17:43.409+00:00] Failover succeeded. Restart pinging.
[W000 2019-08-18T08:17:43.443+00:00] Primary database has changed to suginm01_nrt1fr. 
[W000 2019-08-18T08:17:43.445+00:00] Try to connect to the primary. 
[W000 2019-08-18T08:17:43.445+00:00] Try to connect to the primary suginm01_nrt1fr.
[W000 2019-08-18T08:17:44.638+00:00] Connection to the primary restored! 
[W000 2019-08-18T08:17:44.650+00:00] The standby suginm01_nrt1mv needs to be reinstated 
[W000 2019-08-18T08:17:44.650+00:00] Try to connect to the new standby suginm01_nrt1mv.
[W000 2019-08-18T08:17:46.650+00:00] Disconnecting from database suginm01_nrt1fr. 
ORA-12170: TNS:Connect timeout occurred 

Unable to connect to database using suginm01_nrt1mv
[W000 2019-08-18T08:18:14.694+00:00] Try to connect to the new standby suginm01_nrt1mv. 
```



Enterprise Manager のDGMGRLを使用して、DBaaS の Primary Role へ昇格した 元Secondary Roleのインスタンスに接続します。パスワードが求められるので、DBaaS インスタンスを作成した時に指定したパスワードを入力します。

```
CONNECT sys@10.2.100.6:1521/suginm01_nrt1fr.priv01.vcn.oraclevcn.com
```



詳細確認。
`suginm01_nrt1fr` が Primary Role へ昇格していることが確認。
元Primary だった `suginm01_nrt1mv` は Disable となっている

```
DGMGRL> SHOW CONFIGURATION VERBOSE; 

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxAvailability
  Members:
  suginm01_nrt1fr - Primary database      <=========== Primary となっている
    Warning: ORA-16824: multiple warnings, including fast-start failover-related warnings, detected for the database 

    suginm01_nrt1mv - (*) Physical standby database (disabled)　<=========== disabled となっている
      ORA-16661: the standby database needs to be reinstated

  (*) Fast-Start Failover target

  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    = 'suginm01_CFG'

Fast-Start Failover: Enabled in Zero Data Loss Mode
  Lag Limit:          30 seconds 
  Threshold:          30 seconds
  Active Target:      suginm01_nrt1mv
  Potential Targets:  "suginm01_nrt1mv"
    suginm01_nrt1mv invalid - member is disabled
  Observer:           emcc
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configuration Status:
WARNING

DGMGRL> 
```



OCI のコンソール上では、フェイルオーバーが発生したことは検知できていません。(OCIコンソールではなく、別の方法でモニタリングを行うと良いでしょう)

- sugidbsystem01 : `suginm01_nrt1mv` (元Primary で、Shutdown されているシステム)
- sugidbsystem02 : `suginm01_nrt1fr` (元Secondaryで、現在はPrimaryへFast Start Failover したシステム)

![1566116820030.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/4bf1c630-7f59-984d-b561-1dac452c3845.png)



詳細画面を見ると、OCIコンソール上では、両方とも Primary Roleとして認識されている。
`suginm01_nrt1mv` (元Primary で、Shutdown されているシステム)

![1566117084263.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/43328720-29a4-61e4-8e17-68f87c3a5f85.png)



 `suginm01_nrt1fr` (元Secondaryで、現在はPrimaryへFast Start Failover したシステム)

![1566117134182.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/2124a7cc-551a-bd6e-d537-75d00eed9b2a.png)



## 元Primaryの復旧

元PrimaryのインスタンスをReboot して復旧させます。
完全な障害が発生した場合はRebootでは復旧しないため、その場合は、Standby を再構成する必要があると想定しています。
OCIコンソール上からRebootを押します。

![1566117238151.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/737745d9-87a3-3387-86bb-d530f26ca642.png)



OKを押します。

![1566117251378.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/6b5301a6-30a5-ce9c-97f5-1e6cf899513d.png)



Stopping状態になるので、待機します。

![1566117278965.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/3fa75653-09fd-2379-d824-539fd4abe26c.png)



Data Guard Broker の log では、元Primary Role サーバーが復旧してきて、Secondary として再度参加(Reinstatement)することを試みます。
1回目の試みでは Fail したようですが、2回目の試みで正常に参加出来ました。

```
[W000 2019-08-18T08:38:44.517+00:00] Try to connect to the new standby suginm01_nrt1mv. 
[W000 2019-08-18T08:38:45.521+00:00] Connection to the new standby restored! 
[W000 2019-08-18T08:38:47.521+00:00] Try to connect to the primary suginm01_nrt1fr. 
[W000 2019-08-18T08:38:48.526+00:00] Connection to the primary restored! 
[W000 2019-08-18T08:38:49.526+00:00] Wait for new primary to be ready to reinstate. 
[W000 2019-08-18T08:38:50.526+00:00] New primary is now ready to reinstate. 
[W000 2019-08-18T08:38:50.526+00:00] Issuing REINSTATE command.

2019-08-18T08:38:50.526+00:00
Initiating reinstatement for database "suginm01_nrt1mv"...
Reinstating database "suginm01_nrt1mv", please wait... 
[W000 2019-08-18T08:39:17.578+00:00] The standby suginm01_nrt1mv is ready to be a FSFO target 
Warning: ORA-16713: The Oracle Data Guard broker command timed out. 

Reinstatement of database "suginm01_nrt1mv" failed
2019-08-18T08:39:44.418+00:00
[W000 2019-08-18T08:39:44.613+00:00] Failed to reinstate database suginm01_nrt1mv. Will retry later. 
[W000 2019-08-18T08:40:14.658+00:00] Try to connect to the new standby suginm01_nrt1mv. 
[W000 2019-08-18T08:40:15.662+00:00] Connection to the new standby restored! 
[W000 2019-08-18T08:40:17.662+00:00] Try to connect to the primary suginm01_nrt1fr. 
[W000 2019-08-18T08:40:18.666+00:00] Connection to the primary restored! 
[W000 2019-08-18T08:40:19.666+00:00] Wait for new primary to be ready to reinstate. 
[W000 2019-08-18T08:40:20.666+00:00] New primary is now ready to reinstate. 
[W000 2019-08-18T08:40:20.666+00:00] Issuing REINSTATE command.

2019-08-18T08:40:20.666+00:00
Initiating reinstatement for database "suginm01_nrt1mv"...
Reinstating database "suginm01_nrt1mv", please wait... 
Reinstatement of database "suginm01_nrt1mv" succeeded 
2019-08-18T08:40:43.138+00:00
[W000 2019-08-18T08:40:43.704+00:00] Successfully reinstated database suginm01_nrt1mv. 

```



DGMGRL から、CONFIGURATIONを確認します。`suginm01_nrt1mv` が、standby として復旧していることがわかります。

```
DGMGRL> SHOW CONFIGURATION VERBOSE; 

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxAvailability
  Members:
  suginm01_nrt1fr - Primary database
    suginm01_nrt1mv - (*) Physical standby database <=========== 復旧

  (*) Fast-Start Failover target 

  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    = 'suginm01_CFG'

Fast-Start Failover: Enabled in Zero Data Loss Mode
  Lag Limit:          30 seconds 
  Threshold:          30 seconds
  Active Target:      suginm01_nrt1mv
  Potential Targets:  "suginm01_nrt1mv"
    suginm01_nrt1mv valid
  Observer:           emcc
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configuration Status:
SUCCESS

DGMGRL> 
```



OCIコンソールで再起動した Node が、正常に Availavle と見えています

![1566117802209.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/2d294866-3e84-732d-3cd5-b84c3861ed86.png)



Standby として追加されたため、OCIコンソールでも正常にStandbyとして認識されています

![1566117911934.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/54906fc2-1e3b-2c35-3e51-e9e740da97b0.png)



## 新Primaryの停止

では次に、元Standbyで新Primaryの DBaaS インスタンスの停止を行い、再度 fast-start failover が発生するかをテストします。

Data Guard Broker のログは、Enterprise Manager の以下のディレクトリに出力するように設定しています。動作を確認するために、tail で常時観察をします

```
tail -f /home/oracle/broker/observer.log
```



新Primary Role のインスタンスにSSHログインをして、停止します

```
[opc@client ~]$ ssh opc@sugihostname02.priv01.vcn.oraclevcn.com
Last login: Sun Aug 18 08:20:46 2019 from 10.2.0.2 
[opc@sugihostname02 ~]$  
[opc@sugihostname02 ~]$ 
[opc@sugihostname02 ~]$ sudo su -  
[root@sugihostname02 ~]# shutdown -h now  

Broadcast message from opc@sugihostname02
        (/dev/pts/0) at 8:52 ...

The system is going down for halt NOW!
[root@sugihostname02 ~]# 
```



シャットダウン押下後、Data Guard Broker に以下のログが出力されます。Fast-Start Failoverが発生し、正常終了していることが確認できます。

```
[W000 2019-08-18T08:52:32.753+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 30 seconds
[W000 2019-08-18T08:52:33.753+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1fr
[W000 2019-08-18T08:52:33.761+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:52:34.761+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1fr
[W000 2019-08-18T08:52:34.764+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:52:35.765+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1fr
[W000 2019-08-18T08:52:35.768+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:52:36.768+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1fr
[W000 2019-08-18T08:52:59.862+00:00] Primary database cannot be reached. 
[W000 2019-08-18T08:52:59.862+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 3 seconds
[W000 2019-08-18T08:53:00.863+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1fr
[W000 2019-08-18T08:53:00.866+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:53:00.866+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 2 seconds
[W000 2019-08-18T08:53:01.867+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 

Unable to connect to database using suginm01_nrt1fr
[W000 2019-08-18T08:53:01.870+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:53:01.870+00:00] Fast-Start Failover threshold has not exceeded. Retry for the next 1 second
[W000 2019-08-18T08:53:02.870+00:00] Try to connect to the primary. 
ORA-12541: TNS:no listener 
 
Unable to connect to database using suginm01_nrt1fr
[W000 2019-08-18T08:53:02.874+00:00] Primary database cannot be reached.
[W000 2019-08-18T08:53:02.874+00:00] Fast-Start Failover threshold has expired.
[W000 2019-08-18T08:53:02.874+00:00] Try to connect to the standby.
[W000 2019-08-18T08:53:02.874+00:00] Making a last connection attempt to primary database before proceeding with Fast-Start Failover.       
[W000 2019-08-18T08:53:02.874+00:00] Check if the standby is ready for failover.
ORA-12541: TNS:no listener

Unable to connect to database using suginm01_nrt1fr
[S005 2019-08-18T08:53:02.938+00:00] Fast-Start Failover started... 

2019-08-18T08:53:02.938+00:00
Initiating Fast-Start Failover to database "suginm01_nrt1mv"...
[S005 2019-08-18T08:53:02.938+00:00] Initiating Fast-start Failover.
Performing failover NOW, please wait... 
Failover succeeded, new primary is "suginm01_nrt1mv" 
2019-08-18T08:53:26.185+00:00
[S005 2019-08-18T08:53:26.185+00:00] Fast-Start Failover finished...
[W000 2019-08-18T08:53:26.185+00:00] Failover succeeded. Restart pinging.
[W000 2019-08-18T08:53:26.220+00:00] Primary database has changed to suginm01_nrt1mv. 
```



Enterprise Manager の、DGMGRLから、DBaaS の Primary Role へ昇格した、インスタンスに接続。
パスワードが求められるので、DBaaS インスタンスを作成した時に指定したパスワードを入力します。

```
CONNECT sys@10.2.100.5:1521/suginm01_nrt1mv.priv01.vcn.oraclevcn.com;
```



詳細確認。
`suginm01_nrt1mv` が Primary Role へ昇格していることが確認。
`suginm01_nrt1fr` は Disable となっている

```
DGMGRL> SHOW CONFIGURATION VERBOSE;  

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxAvailability
  Members:
  suginm01_nrt1mv - Primary database
    Warning: ORA-16824: multiple warnings, including fast-start failover-related warnings, detected for the database 

    suginm01_nrt1fr - (*) Physical standby database (disabled)
      ORA-16661: the standby database needs to be reinstated

  (*) Fast-Start Failover target

  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    = 'suginm01_CFG'

Fast-Start Failover: Enabled in Zero Data Loss Mode
  Lag Limit:          30 seconds 
  Threshold:          30 seconds
  Active Target:      suginm01_nrt1fr
  Potential Targets:  "suginm01_nrt1fr" 
    suginm01_nrt1fr invalid - member is disabled
  Observer:           emcc
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configuration Status:
WARNING

DGMGRL> 
```



## 元Primaryの復旧

sugidbsystem02 (suginm01_nrt1fr) を OCI コンソール上で、Reboot します

![1566118723857.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/620b975b-906c-d10b-fa8c-9c363db492f0.png)



OKを押します。

![1566117251378.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/291fae0a-87c5-71ca-a0b9-ba152e91d94d.png)



Stopping 状態になります

![1566118829601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/058aa55e-afd6-559c-8307-db50cd636881.png)



Data Guard Broker の log では、元Primary Role サーバーが復旧してきて、Secondary として再度参加(Reinstatement)することを試みます。
今回は、1回目の試みで正常に参加出来ました。

```
[W000 2019-08-18T09:04:57.761+00:00] Try to connect to the new standby suginm01_nrt1fr. 
[W000 2019-08-18T09:04:58.765+00:00] Connection to the new standby restored! 
[W000 2019-08-18T09:05:00.765+00:00] Try to connect to the primary suginm01_nrt1mv. 
[W000 2019-08-18T09:05:01.769+00:00] Connection to the primary restored! 
[W000 2019-08-18T09:05:02.770+00:00] Wait for new primary to be ready to reinstate. 
[W000 2019-08-18T09:05:03.770+00:00] New primary is now ready to reinstate. 
[W000 2019-08-18T09:05:03.770+00:00] Issuing REINSTATE command.

2019-08-18T09:05:03.770+00:00
Initiating reinstatement for database "suginm01_nrt1fr"...
Reinstating database "suginm01_nrt1fr", please wait... 
[W000 2019-08-18T09:05:33.817+00:00] The standby suginm01_nrt1fr is ready to be a FSFO target 
Reinstatement of database "suginm01_nrt1fr" succeeded 
2019-08-18T09:05:57.751+00:00
[W000 2019-08-18T09:05:57.847+00:00] Successfully reinstated database suginm01_nrt1fr. 
```



正常に復旧しています

```
DGMGRL> SHOW CONFIGURATION VERBOSE; 

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxAvailability
  Members:
  suginm01_nrt1mv - Primary database 
    suginm01_nrt1fr - (*) Physical standby database 

  (*) Fast-Start Failover target

  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    = 'suginm01_CFG'

Fast-Start Failover: Enabled in Zero Data Loss Mode
  Lag Limit:          30 seconds 
  Threshold:          30 seconds
  Active Target:      suginm01_nrt1fr
  Potential Targets:  "suginm01_nrt1fr" 
    suginm01_nrt1fr valid
  Observer:           emcc
  Shutdown Primary:   TRUE
  Auto-reinstate:     TRUE
  Observer Reconnect: (none)
  Observer Override:  FALSE

Configuration Status:
SUCCESS

DGMGRL> 
```





# 参考URL

DGMGRLコマンドライン・インタフェースの使用例
https://docs.oracle.com/cd/E96517_01/dgbkr/examples-using-data-guard-broker-DGMGRL-utility.html#GUID-D9018A5C-8C7A-4F6C-A7D3-B14E5AF7D4BC

https://www.oracle.com/technetwork/jp/content/bcp-dg-401575-ja.pdf

https://docs.cloud.oracle.com/iaas/Content/Database/Tasks/usingDG.htm#ConfiguringObserverOptional

Oracle Data Guard による高可用性
https://www.slideshare.net/techblogyahoo/oracle-data-guard-48172431

Oracle Cloud:Data Guard構成してみてみた
https://qiita.com/shirok/items/2eb68c3777f34a57f632

参考になりそう？
https://www.dbarj.com.br/2014/12/oracle-data-guard-e-oracle-wallet/