連載
» 2007年04月12日 00時00分 公開

Oracleバックアップ/リカバリ講座(13):ノーアーカイブログモードでのリストア・リカバリ (1/3)

本記事では、Oracleデータベースのバックアップ/リストア/リカバリについて、そのアーキテクチャ、代表的なバックアップ手法、論理/物理バックアップ、RMANといった全般的な内容を解説していく。(編集部)

[荒井智也,株式会社アゲハ]

主な内容

--Page 1--
▼ノーアーカイブログモードで運用している場合のリストア・リカバリ
--Page 2--
▼制御ファイルのバックアップとリカバリ
--Page 3--
▼制御ファイルの障害時におけるリストア・リカバリ方法
▼連載の最後に


 今回は前回「Recovery Managerによるリストア・リカバリの方法」に引き続き、Recovery Manager(以下、RMAN)を使用した、ノーアーカイブログモードでの運用におけるリストア・リカバリ、および制御ファイルのリストア・リカバリについて説明していきます。以降の実行結果については、これまでと同様にLinux環境のOracle 10g Release 2で実行したものになります。

ノーアーカイブログモードで運用している場合のリストア・リカバリ

 ノーアーカイブログモードで運用している場合のリカバリでは、第11回「OSコマンドを使用したリストア・リカバリの方法」と同様に、どのような障害パターンでも一貫性のあるデータベースのバックアップをすべてリストアする必要があります。以降では、障害によって制御ファイル、オンラインREDOログファイル、データファイルがすべて損失した場合のリストア・リカバリ方法について説明します。なお、使用するバックアップは、リスト1のコマンドで順に取得していることを前提とします。

RMAN> backup format '%U.dbf' database;
RMAN> backup format '%U.ctl' current controlfile;
リスト1 RMANを使用した一貫性バックアップの取得
バックアップファイルのフォーマットに「%U」を指定することで、一意の識別子が保証されます。また、バックアップ時にファイル名の指定がない場合には、デフォルトで「%U」を使用したファイル名になります。

 なお、RMANリポジトリの保存先にはターゲット・データベースの制御ファイルを使用しています。それでは、実際にノーアーカイブログモードで運用している場合のリストア・リカバリ方法を見ていきましょう。

1.ターゲット・データベースを復旧可能な状態にする

 リストアを行うためには、ターゲット・データベースをnomountモードで起動し直す必要があります。ターゲット・データベースが起動している場合は、abortオプションを使用してデータベースを強制停止してから、nomountモードで起動します(リスト2)。

SQL> shutdown abort
ORACLEインスタンスがシャットダウンされました。
SQL> startup nomount
ORACLEインスタンスが起動しました。
Total System Global Area  213909504 bytes
Fixed Size                  1260008 bytes
Variable Size             104859160 bytes
Database Buffers          104857600 bytes
Redo Buffers                2932736 bytes
SQL>
リスト2 nomountモードでのデータベース起動

2.制御ファイルとデータファイルのリストア

 RMANを使用してターゲット・データベースに接続し、restore controlfileコマンドで制御ファイルをリストアします。このときFROM句を使用し、明示的にリストアする制御ファイルのフルパスを指定する必要があります。その後、mountモードにすることで制御ファイルがオープンされるため、制御ファイルに含まれるバックアップ情報を基に、restore databaseコマンドでデータファイル全体をリストアします(リスト3)。

oracle@single> rman target / nocatalog
Recovery Manager: Release 10.2.0.2.0 - Production on 日 3月 25 22:12:
44 2007
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
ターゲット・データベースに接続しました(起動していません)。
RMAN> restore controlfile from '/opt/oracle/product/10.2.0/db_1/dbs/
24idhfig_1_1.ctl';
  …… 途中省略 ……
出力ファイル名=/pp/oracle/v10r2/ctl1/control01.ctl
出力ファイル名=/bkup1/oracle/v10r2/ctl2/control02.ctl
出力ファイル名=/bkup2/oracle/v10r2/ctl3/control03.ctl
restoreが完了しました(完了時間: 07-03-25)
RMAN> alter database mount;
データベースがマウントされました。
チャネル: ORA_DISK_1がリリースされました
RMAN> restore database;
  …… 途中省略 ……
restoreが完了しました(完了時間: 07-03-25)
RMAN>
リスト3 制御ファイルとデータファイル全体のリストア

3.ターゲット・データベースをオープンする

 最後に、ターゲット・データベースをresetlogsオプションを使用してオープンします。オプションを指定することで、バックアップしていないオンラインREDOログファイルが作成されます(リスト4)。

RMAN> alter database open resetlogs;
データベースがオープンしました。
RMAN>
リスト4 ターゲット・データベースのオープン

【TOPIC】

一時ファイルの再作成機能について

RMANでは、一時表領域はバックアップから自動的に除外されているため、ローカル管理の一時表領域の復旧に関しては、再作成を手作業で行う必要がありました。Oracle 10g Release2から、ローカル管理の一時表領域は、リカバリ時に自動的に再作成されます。再作成が行われた場合、アラートログにその旨が出力されます(リスト5)。ただし、サイズについては、ファイル作成時(初期サイズ)のものとなるので、その後ファイルサイズが拡張していた場合は、必要に応じて、手動で拡張を行ってください。

Sun Mar  4 10:50:59 2007
Re-creating tempfile /opt/app/oracle/oradata/temp01.dbf
リスト5 一時表領域の自動作成ログ

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。