3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Oracle Cloud] Oracle DB マネージドサービスを使った Data Guard 構成方法と、保護モードの変更

Last updated at Posted at 2019-08-04

はじめに

Oracle Cloud Infrastructure(以下OCI)では、Oracle DB のマネージドサービスを提供しています。
Oracle DB のマネージドサービス(DBaaS)上で、Oracle DB の Active-Standby 構成行うために、Data Guard の設定方法を記載します。

以下の設定を行っていきます

  • Data Guard 構成の設定
  • 保護モードを MaxAvailability に変更
  • 2台目に自動バックアップの設定

システム構成図

1564889630226.png

仮想ネットワークの作成

OCIコンソール上で、仮想ネットワーク環境を作成します。以下のパラメータとシステム構成図を参考に、適切に作成します。

  • Public Subnet : インスタンス用
  • Private Subnet : DBaaS 1台 用
  • Internet Gateway
  • Service Gateway : DBaaS が自動バックアップする用
  • Security List : Ingress を全て削除
  • Network Security Group
    • 以下の Ingress 通信を許可
      • ICMP
      • SSH
      • TCP1521 (Oracle DB)
  • Route Table
    • 0.0.0.0/0 は Internet Gateway
    • OCI NRT Object Storage : Service Gateway

DBaaS

1台目のOracleDBを作成

OCIのメニューから、[Bare Metal, VM, and Exadata] へ移動し、[Create DB System] を選びます。

1564839888488.png

以下のパラメータを入力します。
Data Guard 構成のため、Enterprise Edition 以上のものを選択します。

  • Name your DB system : sugidbsystem01
  • Hostname prefix : sugihostname01

1564846752003.png

以下のパラメータを入力します

1564824934043.png

以下のパラメータを入力します

  • Hostname Prefix : sugihostname01

1564846851345.png

以下のパラメータを入力します。

1564825015001.png

以下のパラメータを入力します

  • Database name : suginm01

1564846939801.png

以下のパラメータを入力します

1564825222949.png

作成ボタン押下後、Provisioning が走ります。約1時間15分ほど時間が必要です。

1564825321448.png

完了となると、緑色のステータスになります。

1564852294927.png

Data Guard構成

1台目のOracle DB を構成した画面から、Databasesを選択します。

1564852337344.png

Data Guard Associations から、Enable Data Guard を選択します。

1564835876471.png

以下のパラメータを入力して、Data Guard 構成のうち2台目を構成します。

なお、2台目側の Oracle DB を構成する時に、Fault Domain は選択できません。
1台目側のOracle DBと同一のAvailability Domain が選択されていると、異なるFault Domain が自動的に選択されます (今回の場合では、Fault Domain 3 が選ばれる)

  • DISPLAY NAME : 通常作成するときに指定する、DB system name のこと。sugidbsystem02 を指定する。
  • Hostname Prefix : sugihostname02
  • Database Name : 指定できない。1台目のDatabase Name が2台目でも同じものが使用される

1564853064505.png

Data Guard の設定画面上では、PROTECTION MODE は Maximum Performance と TRANSPORT TYPE は Async 固定となっています。構成完了後、DGMGRL(Data Guard Brokerのコマンド・ユーティリティ) を使うことで、設定変更が可能です。

このタイミングで、仮想ネットワーク上で、Ingress : TCP 1521 を許可していないと、エラーになるので、注意してください。

1564836151888.png

UPDATINGが走ります

1564853189643.png

約5分後、DB Systems の一覧に、Data Guard の2台目として 作成中のシステムが表示されます

  • 正常終了 : 1時間15分掛かった
  • エラーになったとき : 約2時間30分掛かった

1564853539504.png

約1時間15分待機後、AVAILAVLE状態となります。
詳細画面上で、Data Guard の Role などが表示されています。

1564880460172.png

2台目側の詳細画面を確認すると、Database Role が、Standby となっています。
また、自動バックアップ機能が Disabled となっており、有効にすることもできませんが、Database Role を Primary へスイッチオーバーすると、設定が出来るようになるため、忘れないように後程設定を行います。

1564886289596.png

状態の確認

Data Guard を構成しているインスタンスにSSHログインします。Oracle DB を作成した時に指定した 公開鍵に紐づく秘密鍵を使用してSSHログインします。

