Email: service@parnassusdata.com 7 x 24 online support!

    You are here

    • You are here:
    • Home > Blogs > PDSERVICE's blog > [ASM] ディスクグループ破損時にRMANを用いて復旧(リストア/リカバリ)する方法(KROWN:105100)

[ASM] ディスクグループ破損時にRMANを用いて復旧(リストア/リカバリ)する方法(KROWN:105100)

[ASM] ディスクグループ破損時にRMANを用いて復旧(リストア/リカバリ)する方法(KROWN:105100)

[概要]
本文書では ASM 環境において何らかの要因(H/W障害など)でデータベースの構成
ファイル(*)を含むディスクグループが破損し、データベースの復旧が必要な場
合にRMAN(Recovery Manager)を使用して環境を復旧(リストア/リカバリ)する方
法について説明します。

* データベースの構成ファイル:
  制御ファイル、REDOログファイル、データファイル


[対象リリース] 
Oracle Database 10g Release 1 (10.1.0)
Oracle Database 10g Release 2 (10.2.0)


[対象プラットフォーム]
すべてのプラットフォーム 


[手順概要]
ASM 環境においてディスクグループが破損した場合、ディスクグループを再作成
し、その後、RMANを用いて取得済みのバックアップからファイルをリストアし、
リカバリを行なうことで復旧します。
手順は以下のようになります。

 01. DBインスタンスの shutdown
 02. 破損したディスクグループの削除
 03. ディスクグループ、および、ディレクトリの作成
 04. バックアップからリストア
 05. リカバリの実行
 06. バックアップの取得

なお、以下の文書のとおり、RMANを使用する以外にストレージの機能等を用いた
方法でバックアップを取得することも可能です。ストレージの機能等を用いて
取得したバックアップをリストアする際には、ディスクグループの再作成は必要
ありません。ただし、バックアップ取得時と同じ状態に復元する必要があります。
  Document 1729279.1(KROWN:92739) ASM ファイルを含むデータベースのバックアップ方法


[手順詳細]

01. DBインスタンスの shutdown
=================================
 SQL*Plusを使用し、DBインスタンスを shutdown します。

   例:
   % setenv ORACLE_SID mydb1
   % sqlplus "/ as sysdba"
   SQL> shutdown immediate

 * RAC環境の場合、該当データベースの全インスタンスをshutdownしてください。
 * 障害の状況によっては、abortオプションが必要な可能性もあります。


02. 破損したディスクグループの削除
=================================
 ASMインスタンスに接続し、破損したディスクグループを削除します。
 ディスクグループの削除は DROP DISKGROUP コマンドで実行します。

   例:
   % setenv ORACLE_SID +ASM
   % sqlplus "/ as sysdba"
   SQL> drop diskgroup dg01 including contents;

 INCLUDING CONTENTS を記述した場合には、ディスクグループ内にファイルが
 含まれている場合にもそのファイルと共にディスクグループを削除します。
 記述しない場合、ディスクグループ内にファイルが含まれている状態では削除
 を行うことができません。

 * 上記コマンドはディスクグループが正常にマウントできる状態の場合のみ
   使用できるコマンドのため、障害によりディスクグループがマウントできない
   ケースでは、これらのコマンドによる削除は実行できません。

   ディスクグループのマウントができない場合はディスクグループを構成して
   いる各DISKを初期化することで対応します。
   (DISK自体を初期化することでディスクグループの情報も消去されます。)

   例:
   -- Unixプラットフォームの場合:
   % dd if=/dev/zero of=/dev/rdsk/asm_dg01 bs=1024 count=XXX
   countにはデバイスサイズにあわせた値を設定してください

   -- Windowsプラットフォームの場合:
   [コントロールパネル] -> [管理ツール] -> [コンピュータの管理] を起動
   -> ディスクの管理 より該当パーティションを削除し、再度パーティション
   を作成する。

   あるいは、例えば、該当パーティションを含むディスクを diskpart.exe の
   CLEAN コマンドを用いて初期化します。

   * diskpart については Microsoftのユーティリティになります。
     ファイルに関しましては以下の場所より入手可能です。
     http://www.microsoft.com/windows2000/techinfo/reskit/tools/new/diskpart-o.asp
   * CLEAN ALL を実行すると、ディスク上の全パーティションの情報が消える
     のでご注意ください。
  
 RAC環境の場合には、障害の発生状況によっては、一部ノードの ASMインスタンスで
 該当ディスクグループがマウントされたままとなっている可能性があります。
 この手順を行った後には、障害発生ディスクグループが、すべてのノードのASMインス
 タンスで参照できない状態(V$ASM_DISKGROUPでリストされない状態)としてください。
 確認の上、該当ディスクグループがマウントされたままになっているASMインスタンス
 があった場合には dismountしてください。
   例:
   SQL> alter diskgroup dg01 dismount;


