Oracle11g DataGuard新機能 その6
<Oracle 11g検証 第4弾 新機能:Oracle11g DataGuard その6>
ペンネーム: オレンジみかん
先週に引き続き「Oracle11g DataGuard新機能」について検証します。
今週は11g新機能のスナップショット・スタンバイについて検証します。
1.検証目的
■検証ポイント
(1)スナップショット・スタンバイの動作ポイント
(2)障害発生時のスナップショット・スタンバイの中断とリカバリ方法
(3)スタンバイDBをテスト環境として利用する時の制限事項は?
■スナップショット・スタンバイとは
フィジカル・スタンバイから作られる新しいタイプのスタンバイデータ
ベースです。スナップショット・スタンバイはテスト目的で利用されプラ
イマリDBから切り離してトランザクションを処理できます。また、スナッ
プショット・スタンバイを読み込み/書き込みでオープンできます。
スナップショット・スタンバイはプライマリDBから引き離したトラザク
ションを処理している間も、引き続きプライマリDBから更新を受け取って
アーカイブします。
スナップショット・スタンバイはスナップショット・スタンバイで行わ
れた更新を破棄するまで、プライマリDBから受け取るREDOデータは適用さ
れません。この機能によりスタンバイ・データベースをテストで利用して
も本番データを常に保護することが可能となります。
2.スナップショット・スタンバイの利用方法について考える
■本番データを使ったテスト環境として使えるか?
スナップショット・スタンバイはプライマリDBと独立したトランザクション
を実行出来るため本番データを使用したテスト環境として使えそうです。
10gR2まではスタンバイDBは同等のスペックのサーバーが待機系サーバーと
して待機していましたが、スナップショット・スタンバイの機能より独立
したトランザクションで書き込みが可能になったことにより、今まで待機
状態となっていた本番機同等スペックのサーバーをテスト環境として有効
活用出来るようになりそうです。
「DataGuardのスナップショット・スタンバイを本番データを使ったテスト
に活用してリソースを有効活用しよう」
【スナップショット・スタンバイの検証事項】
スナップショット・スタンバイは、フラッシュバック・データベースの機能
を利用してスナップショット・スタンバイの直前の状態に戻る必要があるた
め、動作制限事項はやはりフラッシュバックテータベースに依存するのか?
そこで、制限事項を検証するため、フラッシュバック・データベースの制限
事項を参考にし、スナップショット・スタンバイの検証シナリオを設定し
ました。
【検証シナリオ】
[シナリオ1](データ整合性の検証)
データを追加した場合はプライマリDBと整合性は保てるか?
●表領域が変更されない場合
[シナリオ2](リカバリを伴う整合性の検証)
スナップショット・スタンバイ中の障害対応の方法は?
● スナップショット・スタンバイ中に障害が発生した場合の対処方法は?
[シナリオ3](スナップショット・スタンバイの制限項目の検証)
スナップショット・スタンバイからフィジカル・スタンバイに変更する時、
スナップショット・スタンバイ有効な日数はあるのか?
●フラッシュバック・データベースのパラメータに依存するのか?。
[シナリオ4](スナップショット・スタンバイの制限項目の検証)
新しく表領域を追加したり、削除した場合のプライマリDBとの整合性は?
●表領域が追加されたり、削除される変更は対応できないのか?
※以上の検証要件を踏まえ、スナップショット・スタンバイを検証実施して
みましょう。
(1)データファイル・制御ファイルの物理的な障害が破損した場合は、
フラッシュバック機能は未対応
(2)制御ファイルの再作成、リストアされた制御ファイルを元に戻す場合は
フラッシュバックの機能は未対応
(3)DROPされた表領域の場合はフラッシュバック機能は未対応
(4)alter database datafile ・・resizeにより小さくなった
データファイルを戻す場合はフラッシュバック機能は未対応
3.検証開始
【検証シナリオ結果】
[シナリオ1](データ整合性の検証)
データを追加した場合はプライマリDBと整合性は保てるか?
●表領域が変更されない場合
1)INSERT、DELETEの実行
2)この状態でスナップショット・スタンバイをキャンセルして、スタンバ
イDBを読み取り専用でOPENした場合。スナップショット・スタンバイ
中に作成した表は存在するかどうか?
[検証結果]
1)フィジカル・スタンバイからスナップショット・スタンバイに変更
(1)
SQL> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE ---------------- ---------- PHYSICAL STANDBY MOUNTED
(2)
⇒管理リカバリモードが開始されている場合はをキャンセル
SQL> alter database recover managed standby database cancel;
⇒フィジカルス・タンバイからスナップショット・スタンバイへ変更
SQL> alter database convert to snapshot standby;
Database altered.
[/sql]
(このときにアラートログには・・)————————————
⇒ここでリストアポイントを決めているようです alter database convert to snapshot standby Created guaranteed restore point SNAPSHOT_STANDBY_REQUIRED_04/27/2008 RESETLOGS after incomplete recovery UNTIL CHANGE 1524862 Resetting resetlogs activation ID 147567387 (0x8cbb31b) Online log /app/ora11106/oradata/ora111/redo01.log: Thread 1 Group 1 Online log /app/ora11106/oradata/ora111/redo02.log: Thread 1 Group 2 Online log /app/ora11106/oradata/ora111/redo03.log: Thread 1 Group 3 ⇒スナップショット・スタンバイの開始はここのポイント Standby became primary SCN: 1524860 Sun Apr 27 18:17:56 2008 Setting recovery target incarnation to 5 Converting standby mount to primary mount. ACTIVATE STANDBY: Complete - Database mounted as primary (ora111) ALTER DATABASE CONVERT TO SNAPSHOT STANDBY: Complete (ora111) Completed: alter database convert to snapshot standby --------------------------------------------------------------------
(3)
SQL> shutdown immediate ORA-01507: database not mounted ORACLE instance shut down.
※スタンバイDBはmountの状態だったのでora-1507は表示される
(4)
⇒書き込み/読み込みをするためOPENモードで起動
SQL> startup ORACLE instance started.
(5)
⇒データベースのロールがスナップショット・スタンバイに変更されている
SQL> select database_role,open_mode from v$database; DATABASE_ROLE OPEN_MODE ---------------- ---------- SNAPSHOT STANDBY READ WRITE
2)スナップショット・スタンバイで表の作成、INSERT、DELETEの実行
(1)
SQL> startup ORACLE instance started. (中略) Database mounted. Database opened.
(2)
SQL> select EMPNO,ENAME from emp; EMPNO ENAME ---------- ---------- 7369 SMITH 7499 ALLEN (中略) 7934 MILLER
(3)
⇒テストデータとしてEMPNO=9980,ENAME=MIKANのデータ挿入
SQL> INSERT INTO emp VALUES (9980,'MIKAN','SALESMAN',7698,'22-FEB- 07',1250,500,30); 1 row created.
(4)
SQL> select EMPNO,ENAME from emp;
EMPNO ENAME
———- ———-
7369 SMITH
7499 ALLEN
(中略)
7934 MILLER
9980 MIKAN ⇒テストデータが追加されている
[/sql]
3)スナップショット・スタンバイからフィジカル・スタンバイに変更
(1)
SQL> startup mount ORACLE instance started. (中略) Database mounted.
(2)
SQL> alter database convert to snapshot standby;
Database altered.
[/sql]
(3)管理リカバリモードを開始
SQL> alter database recover managed standby database disconnect from session ;
または
SQL> alter database recover managed standby database using current logfile;
上記のSQLで管理リカバリモードを開始
4)スタンバイDBをOPENで起動して、読み取り専用でデータ確認。
フィジカルスタンバイの内容が、スナップ・スタンバイのときに作成し
たユーザ、表についてなんら問題ないことを確認。
(1)
SQL> startup ORACLE instance started. (中略) Database mounted. Database opened.
(2)
SQL> select EMPNO,ENAME from emp; EMPNO ENAME ---------- ---------- 7369 SMITH 7499 ALLEN (中略) 7934 MILLER
5)プライマリDBの変更データがフィジカル・スタンバイDBとしデータ同期
が取れているのか確認
(プライマリDB) |(スタンバイDB) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ※スナップショット・スタンバイ | ※フィジカル・スタンバイに変更 | ※emp表の内容 | EMPNO ENAME | ---------- ---------- | 7369 SMITH | 7499 ALLEN | (中略) | 7900 JAMES | 7902 FORD | 7934 MILLER | | ※emp表の内容 | EMPNO ENAME |---------- ---------- | 7369 SMITH | 7499 ALLEN | (中略) | 7900 JAMES | 7902 FORD | 7934 MILLER | (データの同期が取れている状態) | ※emp表の内容 | EMPNO ENAME | ---------- ---------- | 7369 SMITH | (中略) | 7934 MILLER | ⇒テストデータを挿入 | 9999 INSIGHT | ※アーカイブファイル転送 | ※アーカイブファイル受信 | ※アーカイブファイル適用 | ※emp表の内容 | EMPNO ENAME |---------- ---------- | 7369 SMITH | (中略) | 7934 MILLER |⇒変更内容が反映 | 9999 INSIGHT
[シナリオ2](リカバリを伴う整合性の検証)
スナップショット・スタンバイ中の障害対応の方法は?
● スナップショット・スタンバイ中に障害が発生した場合の対処方法は?
[状況]
□プライマリDB⇒障害発生
□スタンバイDB⇒スナップショット・スタンバイで利用中
[動作]
(1)プライマリDBをshutdown abort(仮想障害発生)
(2)スタンバイDBをスナップショット・スタンバイからフィジカル・スタ
ンバイに変更
(3)管理リカバリモードに変更してスナップショット・スタンバイ中に転
送されたアーカイブファイルの内容を適用する
(4)フェイルオーバーの実行
[状態の流れ]
(プライマリDB) |(スタンバイDB) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |※スナップショット・スタンバイで実行 ※アーカイブファイル転送 | | ※通信障害発生 | (shutdown abort) | |※管理リカバリモードに変更 |(スナップショット・スタンバイ中の |アーカイブログファイルの内容を適用) |※フィジカル・スタンバイに変更 |※フェイルオーバーの実行 | |(新プライマリDB) |^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |※アーカイバ スタート | |※初期パラメータ(プライマリDB) | |※データベース オープン
今回はここまで
今回の検証ではスナップショット・スタンバイ機能の確認と、障害時のスナッ
プショット・スタンバイからのフェイルオーバーの対応方法について検証をし
ました。
次回は引き続き、スナップショット・スタンバイでテストを実施する上での制
限事項の検証を行います。
※今回は質問回答の予定でしたが最終回に記載させて頂きます。
ガソリン値上げ前の給油行列に加わり、安いガソリンとお別れ 恵比寿にて