●基本スタンバイ・データベースを構築する<その2 スタンバイサイト>
<スタンバイサイト>
まずはコールドバックアップした、
・データファイル
・REDOログファイル
・アーカイブログファイル
・パスワードファイル
を確認しましょう。
プライマリサイトで格納されていたディレクトリが、
スタンバイサイトでも「完全に」再現されるように
配置します。
スタンバイ用に作成した制御ファイルは、
プライマリでの制御ファイル配置ディレクトリと
同じ場所にでも置いておきましょう。
(異なっていてもかまいませんが)
プライマリで制御ファイルを多重化していた場合、
スタンバイサイトでもコピーして同数と
なるようにしましょう。
次に転送した初期化パラメータファイルです。
制御ファイルの配置ディレクトリ・名前を
変更していなければ特に変える必要は
ありません。
変更している場合は、パラメータファイルを
スタンバイ環境に合わせて修正しましょう。
control_files = (
E:\ORADATA\HOGEDB\CONTROL01.CTL,
E:\ORADATA\HOGEDB\CONTROL02.CTL,
E:\ORADATA\HOGEDB\CONTROL03.CTL
)
oradimコマンドでスタンバイデータベース用の
サービスを作成します。
D:\> oradim -new -sid HOGEDB -startmode manual -srvcstart system
インスタンスが作成されました。
コンピュータの再起動時に、インスタンスのみ開始されて
データベースが自動オープンしないようにします。
他、ORACLE_HOMEやORACLE_SIDの環境変数も
セットしておきましょう。
ではサービスを開始して、インスタンスを開始した後、
スタンバイ・データベースにnomountで接続しましょう。
SQL> conn sys/パスワード as sysdba
アイドル・インスタンスに接続しました。
SQL> startup nomount pfile='転送したパラメータファイルのフルパス'
ORACLEインスタンスが起動しました。
・・・
・・・
最後にスタンバイ・モードでマウントします。
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
データベースが変更されました。
これでスタンバイ環境の準備ができました。
早速プライマリサイトから転送したアーカイブ・ログファイルを
適用してみましょう。
SQL> set autorecovery on
SQL> recover standby database;
SQL Plusに対してautorecovery onを指定すると、
必要なアーカイブ・ログファイルを問い合わせ無しに
自動で適用します。
以後、プライマリサイトで作成されるアーカイブログは
全てスタンバイサイトへ転送し、上記のように
適用する必要があります。
一つでもアーカイブログを消失してしまうと、
スタンバイサイトは意味がなくなってしまいます。
(以降のログが適用できなくなり、データは
古いままとなります)
プライマリサイトでSPFILE運用をしていた場合、
スタンバイサイトでも揃えておいた方がよさそうですね。
SQL> CREATE SPFILE='D:\***\spfile***.ora' FROM PFILE;
サーバー再起動の際は、上記サービスの設定により、
インスタンス:開始 データベース:停止
の状態になります。
SQL> conn sys/パスワード as sysdbaのようにして、スタンバイ・データベースをマウントします。
SQL> startup nomount
SQL> ALTER DATABASE MOUNT STANDBY DATABASE;
スタンバイサイトはずっとマウント状態のまま運用します。
プライマリサイトが障害により使用不可となった場合、
スタンバイサイトをプライマリとして昇格させ、
読み書きができるようにします(アクティブ化)。
SQL> ALTER DATABASE ACTIVATE STANDBY DATABASE;
SQL> shutdown immediate
SQL> startup
一度アクティブにすると、スタンバイには戻せなくなります。
後はクライアントアプリケーション側の接続先を
全て昇格されたサーバーになるように設定すれば
完了です。
事前に手順をキチっと定めておかないと、
いざ障害発生という時に手違い/漏れが出ちゃいそうですね。