SWITCHOVER

SWITCHOVERコマンドを発行すると、現行のプライマリ・データベースがスタンバイ・データベースになり、指定したスタンバイ・データベースがプライマリ・データベースになります。これはスイッチオーバー操作と呼ばれています。

書式

SWITCHOVER TO <db_unique_name> [WAIT [<timeout_in_seconds>]];  

WAITオプションでは、スイッチオーバーを続行する前にセッションが排出されるまで待機することを指定します。timeout_in_secondsオプションを使用して待機時間を指定します。ブローカは、指定された秒数の間、セッションのドレインを待機してから、スイッチオーバーを続行します。ドレインされていないセッションは、スイッチオーバー・プロセス中に強制終了されます。

WAITオプションを含めたが、timeout_in_secondsを省略した場合は、ブローカにより、現在のアクティブなサービスすべてについてdrain_timeoutの最大値が特定され、最長でもその期間で、現在のすべてのクライアント要求が処理されるのを待ってから、スイッチオーバーが続行されます。drain_timeout値は、SRVCTLユーティリティのadd serviceコマンドまたはmodify serviceコマンドで指定するオプションです。

timeout_in_secondsに指定された値は、drain_timeoutオプションを使用して設定された値より優先されます。

WAITオプションは、Oracle Clusterwareのアプリケーション・コンティニュイティ関連の属性を使用してサービスが構成されている場合にのみ有効です。

ノート:

WAITオプションは26aiでは非推奨となっています。DrainTimeout構成プロパティを使用して、スイッチオーバーのドレイン・タイムアウトを指定します。

コマンド・パラメータ

db_unique_name

プライマリ・データベースのロールに変更するスタンバイ・データベースのDB_UNIQUE_NAME初期化パラメータ値。

timeout_in_seconds
リソースの排出が完了し、スイッチオーバー操作を続行するまでの許容時間(秒)。

指定できる値は、0 (ゼロ)または任意の正の整数です。デフォルト値は空の文字列で、このオプションが設定されていないことを示します。値がゼロの場合、即座にドレインが発生し、ブローカはスイッチオーバーを続行します。ドレイン期間中は、現在のすべてのクライアント要求は処理されますが、新しい要求は受け入れません。

