使用例9: スイッチオーバー操作の実行

プライマリ・データベースとスタンバイ・データベースのロールは、SWITCHOVERコマンドを使用して切り替えることができます。

SWITCHOVERコマンドを発行する前に、次のことを確認する必要があります。

  • プライマリ・データベースとスタンバイ・データベースの状態がそれぞれTRANSPORT-ONおよびAPPLY-ONであること。

  • 関係するすべてのデータベースが健全な状態で、エラーや警告がないこと。

  • スタンバイ・データベースのプロパティがプライマリ・データベース上で設定されていること。これにより、プライマリ・データベースはスタンバイ・データベースへ遷移するときに正常に機能できます(次の例の太字表記を参照してください)。

  • プライマリ・データベースでスタンバイREDOログ・ファイルが構成されています。

  • 構成が最大可用性モードの場合、現在のプライマリは、新しいプライマリから直接REDOを受け取る場合はSYNCFASTSYNCまたはASYNCモードでREDOを受け取るように構成されます。遠隔同期インスタンスを介してREDOを受け取る場合、遠隔同期インスタンスはSYNCまたはFASTSYNCモードでREDOを受け取るように構成され、現在のプライマリはASYNCモードでREDOを受け取るように構成されます。構成が最大保護モードの場合、現在のプライマリは、SYNCモードでREDOを受け取るように構成されます。

  • ファスト・スタート・フェイルオーバーが有効化されている場合は、ターゲット・スタンバイ・データベースとして指定されたスタンバイ・データベースへのスイッチオーバーのみ実行できる。

SWITCHOVERコマンドを使用してスイッチオーバーを実行するために必要なタスクは次のとおりです。

SWITCHOVERコマンドの使用(タスク1): プライマリ・データベースのチェック

SHOW DATABASE VERBOSEコマンドを使用して、プライマリ・データベースの状態、健全性およびプロパティをチェックします。

たとえば:

DGMGRL> SHOW DATABASE VERBOSE 'North_Sales';

Database - North_Sales

  Role:                PRIMARY
  Intended State:      TRANSPORT-ON
  Redo Rate:           104 Byte/s  in 15 seconds (computed 9 seconds ago) 
  Instance(s):
    NorthSales

  Properties:
    AlternateLocation               = ''
    ApplyInstanceTimeout            = '0'
    ApplyInstances                  = '0'
    ApplyLagThreshold               = '30'
    ApplyParallel                   = 'AUTO'
    ArchiveLocation                 = ''
    Binding                         = 'OPTIONAL'
    DGConnectIdentifier             = 'north_sales'
    DelayMins                       = '0'
    FastStartFailoverTarget         = 'South_Sales'
    HostName                        = 'sales1'
    InconsistentLogXptProps         = '(monitor)'
    LogShipping                     = 'ON'
    LogXptMode                      = 'SYNC'
    LogXptStatus                    = '(monitor)'
    MaxFailure                      = '0'
    NetTimeout                      = '30'
    ObserverConnectIdentifier       = ''
    PreferredApplyInstance          = ''
    PreferredObserverHosts          = ''
    RecvQEntries                    = '(monitor)'
    RedoCompression                 = 'DISABLE'
    RedoRoutes                      = ''
    ReopenSecs                      = '300'
    SendQEntries                    = '(monitor)'
    SidName                         = '(monitor)'
    StandbyAlternateLocation        = ''
    StandbyArchiveLocation          = ''
    StaticConnectIdentifier         = '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=sales1.example.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=North_Sales_DGMGRL.example.com)(INSTANCE_NAME=NorthSales)(SERVER=DEDICATED)))'
    TopWaitEvents                   = '(monitor)'
    TransportDisconnectedThreshold  = '30'
    TransportLagThreshold           = '30'

  Log file locations:
    Alert log               : /sales/oracle/diag/rdbms/north_sales/NorthSales/trace/alert_NorthSales.log
    Data Guard Broker log   : /sales/oracle/diag/rdbms/north_sales/NorthSales/trace/drcNorthSales.log

Database Status:
SUCCESS

特に、プライマリ・データベースの太字のプロパティおよび現在のステータスをチェックする必要があります。

SWITCHOVERコマンドの使用(タスク2): スイッチオーバーのターゲットとなるスタンバイ・データベースのチェック

SHOW DATABASE コマンドを使用して、スイッチオーバーのターゲットとなるスタンバイ・データベースのステータスをチェックします。

たとえば:

DGMGRL> SHOW DATABASE 'South_Sales';
 
Database - South_Sales
 
  Role: PHYSICAL STANDBY
  Intended State: APPLY-ON
  Transport Lag: 0 seconds (computed 0 seconds ago)
  Apply Lag: 0 seconds (computed 0 seconds ago)
  Apply Rate: 1.44 MByte/s
  Real Time Query: OFF
  Instance(s):
    south_sales1
 
Database Status:
SUCCESS

SWITCHOVERコマンドの使用(タスク3): データベースのロール変更可能確認

ロール変更を実行する前に、VALIDATE DATABASEコマンドを使用して、データベースがロール変更に即時対応可能かどうかを確認する、一連の徹底チェックを実行することができます。

このステップに示す例では、DRSolution構成の3つのデータベース(プライマリ、ロジカル・スタンバイおよびフィジカル・スタンバイの各データベース)すべてにVALIDATE DATABASEコマンドを使用しています。構成は次のようになります。

DGMGRL> SHOW CONFIGURATION;

Configuration - DRSolution

  Protection Mode: MaxAvailability
  Members:
  North_Sales - Primary database
    South_Sales - Physical standby database 
    West_Sales  - Logical standby database 

