RMANバックアップを使用してバックアップ時点に戻す方法

Oracle Master Bronze

ノーアーカイブログモードでは、アーカイブログを使用しないため、バックアップとリカバリの方法は限られています。特にspfile(サーバーパラメータファイル)や制御ファイルのリストアも必要な場合は、追加の手順が必要です。本記事では、ノーアーカイブログモードでRMANを使用して、spfile、制御ファイル、データファイルをバックアップ時点に戻す方法を解説します。

前提条件

  • データベースがノーアーカイブログモードで運用されていること
  • RMANで取得した最新の完全バックアップがあること
  • spfileや制御ファイルがバックアップから復元されることが必要であること

1. RMANに接続して、制御ファイルをリストアする

データベースが停止したら、RMANに接続してリストアプロセスを開始します。まず、制御ファイルをリストアします。

$ rman TARGET /

2.1 データベースを停止し、ノーマウントで起動する

まず、データベースを安全に停止します。データベースの一部またはすべてのファイルをリストアする場合、完全に停止する必要があります。
その後ノーマウントで起動します。

SHUTDOWN IMMEDIATE
STARTUP NOMOUNT

2.2 制御ファイルをリストアする

次に、制御ファイルをリストアします。制御ファイルはデータベースの状態やファイル構成を管理する重要なファイルです。
制御ファイルのリストアができたらマウントに移行します。

RESTORE CONTROLFILE FROM AUTOBACKUP;
ALTER DATABASE MOUNT;

3. データベースファイルをリストアする

制御ファイルがリストアされ、データベースがマウントされた状態になったら、データファイルをリストアします。

RESTORE DATABASE;

4. リカバリは不要

ノーアーカイブログモードでは、アーカイブログが存在しないため、増分バックアップやログの適用は行われません。したがって、リカバリの手順は不要です。

5. データベースをオープンする

最後に、リストアが完了したら、RESETLOGSを使用してデータベースをオープンします。

ALTER DATABASE OPEN RESETLOGS;

RESETLOGSは、オラクルデータベースをバックアップから復旧した後に、データベースを再度使える状態にするためのコマンドです。

リカバリが終わった後にRESETLOGSを実行すると、古いトランザクション履歴(REDOログ)がリセットされ、新しいトランザクションを記録するための新しいREDOログが作られます。

重要な点:
RESETLOGSを実行すると、以前のトランザクション履歴はリカバリできなくなります。
RESETLOGS実行後は、新しいバックアップを必ず取る必要があります。

簡単に言うと、RESETLOGSはデータベースをリカバリした後に「新しいスタート」を切るためのリセットボタンのようなものです。

[oracle@v19single ~]$ rman target /

Recovery Manager: Release 19.0.0.0.0 - Production on 土 10月 19 23:00:55 2024
Version 19.21.0.0.0

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

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

RMAN> SHUTDOWN IMMEDIATE; ★停止

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

RMAN> STARTUP NOMOUNT; ★ノーマウントで起動

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

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

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

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP; ★制御ファイルをリストア

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

チャネルORA_DISK_1: 曜日の自動バックアップを探しています: 20241019
チャネルORA_DISK_1: 自動バックアップが見つかりました: c-2957249400-20241019-00
チャネルORA_DISK_1: 自動バックアップc-2957249400-20241019-00から制御ファイルをリストアしています
チャネルORA_DISK_1: 自動バックアップからの制御ファイルのリストアが完了しました
出力ファイル名=/u01/app/oracle/oradata/V19/control01.ctl
出力ファイル名=/u01/app/oracle/oradata/V19/control02.ctl
restoreを24-10-19で終了しました

RMAN> ALTER DATABASE MOUNT; ★マウントへ移行

チャネル: ORA_DISK_1がリリースされました
文が処理されました

RMAN> RESTORE DATABASE; ★データベースをリストア

restoreを24-10-19で開始しています
チャネル: 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/01380ht7_1_1_1から読取り中です
チャネルORA_DISK_1: ピース・ハンドル=/u01/app/oracle/product/19.0.0/dbhome_1/dbs/01380ht7_1_1_1 タグ=TAG20241019T225431
チャネルORA_DISK_1: バックアップ・ピース1がリストアされました
チャネルORA_DISK_1: リストアが完了しました。経過時間: 00:00:07
restoreを24-10-19で終了しました

RMAN> ALTER DATABASE OPEN RESETLOGS; ★RESETLOGSを指定してオープン

文が処理されました

RMAN> select status from v$instance;

STATUS
------------
OPEN

6. 確認と後処理

データベースが正常にオープンされたかを確認し、spfileや制御ファイル、データファイルが正しくリストアされたことを確認します。また、必要に応じてログや設定ファイルを再確認してください。

まとめ

ノーアーカイブログモードでは、データの保護に制約があるため、完全バックアップを定期的に取得することが重要です。本記事では、spfile、制御ファイル、データファイルを含むリストア手順を紹介しました。これらのファイルが破損や消失した場合でも、適切なバックアップからのリカバリが可能です。定期的なバックアップ戦略を立て、リスクを最小限に抑える運用を行いましょう。

[参考]
バックアップおよびリカバリ・ユーザーズ・ガイド – 14 RMANのデータ修復の概要

コメント

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