はじめに Oracleデータベースがアーカイブログモードで稼働している場合、アーカイブログを使用してデータを完全にリカバリすることが可能です。このモードでは、すべての変更がアーカイブログに記録され、障害が発生した場合にデータベースをバックアップ時点から最新の状態に戻すことができます。本記事では、アーカイブログモードでの完全リカバリ手順について説明します。
1. アーカイブログモードの確認
まず、データベースがアーカイブログモードで動作しているか確認します。SELECT log_mode FROM v$database;
ARCHIVELOG
と表示されればアーカイブログモードです。もしNOARCHIVELOG
と表示された場合は、アーカイブログモードに切り替える必要があります。
SQL> SELECT log_mode FROM v$database;
LOG_MODE
------------------------------------
ARCHIVELOG ★アーカイブログモード
アーカイブログモードへの切り替え手順
もし、まだアーカイブログモードでない場合、以下の手順で切り替えます。
- データベースをマウント状態にする
SHUTDOWN IMMEDIATE
STARTUP MOUNT
- アーカイブログモードに変更
ALTER DATABASE ARCHIVELOG;
- データベースを開く
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. 完全リカバリの準備
データベース障害が発生した場合、リカバリを行うためには次のような準備が必要です。
※完全リカバリを行う場合はバックアップと、必要なアーカイブログファイルが揃っている必要があります。
- RMANの起動 RMAN(Recovery Manager)を使用して完全リカバリを行います。
rman target /
- データベースを停止する
何らかの障害が発生した場合、まずデータベースを停止します。SHUTDOWN IMMEDIATE
※停止できない場合は、 “SHUTDOWN ABORT
” を実行。
3. 完全リカバリの実行
データベースの完全リカバリを行うためには、以下の手順に従います。
- データベースをマウントする
データベースをマウント状態にします。STARTUP MOUNT
- リストア(復元)処理を行う
まず、最新のバックアップからデータベースをリストアします。RESTORE DATABASE;
- アーカイブログを適用する
次に、アーカイブログを使用して最新の状態までデータをリカバリします。RECOVER DATABASE;
- データベースをオープンする
完全リカバリが完了したら、データベースをオープンして、通常運用を再開します。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
コメント