[opc@client ~]$ ssh opc@sugihostname01.priv01.vcn.oraclevcn.com 
Last login: Sun Aug  4 02:00:19 2019 from 10.2.0.2 
[opc@sugihostname01 ~]$  

なお、Data Guard を構成しているインスタンス上で、root ユーザーへスイッチすることも可能です

[opc@sugihostname01 ~]$ sudo su - 
[root@sugihostname01 ~]#  

Default で作成されている、oracle ユーザーへスイッチします

[opc@sugihostname01 ~]$ sudo su - oracle 
[oracle@sugihostname01 ~]$  

DGMGRL(Data Guard Brokerのコマンド・ユーティリティ) がビルドインされています

[oracle@sugihostname01 ~]$ which dgmgrl 
/u01/app/oracle/product/18.0.0.0/dbhome_1/bin/dgmgrl 

DGMGRLを使って、Data Guard 構成を確認するために、まずは DGMGRL を起動します

[oracle@sugihostname01 ~]$ dgmgrl / 
DGMGRL for Linux: Release 18.0.0.0.0 - Production on Sun Aug 4 02:06:15 2019 
Version 18.6.0.0.0

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

Welcome to DGMGRL, type "help" for information.
Connected to "suginm01_nrt1mv" 
Connected as SYSDG.
DGMGRL> 

Data Guard の Configuration の詳細を確認します。様々な情報が表示されていますが注目すべきは、Data Guard の Member 一覧が表示されています。

DGMGRL> SHOW CONFIGURATION VERBOSE; 

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxPerformance
  Members:
  suginm01_nrt1mv - Primary database                <==== 1台目
    suginm01_nrt1fr - Physical standby database     <==== 2台目

  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> 

なお、表示されている Member の名前は、OCI のコンソール上ではDatabase Unique Name を見ると確認できます

1564884753219.png

確認したDatabase Unique Nameを使用して、SHOW DATABASE コマンドを実行すると、Data Guard 構成としての Role が PRIMARYであることを確認できます。

DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1mv; 

Database - suginm01_nrt1mv

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s): 
    suginm01

  Properties: 
    DGConnectIdentifier             = 'suginm01_nrt1mv'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'ASYNC'
    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> 

同様に、2台目の Database Unique Name を確認します

1564884923639.png

SHOW DATABASE コマンドで、2台目の詳細情報を確認します。Data Guard の Role は、PHYSICAL STANDBY であることが確認できます。

DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1fr; 

Database - suginm01_nrt1fr

  Role:               PHYSICAL STANDBY
  Intended State:     APPLY-ON
  Transport Lag:      0 seconds (computed 8 seconds ago) 
  Apply Lag:          0 seconds (computed 8 seconds ago)
  Average Apply Rate: 2.00 KByte/s
  Active Apply Rate:  416.00 KByte/s 
  Maximum Apply Rate: 575.00 KByte/s
  Real Time Query:    OFF
  Instance(s):
    suginm01

  Properties:
    DGConnectIdentifier             = 'suginm01_nrt1fr'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'ASYNC'
    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> 

Data Guard のデータ保護モードをMaxAvailabilityに変更

Data Guard には、コスト・可用性・パフォーマンス・データ保護のバランスをとるために、データ保護モードが3種類用意されています。下の表は3種類の特徴と概要を示したものです

参考元 : https://www.oracle.com/technetwork/jp/content/twp-dataguard-11gr2-134591-ja.pdf

モード データ損失のリスク 転送 スタンバイ・データベースからの確認がない場合の処理
最大保護 データ損失ゼロ
二重障害保護
SYNC トランザクションのREDOがディスクに書き込まれたことを示すスタンバイ・データベースからの確認を受信してから、コミットの成功をアプリケーションに通知します。
最大可用性 ハイブリッド
損失の可能性あり
SYNC スタンバイ・データベースからの確認を受信するか、または NET_TIMEOUT しきい値に指定された期間が過ぎたら、いずれの場合もコミットの成功をアプリケーションに通知します。
最大パフォーマンス 最小限のデータ保護
損失の可能性あり
ASYNC プライマリはスタンバイからの確認を待つことなく、コミットの成功をアプリケーションに通知します。

DGMGRL(Data Guard Brokerのコマンド・ユーティリティ)を使用して、最大可用性(MaxAvailability) モードに変更します

edit database suginm01_nrt1fr set property 'logXptMode'='SYNC';
edit database suginm01_nrt1mv set property 'logXptMode'='SYNC';
edit configuration set protection mode as maxavailability;

