DataGuard入門 その2

投稿日: 2004年6月30日

Oracle DataGuardについて、その基本構成、セットアップ方法、スイッチオーバー、Flashback、管理方法などを紹介する全4回の連載を1冊にまとめました。
Oracle DataGuardとは・・・1つ以上の Standby Database から構成されていてプライマリデータベース(稼動している方)から Standby Database へ REDO ログを転送し、同期をとることで、可用性を高めるものです。DataGuard には、Physical Standby Database と Logical Standby Database の 2つの構成を利用することができます。

*eBook版のダウンロードをご希望の方は、画像をクリック

<DataGuard入門 その2>
ペンネーム:りん

先週にひき続いて、新米りんがDataGuard入門をお送りします。

せっかくStandby Databaseを作ったのでどのくらいで切り替えられるのか試し
てみたいと思います。

○Oracle10gの新機能
Oracle10gからは、パッチ適用時にスイッチオーバーを行う「ローリング・ア
ップグレード」という機能がサポートされています。(Logical Standbyのみ)
これは、PSRがリリースされたらやってみたいと思います。

○では早速…

SQL> conn / as sysdba
アイドル・インスタンスに接続しました。
SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area  188743680 bytes
Fixed Size                   778036 bytes
Variable Size             162537676 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes
データベースがマウントされました。

Standby可能状態にあるかどうかは
v$databaseビューのswitchover_statusで確認できます。

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO STANDBY

大丈夫なようです。
じゃあ早速切換えちゃいます。

SQL> alter database commit to switchover to physical standby;
alter database commit to switchover to physical standby
*
行1でエラーが発生しました。:
ORA-01109: データベースがオープンされていません。

あら…オープンしなきゃダメみたいです。

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
SESSIONS ACTIVE

SESSIONS ACTIVEになりました。
この状態でスイッチオーバーができるのでしょうか?

SQL> alter database commit to switchover to physical standby;

データベースが変更されました。

できた…のかなぁ?

alert_log
-----------------------------------------------------------------------
Mon Jun 28 21:22:20 2004
alter database commit to switchover to physical standby
Mon Jun 28 21:22:20 2004
primary; ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY
Mon Jun 28 21:22:20 2004
ARCH: Connecting to console port...
Performing log switch to complete LGWR archival of current logfile
Archiving all current logfiles on all instances
~略~
primary; Switchover: Complete - Database shutdown required
Mon Jun 28 21:22:37 2004
ARCH: Connecting to console port...
Completed: alter database commit to switchover to physical st
-----------------------------------------------------------------------
SQL> select DATABASE_ROLE from v$database;

DATABASE_ROLE
----------------
PHYSICAL STANDBY

スイッチオーバーできたようです。
この環境では、20秒程度でスイッチオーバーできるようですね。ちなみに、
スイッチオーバー完了後は、プライマリデータベースはスイッチバックを行
うまで、読み取り専用でオープンされます。更新を伴う処理はできません。

○スイッチバック
では、スイッチオーバーしたプライマリデータベースを切り戻ししてみます。

SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area  188743680 bytes
Fixed Size                   778036 bytes
Variable Size             162537676 bytes
Database Buffers           25165824 bytes
Redo Buffers                 262144 bytes 
データベースがマウントされました。

Primary側で、switchover_statusを見てみます

SQL> select switchover_status from v$database;

SWITCHOVER_STATUS
--------------------
TO PRIMARY

SQL> alter database commit to switchover to physical primary;

データベースが変更されました。
alert_log
-----------------------------------------------------------------------
primary; ALTER DATABASE SWITCHOVER TO PRIMARY
Tue Jun 29 23:16:20 2004
ARCH: Connecting to console port...
If media recovery active, switchover will wait 900 seconds
SwitchOver after complete recovery through change 506035
Standby became primary SCN: 506034
Flashback Database Disabled
Tue Jun 29 23:16:23 2004
primary; Switchover: Complete - Database shutdown required
ARCH: Connecting to console port...
Completed: alter database commit to switchover to physical primary
-----------------------------------------------------------------------

3秒程度で完了したみたいですが
ステータスはどうなったのでしょうか?

一度、shutdownした後、プライマリデータベースとして起動する必要があるので
インスタンスを再起動して…

SQL> select DATABASE_ROLE,OPEN_MODE from v$database;

DATABASE_ROLE    OPEN_MODE
---------------- ----------
PRIMARY          READ WRITE

お!ちゃんとPRIMARYロールに設定されています
OPEN_MODEもREAD WRITEと、更新処理が可能になっています。

今回は、ここまでで終わります。

蒸し暑いです…茅ヶ崎にて