使用例9: スイッチオーバー操作の実行
プライマリ・データベースとスタンバイ・データベースのロールは、SWITCHOVERコマンドを使用して切り替えることができます。
SWITCHOVERコマンドを発行する前に、次のことを確認する必要があります。
-
プライマリ・データベースとスタンバイ・データベースの状態がそれぞれ
TRANSPORT-ONおよびAPPLY-ONであること。 -
関係するすべてのデータベースが健全な状態で、エラーや警告がないこと。
-
スタンバイ・データベースのプロパティがプライマリ・データベース上で設定されていること。これにより、プライマリ・データベースはスタンバイ・データベースへ遷移するときに正常に機能できます(次の例の太字表記を参照してください)。
-
プライマリ・データベースでスタンバイREDOログ・ファイルが構成されています。
-
構成が最大可用性モードの場合、現在のプライマリは、新しいプライマリから直接REDOを受け取る場合は
SYNC、FASTSYNCまたは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:
SUCCESSSWITCHOVERコマンドの使用(タスク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_SalesのLogXptModeプロパティ値を設定するか、SYNC転送モードを使用してREDOを送信するようにデータベースSouth_SalesのRedoRoutesプロパティ値を構成します。データベースが、RedoRoutesプロパティがREDO転送モードに構成されているデータベースまたは遠隔同期インスタンスからREDOを受け取る場合、そのモードがLogXptModeで指定されている転送モードを上書きする点に注意してください。