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

    You are here

    • You are here:
    • Home > Blogs > PDSERVICE's blog > Oracle RMAN: すべてのオンラインREDOログファイルが壊れてしまった場合のリカバリ方法(

Oracle RMAN: すべてのオンラインREDOログファイルが壊れてしまった場合のリカバリ方法(

Oracle RMAN: すべてのオンラインREDOログファイルが壊れてしまった場合のリカバリ方法(

詩檀ソフトはDULに基づき、PRM-DULを開發した。DULすべての機能も含めた上で、グラフィックインタフェースとDataBridge(データがDBLINKのように直に目標データベースに伝送できる。)などの機能も追加した。そして、PRM-DULはJavaで編成したので、あらゆるプラットフォームに適応できる。
PRM-DULの無料バーションダウンロード:
 
 
PRM-DULの無料バーションは一つのテーブルがデフォルトで一万行しか抽出できない。目標データベースがかなり小さいの場合に、無料PRM-DULを使ってください。データベースが一万行を超えて、データの重要性も高い場合に、企業バーションを使ってください。企業バーションPRM-DULは一つのデータベースに対して、Licenseソフトウェア使用許可書を提供する。一つのLicense は$ 999 USD 。そして、PRM-DULは一部無料なLicenseを提供している。
 
もし、壊滅したデータベースがDULを使ったら、まだリカバリできない場合に、リカバリサポートサビースを考えてください:
詩檀ソフトはいまあらゆるOracleデータベースのトラブルに対応できて、主には:データベースが起動できない、誤操作でテーブルがDROPされた、TRUNCATE、DELETE,ASM DiskgroupがMOUNTできないなど。
 
 
[Problem]
カレントを含むオンラインREDOログファイルがすべて壊れてしまいました。
制御ファイル、データファイルは壊れていません。
RMANでバックアップを取得しています。
カタログを使用しています。アーカイブログモードで運用しています。
RMANによる復旧方法について教えてください。

[To reproduce]
カレントを含むオンラインREDOログファイルが壊れた場合、このようなエラーが
発生します。

SVRMGR> alter system switch logfile;
ORA-03113: end-of-file on communication channel

Alertファイル:
Thu Nov 30 17:46:50 2000
Errors in file /export/home/rman/ora816c/admin/tar816c/bdump/tar816c_lgwr_1880.trc:
ORA-00313: open failed for members of log group 3 of thread 1
ORA-00312: online log 3 thread 1: '/export/home/rman/ora816c/oradata/tar816c/redo03.log'
ORA-27037: unable to obtain file status
SVR4 Error: 2: No such file or directory
Additional information: 3
Thu Nov 30 17:46:50 2000
LGWR: terminating instance due to error 313
Instance terminated by LGWR, pid = 1880

ログのswitchなどが不可能になるため、LGWRが異常終了し、インスタンスがダウンします。

[Action]
以下は、データベースのオンラインREDOログファイル(カレントを含む)が
壊れてしまった場合の対処方法です。
制御ファイル、データファイル、アーカイブ済みのログファイルは壊れていないこと
が前提となっています。ご注意下さい。

 1. もしデータベースが稼働中であるのであれば、データベースをshutdownします。
    オンラインREDOログファイルが壊れているので、shutdown normalはできません。
    shutdown abortをします。

 2. データベースをmount状態にします。
    SVRMGR> startup mount

 3. RMANを起動しターゲットデータベースとカタログデータベースに
    接続します。
    % rman target system/manager@target catalog rman/rman@catalog

 4. アーカイブログファイルの状況を確認し、適用できるアーカイブログファイルの
    ログ順序番号を確認します。
    
    Alertファイル:
    Thu Nov 30 17:37:30 2000
    Thread 1 advanced to log sequence 15
    Current log# 2 seq# 15 mem# 0: /export/home/rman/ora816c/oradata/tar816c/redo02.log
    Thu Nov 30 17:37:30 2000
    ARC0: Beginning to archive log# 1 seq# 14
    ARC0: Completed archiving log# 1 seq# 14
    Thu Nov 30 17:46:50 2000
    Errors in file ....
    
    エラーになる直前でアーカイブしている部分を探しましょう。
    上記の記述より、ログ順序番号 14番まではアーカイブできていることがわかります。
    (カレントのログ順序番号は 15番)

    同様の情報は、インスタンスがmount状態であれば、SVRMGRからでも確認できます。
    SVRMGR> archive log list
    データベース・ログ・モード              :アーカイブ・モード
    自動アーカイブ             使用可能
    アーカイブ先            /export/home/rman/ora816c/arch
    一番古いオンラインログ順序番号     14
    次にアーカイブするログ順序番号   15
    現行のログ順序番号           15
   
 5. RMANでリストアリカバリを行います。
    ログ順序番号 14番まではアーカイブできていることがわかりましたので、
    ログ順序番号 14 までを適用し openします。
    不完全回復となりますので、全データファイルをリストアする必要があります。

    実行コマンド:    
      RMAN> run {
      2> allocate channel ch1 type disk;
      3> set until logseq 15 thread 1;       ==> チェック(1)
      4> restore database;
      5> recover database;
      6> sql 'alter database open resetlogs'; ==> チェック(2)
      7> }

    チェック項目:
    (1) どの時点までリカバリをするかということを指定しています。
        set until logseq 15 thread 1; 
        とすると、ログ順序番号 14番までを適用します。
        注意してください。
    (2) 不完全回復を行っているので、open時には、resetlogsオプションが必須です。

    実行ログの一部:
    RMAN-03022: コンパイル・コマンド: recover

    RMAN-03022: コンパイル・コマンド: recover(1)

    RMAN-03022: コンパイル・コマンド: recover(2)

    RMAN-03022: コンパイル・コマンド: recover(3)
    RMAN-03023: 実行コマンド: recover(3)
    RMAN-08054: メディアのリカバリを開始します。

    RMAN-03022: コンパイル・コマンド: recover(4)
    RMAN-06050: アーカイブログ・スレッド 1、順序 11は、ファイル /export/home/rman/or
    a816c/arch/arch_1_11.arcとしてディスクにあります。
    RMAN-06050: アーカイブログ・スレッド 1、順序 12は、ファイル /export/home/rman/or
    a816c/arch/arch_1_12.arcとしてディスクにあります。
    RMAN-06050: アーカイブログ・スレッド 1、順序 13は、ファイル /export/home/rman/or
    a816c/arch/arch_1_13.arcとしてディスクにあります。
    RMAN-06050: アーカイブログ・スレッド 1、順序 14は、ファイル /export/home/rman/or
    a816c/arch/arch_1_14.arcとしてディスクにあります。
    RMAN-03023: 実行コマンド: recover(4)
    RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_11.arc 
    スレッド=1 順序=11
    RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_12.arc
    スレッド=1 順序=12
    RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_13.arc
    スレッド=1 順序=13
    RMAN-08515: アーカイブログ・ファイル名=/export/home/rman/ora816c/arch/arch_1_14.arc
    スレッド=1 順序=14
    RMAN-08055: メディアのリカバリが完了しました。

    ==> 壊れてしまったオンラインREDOログファイル(順序番号 15番)は適用していません。

 6. データベースをresetlogsオプションをつけてopenしたため、
    リカバリカタログにもそれを通知します。

    RMAN> reset database;

  7. 今後の障害のために、必ずバックアップを取得してください。