アーカイブログモードでの完全リカバリ手順

Oracle Master Bronze

はじめに Oracleデータベースがアーカイブログモードで稼働している場合、アーカイブログを使用してデータを完全にリカバリすることが可能です。このモードでは、すべての変更がアーカイブログに記録され、障害が発生した場合にデータベースをバックアップ時点から最新の状態に戻すことができます。本記事では、アーカイブログモードでの完全リカバリ手順について説明します。

1. アーカイブログモードの確認

まず、データベースがアーカイブログモードで動作しているか確認します。

SELECT log_mode FROM v$database;

ARCHIVELOGと表示されればアーカイブログモードです。もしNOARCHIVELOGと表示された場合は、アーカイブログモードに切り替える必要があります。

SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------------------------------
ARCHIVELOG ★アーカイブログモード

アーカイブログモードへの切り替え手順

もし、まだアーカイブログモードでない場合、以下の手順で切り替えます。

  1. データベースをマウント状態にする
    SHUTDOWN IMMEDIATE
    STARTUP MOUNT
  2. アーカイブログモードに変更
    ALTER DATABASE ARCHIVELOG;
  3. データベースを開く
    ALTER DATABASE OPEN;
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup mount
ORACLEインスタンスが起動しました。

Total System Global Area 1543500120 bytes
Fixed Size 8925528 bytes
Variable Size 889192448 bytes
Database Buffers 637534208 bytes
Redo Buffers 7847936 bytes
データベースがマウントされました。
SQL> alter database archivelog; ★アーカイブログモードへ変更

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

SQL> alter database open;

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

SQL> SELECT log_mode FROM v$database;

LOG_MODE
------------------------------------
ARCHIVELOG ★アーカイブログモード

2. 完全リカバリの準備

データベース障害が発生した場合、リカバリを行うためには次のような準備が必要です。
※完全リカバリを行う場合はバックアップと、必要なアーカイブログファイルが揃っている必要があります。

  1. RMANの起動 RMAN(Recovery Manager)を使用して完全リカバリを行います。
    rman target /
  2. データベースを停止する
    何らかの障害が発生した場合、まずデータベースを停止します。
    SHUTDOWN IMMEDIATE
    停止できない場合は、 “SHUTDOWN ABORT” を実行

3. 完全リカバリの実行

データベースの完全リカバリを行うためには、以下の手順に従います。

  1. データベースをマウントする
    データベースをマウント状態にします。
    STARTUP MOUNT
  2. リストア(復元)処理を行う
    まず、最新のバックアップからデータベースをリストアします。
    RESTORE DATABASE;
  3. アーカイブログを適用する
    次に、アーカイブログを使用して最新の状態までデータをリカバリします。
    RECOVER DATABASE;
  4. データベースをオープンする
    完全リカバリが完了したら、データベースをオープンして、通常運用を再開します。
    ALTER DATABASE OPEN;
