はじめに
以下の続き
Oracle Database Physical Data Guard 作成手順(12cR1)
https://qiita.com/mon_tu/items/ca5d6b341835d262e3ff
首都オーディンにあるデータベース(odin)の災対環境として、イゼルローン要塞上にフィジカルスタンバイデータベース(iserlohn)が構成されている。
オーディンからイゼルローンへのスイッチオーバー、またスイッチバックを行う。
項目 | プライマリ | スタンバイ |
---|---|---|
DB_NAME | odin | odin |
DB_UNIQUE_NAME | odin | iserlohn |
hostname | ol121p | ol121s |
service_names | odin.us.oracle.com | iserlohn.us.oracle.com |
スイッチオーバーの実行
プライマリ(オーディン)で事前検証
構成の確認
SQL> select * from v$dataguard_config;
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
------------------------------ ------------------------------ ----------------- ----------- ----------
odin NONE PRIMARY DATABASE 4598308 0
iserlohn odin PHYSICAL STANDBY 4598430 0
スイッチオーバーの文にはVERIFYオプションがあり、スイッチオーバーに必要な多くの条件のチェックが実行される.
「Database altered.」が出力されれば問題なし。
SQL> ALTER DATABASE SWITCHOVER TO iserlohn VERIFY;
Database altered.
例えば、MRPを停止した状態で実行するとORA-16470が発生する。アラートログにも出力される。
SQL> ALTER DATABASE SWITCHOVER TO iserlohn VERIFY;
ALTER DATABASE SWITCHOVER TO iserlohn VERIFY
*
ERROR at line 1:
ORA-16470: Redo Apply is not running on switchover target
スイッチオーバー
プライマリ・データベースでスイッチオーバーを開始する。
SQL> ALTER DATABASE SWITCHOVER TO iserlohn;
Database altered.
アラートログ。
プライマリ側は最後にabortでインスタンス停止される。
ALTER DATABASE SWITCHOVER TO iserlohn
Mon Sep 24 12:17:13 2018
Starting switchover [Process ID: 26118]
<中略>
Switchover: Primary controlfile converted to standby controlfile succesfully.
Switchover: Complete - Database shutdown required
Sending request(convert to primary database) to switchover target ISERLOHN
Switchover complete. Database shutdown required
USER (ospid: 26118): terminating the instance
Mon Sep 24 12:17:25 2018
Instance terminated by USER, pid = 26118
Completed: ALTER DATABASE SWITCHOVER TO iserlohn
Shutting down instance (abort)
License high water mark = 6
Mon Sep 24 12:17:25 2018
Instance shutdown complete
新プライマリ(イゼルローン要塞)データベースのオープン
新プライマリ側はマウント状態なのでデータベースをOPENする。
SQL> select * from v$dataguard_config;
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
------------------------------ ------------------------------ ----------------- ----------- ----------
iserlohn NONE PRIMARY DATABASE 0 0
odin iserlohn UNKNOWN 0 0
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,DATABASE_ROLE,FORCE_LOGGING,CURRENT_SCN from v$database;
DBID NAME LOG_MODE OPEN_MODE DATABASE_ROLE FORCE_LOGGING CURRENT_SCN
---------- --------- ------------ -------------------- ---------------- --------------------------------------- -----------
884158366 ODIN ARCHIVELOG MOUNTED PRIMARY YES 0
SQL> alter database open;
Database altered.
SQL> select DBID,NAME,LOG_MODE,OPEN_MODE,DATABASE_ROLE,FORCE_LOGGING,CURRENT_SCN from v$database;
DBID NAME LOG_MODE OPEN_MODE DATABASE_ROLE FORCE_LOGGING CURRENT_SCN
---------- --------- ------------ -------------------- ---------------- --------------------------------------- -----------
884158366 ODIN ARCHIVELOG READ WRITE PRIMARY YES 4700295
SQL>
新スタンバイ(オーディン)のデータベースのマウントとREDO適用の開始
新スタンバイ側はデータベースが停止しているので、再度接続し、MOUNT→MRPの起動を実施する。
SQL> STARTUP MOUNT;
ORACLE instance started.
Total System Global Area 729808896 bytes
Fixed Size 2928680 bytes
Variable Size 520097752 bytes
Database Buffers 201326592 bytes
Redo Buffers 5455872 bytes
Database mounted.
SQL>
SQL> alter database recover managed standby database disconnect;
Database altered.
それぞれのロールを確認する。
SQL> select * from v$dataguard_config;
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE CURRENT_SCN CON_ID
------------------------------ ------------------------------ ----------------- ----------- ----------
iserlohn NONE PRIMARY DATABASE 4702359 0
odin iserlohn PHYSICAL STANDBY 4701868 0
スイッチバックの実行(元のロールに戻す)
逆をするだけなのでさらっと。
プライマリ(イゼルローン要塞)で事前検証
SQL> ALTER DATABASE SWITCHOVER TO odin VERIFY;
Database altered.
スイッチオーバー
SQL> ALTER DATABASE SWITCHOVER TO odin ;
Database altered.
新プライマリ(オーディン)データベースのオープン
SQL> ALTER DATABASE OPEN;
Database altered.
新スタンバイ(イゼルローン要塞)のデータベースのマウントとREDO適用の開始
SQL> STARTUP MOUNT
ORACLE instance started.
Total System Global Area 729808896 bytes
Fixed Size 2928680 bytes
Variable Size 566235096 bytes
Database Buffers 155189248 bytes
Redo Buffers 5455872 bytes
Database mounted.
SQL> alter database recover managed standby database disconnect;
Database altered.
ロールの確認。
SQL> select * from v$dataguard_config;
DB_UNIQUE_NAME PARENT_DBUN DEST_ROLE
------------------------------ ------------------------------ -----------------
CURRENT_SCN CON_ID
----------- ----------
odin NONE PRIMARY DATABASE
4804578 0
iserlohn odin PHYSICAL STANDBY
4803587 0
参考
参考マニュアル
Oracle® Data Guard概要および管理 12c リリース1 (12.1) B71304-07
9.2.1 フィジカル・スタンバイ・データベースへのスイッチオーバーの実行
https://docs.oracle.com/cd/E57425_01/121/SBYDB/role_management.htm