DataGuard入門 その3

投稿日: 2004年7月07日

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

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

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

先週に引き続き、新米りんによるDataGuard入門のお時間です。

今週から、Oracle10gから実装されたFlashback Databaseを交えてお送りした
いと思います。

○FlashBackって?
長い人生「あの時こーしていればなぁ~」なんてことありますよね…

以前、9iでの新機能としてFlashback Queryが実装され当メルマガでも、検
証記事が配信されました。

その名の通り、過去のSCN(システム変更番号)や時刻などを指定しその時
点での、検索結果を復元してくれる機能が、Oracle9iで実装されたFlashback
Queryでした。

Oracle10gでは大幅にFlashback機能が強化されていますが今回は、Flashback
Databaseを利用し、フェイルオーバー後のPrimaryDatabaseをStandby Database
としてDataGuardへ含めてみたいと思います。

○Flashback機能を使う
なんらかの理由により障害が発生し、Standby Databaseへ切り替えた後元
PrimaryサーバをStandby DatabaseとしてDataGuard環境に含める為には障害
発生時点に戻す必要があります。
ここでFlashback機能を使ってみます。

では、早速Flashback機能を有効にしてみます。

2日分のFlashbackを確保する為に、DB_FLASHBACK_RETENTION_TARGETを2880(分)
に設定します。
デフォルトでは1440分(1日分)です。

SQL> ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=2880;

システムが変更されました。

では、早速FlashbackをONです

SQL> alter database flashback on;

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

またv$databaseビューのFLASHBACK_ONを確認してみます。

SQL> SELECT FLASHBACK_ON from v$database;

FLASHBACK_ON
--------------------
YES

有効化されているようです。

○ではでは、早速…
フェイルオーバーで切換えちゃいます。

SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH SKIP STANDBY LOGFILE;

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

SQL> ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY;

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

SQL> select name,database_role,controlfile_type from v$database;

NAME                           DATABASE_ROLE    CONTROL
------------------------------ ---------------- -------
PRIMARY                        PRIMARY          CURRENT

ちゃんと切り替わってますね。

では、元PrimaryをStandby Databaseとして過ごして貰います

Flashbackをするには、SCN(システム変更番号)が必要です。
元Primaryが復旧した後で、Flashbackを行います。
SCN番号は、v$databaseのSTANDBY_BECAME_PRIMARY_SCNを参照してください。

SQL> select STANDBY_BECAME_PRIMARY_SCN from v$database;

STANDBY_BECAME_PRIMARY_SCN
--------------------------
                    591903

このSCNが障害発生直前のシステム変更番号ということになります。
なので、この直前まで戻してみます。

SQL> flashback database to scn 591903;

フラッシュバックが完了しました。

これでフラッシュバックが完了しました。
これで障害発生直前の状態になったことになります。

○Standby Databaseとしての準備
まず、Standby用の制御ファイルを作成します。

SQL> ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/standby.ctl';

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

作成された制御ファイルを、使用している制御ファイルに置き換えます。
では、一度シャットダウンして…

SQL> recover managed standby database using current logfile disconnect;
メディア・リカバリが完了しました。

確認してみます。

SQL> select name , database_role from v$database;

NAME                           DATABASE_ROLE
------------------------------ ----------------
PRIMARY                        PHYSICAL STANDBY

Standby Databaseとして含めることができました。

今回はここまでです。

短冊に願いをこめる茅ヶ崎にて