ORACLE MASTER資格の上級に位置付けられる「ORACLE MASTER Gold Oracle Database 11g」。本連載では、Gold試験の頻出ポイントを解説する。確認問題付き。
前回までは、Recovery Manager(RMAN)を使ってバックアップやアーカイブログを取得する方法とそれぞれを管理する方法を解説しました。今回は、リカバリ手順の解説に入ります。
データファイルが壊れたときにはまず、完全リカバリを実行します。バックアップ、アーカイブログ、REDOログファイルを使うことで、障害が発生した時点の状態に戻せます。コミットデータが失われることはありません。
RMANで完全リカバリを実行するには、以下のようにコマンドを実行してください。
RMAN> sql "ALTER TABLESPACE 表領域名 offline immediate"; --表領域はオフラインの必要がある RMANからSQLコマンドを記述することも可能 RMAN> RESTORE TABLESPACE 表領域名; -- バックアップからのリストア。データファイル単位で可能 RMAN> RECOVER TABLESPACE 表領域名; -- バックアップからのログを使いリカバリ RMAN> sql "ALTER TABLESPACE 表領域名 online"; --表領域のオンライン
SYSTEMまたはUNDO表領域のデータを持っているデータファイルが壊れていると、インスタンスがクラッシュします。マウントモードでRESTOREコマンドとRECOVERコマンドを実行してください。
完全リカバリは障害が発生した時点の状態まで復旧することを指します。一方、過去の特定の時間の状態に戻す事全体を「Point In Time Recovery(PITR)」と呼びます。
「PITR」の方法はいくつかありますが、今回はバックアップとアーカイブログを使った「不完全リカバリ」について解説します。
不完全リカバリは、大体の場合、以下の3通りの場面で実行するものです。1つめは、誤ったDML文、DDL文を実行してしまったために、データを失ってしまったとき。2つめは、完全リカバリを実行してみたら、アーカイブログが壊れていて、リカバリに失敗してしまったとき。3つめは、アクティブもしくはカレントのREDOログファイルが全滅しているときです。REDOログファイルの障害については次回解説します。
どの場合も、すべてのアーカイブログを適用せずに、途中まで適用することで、特定の時点の状態にデータベースを復旧できるのです。
不完全リカバリではすべてのデータファイルを復旧する必要があるという点に注意してください。特定のファイルだけを過去の状態に戻すことはできないということです。特定のファイルだけを元に戻すということを許すと、例えば親子関係がある表の親データが消え、親子関係に矛盾が生じてしまうということがありえます。そのため、こういった作業はできないのです。以上の理由から、不完全リカバリでも、すべてのファイルを復旧対象にする必要があるのです。
ちなみに、不完全という不安を感じる用語を使っていますが、「完全リカバリ」はログをすべて適用するため「完全」、「不完全リカバリは」ログを途中まで適用するため「不完全」という呼び名になっているだけです。
Copyright © ITmedia, Inc. All Rights Reserved.