1.プライマリーDBだけを再起動
プライマリーDBのTIN-PとスタンバイDBのTIN-Sがあります。データガードが利用されています。プライマリーDBだけを再起動することは求められています。
2.手順(★★★!!!待検証!!!★★★)
2-1.スタンバイDBのリカバリ停止(REDO Applyの停止)
プライマリDBの再起動中にスタンバイDBがエラーを出さないように、スタンバイDBのリカバリプロセスを一時的に停止します
-- スタンバイDB(TIN-S)でリカバリを停止
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2-2.プライマリDBの再起動
プライマリDB(TIN-P)を正常に再起動します。
-- プライマリDB(TIN-P)上で
sqlplus / as sysdba
SQL> SHUTDOWN IMMEDIATE;
SQL> STARTUP;
- データベースの起動が完了するまでには「START」、「MOUNT」、「OPEN」の3つのステップが存在します。
- NOMOUNTフェーズ: インスタンスが起動し、初期化パラメータファイル(PFILE/SPFILE)を読み込みますが、制御ファイルはまだ読み込まれません。
- MOUNTフェーズ: 制御ファイルを読み込み、データファイルとREDOログファイルの場所を認識しますが、データファイルはまだオープンされていません。
- OPENフェーズ: データファイルとREDOログファイルをオープンし、データベースが完全に起動します。
STARTUP NOMOUNT
: インスタンスのみを起動(NOMOUNT)。STARTUP MOUNT
: データベースをマウント状態で起動(NOMOUNT → MOUNT)。STARTUP
: データベースを完全に起動(NOMOUNT → MOUNT → OPEN)。
2-3.プライマリDBの状態確認
プライマリDBが正常に起動し、アーカイブログを生成していることを確認します。
-- プライマリDB(TIN-P)で
SQL> SELECT INSTANCE_NAME, STATUS FROM V$INSTANCE;
-- "OPEN" が期待される結果です
SQL> ARCHIVE LOG LIST;
-- アーカイブログが正しく生成されていることを確認
2-4.スタンバイDBのリカバリ再開(REDO Applyの起動)
プライマリDBが正常に起動した後、スタンバイDBのリカバリプロセスを再開します。
-- スタンバイDB(TIN-S)でREDO Applyを再開
SQL> ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT FROM SESSION;
-- REDOログの適用状況を確認。
SQL> SELECT SEQUENCE#, FIRST_TIME, NEXT_TIME,APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
- APPLIEDのYES/NOについて
- YES: この値は、該当するアーカイブログがスタンバイデータベースに適用されたことを示します。スタンバイデータベースがプライマリデータベースから受信したアーカイブログを正常に適用し、データの同期が取れている状態です。
- NO: この値は、該当するアーカイブログがまだスタンバイデータベースに適用されていないことを示します。スタンバイデータベースがこのアーカイブログを受信したが、まだリカバリプロセスで適用していないか、受信自体が完了していない状態です。
2-5.スタンバイDBの状態確認
スタンバイDBがプライマリDBからのアーカイブログを正常に受信し、適用していることを確認します。
-- スタンバイDB(TIN-S)で
SQL> SELECT PROCESS, STATUS, THREAD#, SEQUENCE# FROM V$MANAGED_STANDBY;
-- MRP(Managed Recovery Process)が "APPLYING_LOG" などの状態になっていることを確認(REDO Applyが動作していること)
2-6.全体の状態確認
最後に、データガード構成全体が正常に動作していることを確認します。プライマリDBとスタンバイDBの両方で以下のクエリを実行して、アーカイブログが正しく同期されていることを確認します。
-- プライマリDBで
SQL> SELECT THREAD#, SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
-- スタンバイDBで
SQL> SELECT THREAD#, SEQUENCE#, APPLIED FROM V$ARCHIVED_LOG ORDER BY SEQUENCE#;
これらの手順を慎重に実行することで、プライマリDBの再起動がデータガード構成に影響を与えずに行えるはずです。もし何らかの問題が発生した場合は、エラーメッセージやログファイルの内容を確認して対応してください。
コメント欄