咨询微信: dbservice1234 7 x 24 在线支持!

    你在这里

Oracle NOARCHIVELOGモードでの時間ベースのリカバリでORA-1578が発生

Oracle NOARCHIVELOGモードでの時間ベースのリカバリでORA-1578が発生

ORACLEデータベース によくあるエラ の解決策

プロのOracle Databaseの復旧サービスを提供
携帯番号: +86 13764045638 メール:service@parnassusdata.com

 
[質問]
NOARCHIVELOGモードで運用していますが、オンラインREDOログが上書きされる前の
状況であれば、バックアップとオンラインREDOログに存在する情報の範囲で不完全
リカバリが可能ではないかと考えています。

そこで、下記の手順でテストを行いました。

  (1) データベースを正常に停止した状態で、一貫性の取れた全体バックアップを取得

  (2) データベースを起動

  (3) 下記の方法でテーブルの作成

      SQL> create table emp as select * from scott.emp;

  (4) 時間の確認

      SQL> alter session set nls_date_format='yyyy-mm-dd:hh24:mi:ss';
      SQL> select sysdate from dual;

      SYSDATE
      -------------------
      2002-01-18:10:55:09

  (5) 上記(3)で作成したテーブルの削除

  (6) データベースの停止

  (7) 上記(1)で取得したバックアップから、全データファイルをカレントのデータファ
      イルと置き換える
      (制御ファイルとオンラインREDOログ・ファイルは置き換えません)

  (8) データベースをMOUNT状態にする

      SQL> startup mount;

  (9) 時間ベースのリカバリで上記(4)の時間までの不完全リカバリを実行

      SQL> recover database until time '2002-01-18:10:55:09';
      メディア・リカバリが完了しました。

  (10) データベースをresetlogsオプションでOPENする。

      SQL> alter database open resetlogs;
      データベースが変更されました。

ここまでで、データベースの起動まではできましたが、該当のオブジェクトにアクセス
すると、下記のようなエラーが出力されます。

      SQL> select * from emp;

    エラー行: 1: エラーが発生しました。
    ORA-01578: ファイル番号 1,ブロック番号
    25021でOracleデータ・ブロックに障害が発生しました。
    ORA-01110: データ・ファイル 1 :
    /export/home/rman/ora816c/oradata/tar816c/system01.dbf
    ORA-26040: データ・ブロックがNOLOGGINGオプションを使用してロードされました。

    ※ バージョンによっては、ORA-26040は出力されません。

NOARCHIVELOGモードでの不完全リカバリはできないのでしょうか。


[回答]
NOARCHIVELOGモードでは、メディア・リカバリを実行することを前提としておらず、
インスタンス障害時のインスタンス・リカバリ/クラッシュ・リカバリからの復旧が
可能であることを前提としております。

そのため、オペレーションによっては、ARCHIVELOGモードとNOARCHIVELOGモードとで
生成されるREDO情報が異なる場合があります。

例えば、今回の create table <TABLE_NAME> as select ... というオペレーションは、
NOARCHIVELOGモードの場合にはNOLOGGINGのDIRECT LOAD INSERTが実行されます。
そのため、メディア・リカバリに必要なREDO情報が生成されませんので、メディア・
リカバリで回復することはできなくなります。
当然、回復可能なオペレーションもありますが、本来NOARCHIVELOGモードではメディア・
リカバリを前提とはしておりません。

メディア・リカバリを行う可能性がございましたら、必ずARCHIVELOGモードでの運用を
行って下さい。