使用上のノート

  • ファスト・スタート・フェイルオーバーが有効な場合は、ファスト・スタート・フェイルオーバーのターゲット・スタンバイ・データベースへのスイッチオーバーのみ実行できます。

  • スイッチオーバーの起動前に、ブローカによって、プライマリ・データベースおよびスタンバイ・データベースが次の状態であることが検証されます。

    • REDO転送サービスが起動するように、プライマリ・データベースが有効化され、TRANSPORT-ON状態になっている必要があります。

    • スタンバイ・データベースが有効化され、TRANSPORT-ON状態になっており、ログ適用サービスが起動している必要があります。

  • ブローカは、スイッチオーバーに関係するように選択したスタンバイ・データベースにREDO転送サービスのエラーがないかぎり、スイッチオーバーを続行します。その他のスタンバイ・データベースにエラーが発生しても、スイッチオーバーの続行には影響しません。

  • ロジカル・スタンバイ・データベースへのスイッチオーバーは、構成が最大保護モードで動作している場合には許可されません。

  • ブローカ構成が最大保護モードまたは最大可用性モードで動作している場合、スイッチオーバーの操作後も同じ保護モードが維持されます(「スイッチオーバー操作実行前の考慮事項」を参照)。スイッチオーバーのターゲットとなるスタンバイ・データベースが保護モード要件を満たす唯一のスタンバイであったためにモードを維持できない場合、スイッチオーバーは許可されません。

  • プライマリ・ロールを引き継ぐスタンバイ・データベースがフィジカル・スタンバイ・データベースの場合は、スイッチオーバーの完了後に、元のプライマリ・データベースが再起動されます。例10-14に示すように、元のプライマリへのクライアント接続はフィジカル・スタンバイ・データベースにリダイレクトされます。スタンバイ・データベースがロジカル・スタンバイ・データベースの場合は、プライマリ・データベースもロジカル・スタンバイ・データベースも再起動されません。

  • プライマリ・ロールを引き継ぐスタンバイ・データベースがフィジカル・スタンバイ・データベースの場合、元のプライマリ・データベースはフィジカル・スタンバイ・データベースとなります。

  • プライマリ・ロールを引き継ぐスタンバイ・データベースがロジカル・スタンバイ・データベースの場合、元のプライマリ・データベースはロジカル・スタンバイ・データベースとなります。

  • スナップショット・スタンバイ・データベースにはスイッチオーバーできません。

  • プライマリ・ロールを引き継ぐスタンバイ・データベースがロジカル・スタンバイ・データベースで、構成にフィジカル・スタンバイ・データベースが含まれている場合、スイッチオーバー後、フィジカル・スタンバイ・データベースは無効化されます。

    注意:

    このため、通常、スイッチオーバーには、ロジカル・スタンバイ・データベースのかわりにフィジカル・スタンバイ・データベースを指定することをお薦めします。ロジカル・スタンバイ・データベースへのスイッチオーバーが必要な場合、フィジカル・スタンバイ・データベースを再作成する方法については、「ロール変更後の無効化されたデータベースの再有効化」を参照してください。

    比較的すぐに元のプライマリ・データベースにスイッチバックする場合は、フィジカルおよびスナップショット・スタンバイ・データベースを無効なままにしておくことができます。フィジカルおよびスナップショット・スタンバイ・データベースはまだ元のプライマリ・データベースの実行可能なスタンバイ・データベースであるため、元のプライマリ・データベースへのスイッチバックの完了後、これらを再有効化できます。

  • データベースがOracle Clusterwareによって管理されている場合、ブローカはどのインスタンスのPDBもオープンしません。かわりに、ブローカはスイッチオーバーの完了後にClusterwareエージェントに通知し、Clusterwareエージェントはサービス構成に基づいて特定のインスタンスのPDBをオープンします。

コマンドの例

例10-12 プライマリからフィジカル・スタンバイへのスイッチオーバーの成功例

この例では、フィジカル・スタンバイ・データベースSouth_Salesがプライマリ・ロールに遷移する正常なスイッチオーバーを示します。

DGMGRL> SWITCHOVER TO 'South_Sales';
2021-03-08T18:46:18.576-05:00
Performing switchover NOW, please wait...

2021-03-08T18:46:31.899-05:00
New primary database "South_Sales" is opening...

2021-03-08T18:46:31.901-05:00
Operation requires start up of instance "north_sales1" on database "North_Sales"
Starting instance "north_sales1"...
Connected to an idle instance.
ORACLE instance started.
Connected to "north_sales1"
Database mounted.

Connected to "South_Sales"
2021-03-08T18:47:12.754-05:00
Switchover succeeded, new primary is "South_Sales"

2021-03-08T18:47:12.780-05:00
Switchover processing complete, broker ready.

例10-13 O/S認証を使用したことによるスイッチオーバーの失敗例

オペレーティング・システム認証を使用してデータベースに接続する場合は、任意のユーザー名およびパスワードを使用して接続できます。ただし、DGMGRLはリモートでは自己認証できないため、プライマリ・データベースとスタンバイ・データベースを自動的にシャットダウンして起動することができません。

次に、スイッチオーバーには成功したが、DGMGRLでプライマリ・データベースとスタンバイ・データベースのシャットダウンおよび起動ができなかったためにエラーが戻された例を示します。

DGMGRL> SWITCHOVER TO 'South_Sales';
Performing switchover NOW, please wait...
New primary database "South_Sales" is opening...
Operation requires shutdown of instance "north_sales1" on database "North_Sales"
Shutting down instance "north_sales1"...
ORA-01031: insufficient privileges
 
