DataGuard入門 その3
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として含めることができました。
今回はここまでです。
短冊に願いをこめる茅ヶ崎にて