Fast-Start Failover:  Disabled

Configuration Status:
SUCCESS   (status updated 46 seconds ago)

例: プライマリ・データベースの検証

DGMGRL> VALIDATE DATABASE North_Sales;

  Database Role:    Primary database

  Ready for Switchover:  Yes

  Managed by Clusterware:
    North_Sales:  NO             
    The static connect identifier allows for a connection to database "North_Sales".             

例: ロジカル・スタンバイ・データベースの検証

次のようにしてロジカル・スタンバイ・データベースを検証します。

DGMGRL> VALIDATE DATABASE West_Sales;

  Database Role:     Logical standby database
  Primary Database:  North_Sales

  Ready for Switchover:  Yes
  Ready for Failover:    Yes (Primary Running)
    Warning: Physical and snapshot standby databases will
    be disabled if a role change is performed to this database

  Flashback Database Status:
    Database     Status           Retention Target
    North_Sales  On               1440   
    West_Sales   Off              1440   

  Managed by Clusterware:
    North_Sales:  NO             
    West_Sales :  NO             
    The static connect identifier allows for a connection to database "North_Sales".

  Parameter Settings:
    Parameter                       North_Sales Value        West_Sales Value
    DB_BLOCK_CHECKING               FALSE                    FALSE
    DB_BLOCK_CHECKSUM               TYPICAL                  TYPICAL
    DB_LOST_WRITE_PROTECT           AUTO                     AUTO

例: フィジカル・スタンバイ・データベースの検証

次のようにしてフィジカル・スタンバイ・データベースを検証します。

sentences.
DGMGRL> VALIDATE DATABASE South_Sales;

  Database Role:     Physical standby database
  Primary Database:  North_Sales

  Ready for Switchover:  Yes
  Ready for Failover:    Yes (Primary Running)

  Managed by Clusterware:
    North_Sales:  NO             
    South_Sales:  NO             
    The static connect identifier allows for a connection to database "North_Sales".

  Transport-Related Property Settings:
    Property                        North_Sales Value        South_Sales Value
    LogXptMode                      ASYNC                    SYNC

  Parameter Settings:
    Parameter                       North_Sales Value        South_Sales Value
    DB_BLOCK_CHECKING               FALSE                    FALSE
    DB_BLOCK_CHECKSUM               TYPICAL                  TYPICAL
    DB_LOST_WRITE_PROTECT           AUTO                     AUTO

データベースSouth_Salesは、そのLogXptModeプロパティが SYNCに設定されている唯一のデータベースです。これにより、スイッチオーバーは防止されませんが、スイッチオーバー後の構成は最大可用性モードで機能できず、ロール変更前に問題が修正されなかった場合はエラーが表示されます(タスク5を参照)。

SWITCHOVERコマンドの使用(タスク4): スイッチオーバー・コマンドの発行

SWITCHOVERコマンドを発行して、プライマリ・データベースとスタンバイ・データベースのロールを交換します。

次の例では、ブローカが、元のプライマリ・データベースの停止および再起動を、スイッチオーバーの一部として自動的に実行する方法を示します。(DGMGRLによってプライマリ・データベースとスタンバイ・データベースが自動的に再起動されるようにブローカ環境を設定する方法は、DGMGRLコマンドの使用上のノートを参照してください。)

DGMGRL> SWITCHOVER TO 'South_Sales';
2023-01-11T20:52:23.010+00:00
Performing switchover NOW, please wait...

2023-01-11T20:52:23.233+00:00
Operation requires a connection to database "South_Sales"
Connecting ...
Connected to "South_Sales"
Connected as SYSDBA.

2023-01-11T20:52:24.189+00:00
Continuing with the switchover...

2023-01-11T20:52:36.113+00:00
New primary database "South_Sales" is opening...

2023-01-11T20:52:36.113+00:00
Operation requires start up of instance "NorthSales" on database "North_Sales"
Starting instance "NorthSales"...
Connected to an idle instance.
ORACLE instance started.
Connected to "North_Sales"
Database mounted.
Database opened.

2023-01-11T20:53:41.190+00:00
Switchover succeeded, new primary is "South_Sales"

2023-01-11T20:53:41.196+00:00
Switchover processing complete, broker ready.

スイッチオーバーの完了後、SHOW CONFIGURATIONおよびSHOW DATABASEコマンドを使用して、スイッチオーバー操作が正常終了したかどうかを検証します。

SWITCHOVERコマンドの使用(タスク5): 構成の表示

SHOW CONFIGURATIONコマンドを使用して、スイッチオーバーが正常終了したことを確認します。

DGMGRL> SHOW CONFIGURATION;

Configuration - DRSolution

  Protection Mode: MaxAvailability
  Members:
  South_Sales - Primary database
    Warning: ORA-16627: No member available to support the protection mode.

    North_Sales - Physical standby database 
    West_Sales  - Logical standby database 

Fast-Start Failover:  Disabled

Configuration Status:
WARNING   (status updated 46 seconds ago)

タスク3で説明したように、データベースNorth_Salesによって受信されたREDOがASYNC転送モードを使用するように構成されているため、ロール変更後に構成は最大可用性モードで機能できず、警告が報告されます。この問題を修正するには、SYNC転送モードを使用してREDOを受信するようにデータベースNorth_SalesLogXptModeプロパティ値を設定するか、SYNC転送モードを使用してREDOを送信するようにデータベースSouth_SalesRedoRoutesプロパティ値を構成します。データベースが、RedoRoutesプロパティがREDO転送モードに構成されているデータベースまたは遠隔同期インスタンスからREDOを受け取る場合、そのモードがLogXptModeで指定されている転送モードを上書きする点に注意してください。