[oracle@v19single ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on 月 10月 21 23:34:40 2024
Version 19.21.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

ターゲット・データベース: V19 (DBID=2957249400)に接続されました

RMAN> SHUTDOWN ABORT ★停止

リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています
Oracleインスタンスがシャットダウンしました

RMAN> STARTUP MOUNT ★マウントで起動

ターゲット・データベースに接続しました(起動していません)。
Oracleインスタンスが起動しました
データベースがマウントされました。

システム・グローバル領域の合計は、 1543500120バイトです。

Fixed Size 8925528バイト
Variable Size 889192448バイト
Database Buffers 637534208バイト
Redo Buffers 7847936バイト

RMAN> RESTORE DATABASE; ★リストア

restoreを24-10-21で開始しています
チャネル: ORA_DISK_1が割り当てられました
チャネルORA_DISK_1: SID=37 デバイス・タイプ=DISK

チャネルORA_DISK_1: データファイル・バックアップ・セットのリストアを開始しています
チャネルORA_DISK_1: バックアップ・セットからリストアするデータファイルを指定しています
チャネルORA_DISK_1: データファイル00001を/u01/app/oracle/oradata/V19/system01.dbfにリストアしています
チャネルORA_DISK_1: データファイル00003を/u01/app/oracle/oradata/V19/sysaux01.dbfにリストアしています
チャネルORA_DISK_1: データファイル00004を/u01/app/oracle/oradata/V19/undotbs01.dbfにリストアしています
チャネルORA_DISK_1: データファイル00007を/u01/app/oracle/oradata/V19/users01.dbfにリストアしています
チャネルORA_DISK_1: バックアップ・ピース/u01/app/oracle/product/19.0.0/dbhome_1/dbs/01385sut_1_1_1から読取り中です
チャネルORA_DISK_1: ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/01385sut_1_1_1 タグ=TAG20241021T233349
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:07
restoreを24-10-21で終了しました

RMAN> RECOVER DATABASE; ★リカバリ

recoverを24-10-21で開始しています
チャネルORA_DISK_1の使用

メディア・リカバリを開始しています
メディア・リカバリが完了しました。経過時間: 00:00:01

recoverを24-10-21で終了しました

RMAN> ALTER DATABASE OPEN;

文が処理されました

RMAN> select status from v$instance;

STATUS
------------
OPEN ★オープン

4. 完全リカバリの確認

データベースが正常にリカバリされたことを確認するために、アラートログやV$DATABASEビューを確認します。

アラートログの確認

アラートログを確認して、エラーや警告が出ていないか確認します。アラートログは以下の場所にあります。

<diagnostic_dest>/diag/rdbms/<DB名>/<SID>/trace/alert_<SID>.log

diagnostic_dest は以下の SQL で確認できます。

SHOW PARAMETER diagnostic_dest

上記のパスにあるalert_<SID>.logを確認します。

SQL> SHOW PARAMETER diagnostic_dest

NAME TYPE VALUE
-------------------- ----------- --------------------
diagnostic_dest string /u01/app/oracle
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$ cd /u01/app/oracle/diag/rdbms/v19/v19/trace
[oracle@v19single trace]$ tail -n50 alert_v19.log
0 data blocks read, 0 data blocks written, 6829 redo k-bytes read
Endian type of dictionary set to little
2024-10-21T23:37:35.375347+09:00
Thread 1 advanced to log sequence 16 (thread open)
Redo log for group 1, sequence 16 is not located on DAX storage
Thread 1 opened at log sequence 16
Current log# 1 seq# 16 mem# 0: /u01/app/oracle/oradata/V19/redo01.log
Successful open of redo thread 1
2024-10-21T23:37:35.381737+09:00
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Stopping change tracking
2024-10-21T23:37:35.489765+09:00
ARC0 (PID:4609): Archived Log entry 4 added for T-1.S-15 ID 0xb0438d78 LAD:1
2024-10-21T23:37:35.523749+09:00
Undo initialization recovery: Parallel FPTR failed: start:1855202 end:1855207 diff:5 ms (0.0 seconds)
Undo initialization recovery: err:0 start: 1855202 end: 1855217 diff: 15 ms (0.0 seconds)
[4582] Successfully onlined Undo Tablespace 2.
Undo initialization online undo segments: err:0 start: 1855217 end: 1855233 diff: 16 ms (0.0 seconds)
Undo initialization finished serial:0 start:1855202 end:1855237 diff:35 ms (0.0 seconds)
Database Characterset is AL32UTF8
No Resource Manager plan active
joxcsys_required_dirobj_exists: directory object exists with required path /u01/app/oracle/product/19.0.0/dbhome_1/javavm/admin/, pid 4582 cid 0
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process AQPC
2024-10-21T23:37:35.977983+09:00
AQPC started with pid=44, OS id=4623
Starting background process CJQ0
2024-10-21T23:37:36.347742+09:00
CJQ0 started with pid=48, OS id=4632
2024-10-21T23:37:36.348501+09:00
Completed: alter DATABASE OPEN
2024-10-21T23:37:47.228899+09:00
QPI: opatch file present, opatch
QPI: qopiprep.bat file present
2024-10-21T23:38:33.470236+09:00
===========================================================
Dumping current patch information
===========================================================
Patch Id: 29585399
Unique Patch Id: 22840393
Patch Description: OCW RELEASE UPDATE 19.3.0.0.0 (29585399)
Patch Apply Time: 2019-04-18T16:21:33+09:00
Patch Type: Release Update

Patch Id: 35643107
Unique Patch Id: 25405995
Patch Description: Database Release Update : 19.21.0.0.231017 (35643107)
Patch Apply Time: 2023-11-12T12:12:22+09:00
Patch Type: Release Update
===========================================================
[oracle@v19single trace]$


※エラーがある場合、基本的に ORA-xxxxx のようなエラーが出力する。

データベースの状態確認

また、以下のSQLを使用して、データベースの状態がOPENであることを確認します。

SELECT status FROM v$instance;

OPENと表示されていれば、データベースが正常にリカバリされて稼働していることを示しています。


まとめ アーカイブログモードでの完全リカバリは、障害発生時に重要なデータを失うことなく復元するために必要なプロセスです。バックアップとアーカイブログを適切に管理し、定期的にリカバリ手順を確認しておくことが、データベース運用の安定性を確保する鍵となります。

[参考]
バックアップおよびリカバリ・リファレンス – 3.7 RESTORE
バックアップおよびリカバリ・リファレンス – 3.1 RECOVER

コメント

タイトルとURLをコピーしました