Data Guard:フィジカル・スタンバイ・データベースへのスイッチオーバー(11g)
1. プライマリ・データベース(PROD)でスイッチオーバー(To Standby)
検証環境:
Primary database : PROD
Standby database : PRODSTB
1.1 プライマリ・データベースがスタンバイ・ロールにスイッチオーバーできるかを確認
TO STANDBY/SESSIONS ACTIVEの場合は切り替え可能となる。
PROD(SYS)> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
1.2 プライマリ・データベースでスイッチオーバー
PROD(SYS)> alter database commit to switchover to physical standby with session shutdown;
Database altered.
1.3 元のプライマリ・データベース(PROD)を停止してマウントする
PROD(SYS)> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
PROD(SYS)> startup mount;
ORACLE instance started.
Total System Global Area 368263168 bytes
Fixed Size 1313456 bytes
Variable Size 306185552 bytes
Database Buffers 54525952 bytes
Redo Buffers 6238208 bytes
Database mounted.
PROD(SYS)> select name, db_unique_name, open_mode, database_role from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE
--------- ------------------------------ ---------- ----------------
PROD PROD MOUNTED PHYSICAL STANDBY
PROD(SYS)>
2. プライマリロールへ切り替えるスタンバイ(PRODSTB)でスイッチオーバー(TO PRIMARY)
2.1 プライマリロールへ切り替えられるかを確認
TO PRIMARY/SESSIONS ACTIVEの場合は切り替え可能となる。
PRODSTB(SYS)> SELECT SWITCHOVER_STATUS FROM V$DATABASE;
SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE
2.2 スタンバイ(PRODSTB)でプライマリロールへスイッチオーバー
PRODSTB(SYS)> alter database commit to switchover to primary with session shutdown;
Database altered.
PRODSTB(SYS)> select name, db_unique_name, open_mode, database_role from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE
--------- ------------------------------ ---------- ----------------
PROD PRODSTB MOUNTED PRIMARY
PRODSTB(SYS)>
2.3 新プライマリ(PRODSTB)をオープンする
PRODSTB(SYS)> alter database open;
Database altered.
PRODSTB(SYS)> select name, db_unique_name, open_mode, database_role from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE
--------- ------------------------------ ---------- ----------------
PROD PRODSTB READ WRITE PRIMARY
PRODSTB(SYS)>
3. 新スタンバイ(PROD)のログ適用サービスを開始
PROD(SYS)> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
PROD(SYS)>
新スタンバイ(PROD)でログ適用サービスの確認
PROD(SYS)> select sequence#,archived,applied from v$archived_log where sequence# > 85;
SEQUENCE# ARC APPLIED
---------- --- ---------
86 YES YES
87 YES YES
87 YES YES
86 YES YES
88 YES NO
88 YES YES
89 YES NO
89 YES YES
90 YES YES
90 YES NO
91 YES IN-MEMORY
11 rows selected.
PROD(SYS)>
4. スイッチバック
プライマリ(PRODSTB)でスタンバイロールへスイッチバック
PRODSTB(SYS)> set lines 120
PRODSTB(SYS)> select name, db_unique_name, open_mode, database_role, switchover_status from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
--------- ------------------------------ ---------- ---------------- --------------------
PROD PRODSTB READ WRITE PRIMARY SESSIONS ACTIVE
PRODSTB(SYS)> alter database commit to switchover to physical standby with session shutdown;
Database altered.
PRODSTB(SYS)> shutdown immediate
ORA-01507: database not mounted
ORACLE instance shut down.
PRODSTB(SYS)> startup mount;
ORACLE instance started.
Total System Global Area 368263168 bytes
Fixed Size 1313456 bytes
Variable Size 301991248 bytes
Database Buffers 58720256 bytes
Redo Buffers 6238208 bytes
Database mounted.
PRODSTB(SYS)> select name, db_unique_name, open_mode, database_role, switchover_status from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
--------- ------------------------------ ---------- ---------------- --------------------
PROD PRODSTB MOUNTED PHYSICAL STANDBY TO PRIMARY
PRODSTB(SYS)>
スタンバイ(PROD)でプライマリロールへスイッチバック
PROD(SYS)> set lines 120
PROD(SYS)> select name, db_unique_name, open_mode, database_role, switchover_status from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
--------- ------------------------------ ---------- ---------------- --------------------
PROD PROD MOUNTED PHYSICAL STANDBY TO PRIMARY
PROD(SYS)> alter database commit to switchover to primary with session shutdown;
Database altered.
PROD(SYS)> alter database open;
Database altered.
PROD(SYS)> select name, db_unique_name, open_mode, database_role, switchover_status from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
--------- ------------------------------ ---------- ---------------- --------------------
PROD PROD READ WRITE PRIMARY TO STANDBY
PROD(SYS)>
スタンバイ(PROD)でログ適用サービスを開始
PRODSTB(SYS)> alter database recover managed standby database using current logfile disconnect from session;
Database altered.
PRODSTB(SYS)> select name, db_unique_name, open_mode, database_role, switchover_status from v$database;
NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
--------- ------------------------------ ---------- ---------------- --------------------
PROD PRODSTB MOUNTED PHYSICAL STANDBY NOT ALLOWED
PRODSTB(SYS)> select thread#, low_sequence#, high_sequence# from v$archive_gap; --# ギャップがあるかどうかを確認
no rows selected
page revision: 22, last edited: 14 Dec 2012 07:33