実行例

DGMGRL> edit database suginm01_nrt1fr set property 'logXptMode'='SYNC'; 
Property "logXptMode" updated 
DGMGRL> edit database suginm01_nrt1mv set property 'logXptMode'='SYNC'; 
Property "logXptMode" updated 
DGMGRL> edit configuration set protection mode as maxavailability; 
Succeeded. 

設定変更後の状態を確認します

DGMGRL> SHOW CONFIGURATION VERBOSE;  

Configuration - suginm01_nrt1mv_suginm01_nrt1f 

  Protection Mode: MaxAvailability          <============== 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> 

1台目

DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1mv;  

Database - suginm01_nrt1mv

  Role:               PRIMARY
  Intended State:     TRANSPORT-ON
  Instance(s): 
    suginm01

  Properties: 
    DGConnectIdentifier             = 'suginm01_nrt1mv'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'SYNC'         <============== SYNCになっている
省略

2台目

DGMGRL> SHOW DATABASE VERBOSE suginm01_nrt1fr      

Database - suginm01_nrt1fr

  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:  517.00 KByte/s
  Maximum Apply Rate: 575.00 KByte/s
  Real Time Query:    OFF
  Instance(s):
    suginm01

  Properties: 
    DGConnectIdentifier             = 'suginm01_nrt1fr'
    ObserverConnectIdentifier       = ''
    LogXptMode                      = 'SYNC'         <============== SYNCになっている
省略

スイッチオーバーのテスト

DGMGRL(Data Guard Brokerのコマンド・ユーティリティ)からスイッチオーバーの操作が出来ますが、OCI のコンソール画面上からも実行が可能です。

Switchover ボタンをクリックします

1564887942255.png

パスワードが求められます

1564888002188.png

2, 3分後に、UPDATING となります

1564888091807.png

コマンド SHOW CONFIGURATION VERBOSE の実行結果の下の方に、switchover が発生した status が確認できます。

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:
ORA-16534: switchover, failover or convert operation in progress
DGM-17017: unable to determine configuration status

数分後、Switchover が完了します

DGMGRL> SHOW CONFIGURATION VERBOSE; 

Configuration - suginm01_nrt1mv_suginm01_nrt1f

  Protection Mode: MaxAvailability
  Members:
  suginm01_nrt1fr - Primary database            <============ 2つが入れ替わっている
    suginm01_nrt1mv - Physical standby database <============ 2つが入れ替わっている

  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> 

[重要] 2台目で自動バックアップの設定

Data Guard 構成をした直後では、2台目の インスタンスに、自動バックアップの設定が出来ませんでした。スイッチオーバーして2台目を Primary にすることによって、自動バックアップの設定を行うことが出来ます。

2台目をPrimaryにした直後の画面から、Configure Automatic Backups を選択します。

1564888782542.png

60日間で有効にします。

1564889520403.png

有効にした直後、バックアップが走ります

1564889545705.png

[Option] 2台目で環境変数設定

Data Guard 2台目のインスタンスでは、Oracle として必要な環境変数 ORACLE_HOMEORACLE_SID が設定されていません。
1台目では設定されていたのですが・・・。
しかたないので、2台目で環境変数の設定を行います

まず、2台目のインスタンスへ SSH ログインして、oracle ユーザーへスイッチをします

[opc@client-6032 ~]$ ssh opc@sugihostname02.priv01.vcn.oraclevcn.com 
Last login: Sat Aug 31 13:49:03 2019 from 10.2.0.32 
[opc@sugihostname02 ~]$ sudo su - oracle 
[oracle@sugihostname02 ~]$  

環境変数の設定をします。

export ORACLE_HOME=/u01/app/oracle/product/18.0.0.0/dbhome_1
export ORACLE_SID=suginm01
echo 'export ORACLE_HOME=/u01/app/oracle/product/18.0.0.0/dbhome_1' >> ~/.bashrc
echo 'export ORACLE_SID=suginm01' >> ~/.bashrc

また、Oracle の各種管理で必要なバイナリは、PATH が設定されていないため、これも設定を行います

export PATH=$PATH:/u01/app/18.0.0.0/grid/bin/
echo 'export PATH=$PATH:/u01/app/18.0.0.0/grid/bin/' >> ~/.bashrc

参考URL

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?