03. ディスクグループ、および、ディレクトリの作成
==============================================
 ASMインスタンスに接続し、ディスクグループを作成します。
 ディスクグループの作成は CREATE DISKGROUP コマンドで実行します。
   例:
   % setenv ORACLE_SID +ASM
   % sqlplus "/ as sysdba"
   SQL> create diskgroup dg01 external redundancy 
     2   disk '/dev/rdsk/asm_dg01' name disk1 size 800M;

 * ディスクグループ再作成時には以下のKROWNの障害にご注意ください。
   Document 1730749.1(KROWN:98490) [ASM] DISKGROUPを再作成しリストアを行うとファイルが正常に
               リストアされない可能性がある

 該当ディスクグループにディレクトリを作成していた場合には、ディレクトリも
 作成します。
   例:
   SQL> alter diskgroup dg01 add directory '+dg01/dict1';
   

04. バックアップからリストア
=================================
 破損したディスクグループに含まれるデータベース構成ファイルに応じて
 ファイルをRMANを使用してバックアップからリストアします。

 - 制御ファイルが全損した場合:
   制御ファイルをリストアします。
   例:
    RMAN> startup nomount
    RMAN> restore controlfile;
    RMAN> alter database mount
   
 - データファイルが破損した場合:
   破損したデータファイルをリストアします。

   例1: 一部のデータファイルをリストアする場合
    RMAN> startup mount
    RMAN> restore datafile 1;
   
   例2: 全データファイルをリストアする場合
    RMAN> startup mount
    RMAN> restore database;

 - カレントのオンラインREDOログファイルが全損した場合:
   すべてのデータファイルをリストアし、カレントのオンラインREDOログファイルの
   直前までの不完全リカバリを行います。
   そのためリストアについては、上記の例2を行います。

 - 一時ファイルが破損した場合
   RMANによるリストアは必要ありません。

 詳細な手順については [参照情報] にある KROWNをご覧下さい。


05. リカバリの実行
=================================
 必要に応じてデータベースのリカバリを実行後、データベースをオープンします。
 カレントのオンラインREDOログファイルが障害を受けている場合には、
 不完全リカバリを実行する必要があります。不完全リカバリを実施した場合は
 オープン時に RESETLOGS オプションを指定します。
 制御ファイルをリストアした場合や一時ファイルが破損している場合には、
 データベースをオープン後、一時ファイルについてもリカバリを行います。

   例1: 完全リカバリを実行した場合
    RMAN> recover database;
    RMAN> alter database open;

   例2: 不完全リカバリをRMANから実行した場合
    RMAN> recover database until sequence X thread Y ;
    RMAN> alter database open resetlogs;

   例3: 一時ファイルのリカバリ
    SQL> alter tablespace temp add tempfile '+dg01' size 100m;

 詳細な手順については [参照情報] にある KROWNをご覧下さい。


06. リカバリの実行
=================================
データベースがオープンできたら、全体バックアップを取得します。