Warning: You are no longer connected to ORACLE.
 
Please complete the following steps to finish switchover:
        shut down instance "north_sales1" of database "North_Sales"
        start up and mount instance "north_sales1" of database "North_Sales"

ノート:

DGMGRLでインスタンスを自動的に再起動するには、最後のCONNECTコマンドが別のデータベースへの接続に使用された場合でも、最後のCONNECTコマンドに指定された資格証明を使用してデータベースに接続する必要があります。

SHUTDOWNおよびSTARTUPコマンドを手動で発行して、新しいプライマリおよび停止されたスタンバイ・インスタンスを再起動する必要があります。

例10-14 ターゲットのフィジカル・スタンバイ・データベースへのクライアント接続のリダイレクト

この例では、フィジカル・スタンバイ・データベースSouth_Salesがプライマリ・ロールに遷移する正常なスイッチオーバーを実行します。元のプライマリへの接続は、新しいプライマリ・データベースSouth_Salesに自動的に再接続されます。

DGMGRL> SWITCHOVER TO South_Sales;
2021-03-08T18:42:38.906-05:00
Performing switchover NOW, please wait...

2021-03-08T18:42:39.704-05:00
Operation requires a connection to database "South_Sales"
Connecting ...
Connected to "South_Sales"
Connected as SYSDG.

2021-03-08T18:42:39.908-05:00
Continuing with the switchover...

2021-03-08T18:42:50.022-05:00
New primary database "South_Sales" is opening...

2021-03-08T18:42:50.023-05:00
Operation requires start up of instance "north_sales2" on database "North_Sales"
Starting instance "north_sales2"...
Connected to an idle instance.
ORACLE instance started.
Connected to "North_Sales"
Database mounted.

Connected to "South_Sales"
2021-03-08T18:43:31.457-05:00
Switchover succeeded, new primary is "South_Sales"

2021-03-08T18:43:31.486-05:00
Switchover processing complete, broker ready.

例10-15 スイッチオーバー時のゼロ待機時間の指定

この例では、SWITCHOVERコマンドにWAITオプションを挿入し、待機時間をゼロ秒に設定します。したがって、ブローカはセッションのドレインを待機せず、スイッチオーバー操作を続行します。

DGMGRL> SWITCHOVER TO 'South_Sales' WAIT 0;
2021-03-08T18:29:17.674-05:00
WAIT 0 does not wait for sessions to drain; proceeding with switchover...

2021-03-08T18:29:27.995-05:00
New primary database "South_Sales" is opening...

2021-03-08T18:29:27.995-05:00
Oracle Clusterware is restarting database "North_Sales" ...

Connected to "South_Sales"
2021-03-08T18:30:09.375-05:00
Switchover succeeded, new primary is "South_Sales"

2021-03-08T18:30:09.421-05:00
Switchover processing complete, broker ready.

例10-16 WAIT句の使用によるスイッチオーバー時の待機時間の指定

この例では、SWITCHOVERコマンドにWAITオプションを挿入し、待機時間を23秒に設定します。したがって、ブローカはセッションのドレインを23秒間待機してから、スイッチオーバーを続行します。

DGMGRL> SWITCHOVER TO 'South_Sales' WAIT 23;
2021-03-08T18:26:29.412-05:00
Stopping services and waiting up to 23 seconds for sessions to drain...

2021-03-08T18:26:40.209-05:00
Done waiting for sessions to drain; proceeding with switchover now...

2021-03-08T18:26:54.411-05:00
New primary database "South_Sales" is opening...

2021-03-08T18:26:54.412-05:00
Oracle Clusterware is restarting database "North_Sales" ...

Connected to "South_Sales"
2021-03-08T18:27:39.045-05:00
Switchover succeeded, new primary is "South_Sales"

2021-03-08T18:27:39.084-05:00
Switchover processing complete, broker ready.