Oracleの表領域のポイント・イン・タイム・ベースのリカバリ

12510 ワード

最適化の過程を記録する.1回の誤操作は、他の表空間に影響を与えない場合.時間点に基づく表領域リカバリ(TSPITR)法によるデータリカバリのプロセス.
1.TSPITR回復原理
TSPITRの現在最も便利な方法はRMANによる自動回復である.2つの前提条件で使用されます.1つは、対応するバックアップセットが存在する必要があります.もう1つは、表領域オブジェクトが「self-contain」であることです.つまり、他の表領域には、この表領域オブジェクトに関連するオブジェクトデータが含まれていません.
リカバリの手順と原理は次のとおりです.
  • RMANの3つのオブジェクトのセット:catalog、target、auxiliary.ここでauxiliaryはtargetの様々なバックアップ・リストア要件を支援するためのオペレーティング・データベースです.このライブラリはTSPITRで一時的なデータ復元の役割を果たしている.
  • まずデータ検査を完了し、バックアップセットと表領域の完全性を決定する.
  • 現在時刻はT 1であり、必要に応じてデータをT 0に復元する.RMANを使用してバックアップ・データのセットを抽出し、auxiliaryに復元して新しいインスタンス・データベースを形成します.アーカイブ・ログ・シーケンスを選択的に適用し、auxiliaryをTO時点に復元します.
  • expdpツールを使用してauxiliaryからターゲットテーブル空間をdumpオブジェクトとしてエクスポートします.注意:auxiliaryを復元するのはtargetを100%再構築するのではなく、システム実行表領域とターゲット表領域を選択します.
  • targetデータベースから元の表領域を削除します.impdpツールを使用してdumpファイルをインポートしてtargetデータベースに入ります.
  • 環境をクリーンアップし、作成したauxiliaryデータベースを削除します.

  • 2.シミュレーション環境:2.1データベースのバックアップ
      backup database format '/data/oracle/rman/back_db_%U';

    2.2誤操作シミュレーション
    SQL> alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:Mi:SS";
    
    Session altered.
    
    SQL> select sysdate from dual;
    
    SYSDATE
    -------------------
    2017-04-07 11:14:22
    
    SQL> conn lottu/li0924
    Connected.
    
    SQL> select count(1) from lottu02;
    
      COUNT(1)
    ----------
           999
    
    SQL> truncate table lottu02;                   --   
    
    Table truncated.

    3.模擬回復操作3.1第一回回復過程模擬第一回回復結果は失敗した;リカバリスクリプトは次のとおりです.
    run{
    sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';
    sql 'alter session set NLS_LANGUAGE=American';
    recover tablespace LOTTU until time='2017-04-07 11:14:22' auxiliary destination '/u01/auxiliary';
    }

    上記の手順4でエラーが発生しました.すなわちexpdpツールを使用してauxiliaryからターゲットテーブル空間をdumpオブジェクトとしてエクスポートするプロセスである.エラーメッセージは次のとおりです.
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of recover command at 04/06/2017 16:43:57
    RMAN-06136: ORACLE error from auxiliary database: ORA-01097: cannot shutdown while in a transaction - commit or rollback first
    RMAN-06962: Error received during export of metadata
    RMAN-06960:    EXPDP> ORA-39065: unexpected master process exception in MAINORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","select obj# from oid$ where ...","SQLA","tmp")
    RMAN-06960:    EXPDP> ORA-39097: Data Pump job encountered unexpected error -4031

    エラーメッセージの「EXPDP>ORA-39065:unexpected master process exception in MAINORA-04031:unable to allocate 32 bytes of shared memory」に従って、アシストインスタンスのメモリが不足しています.
    3.2 2回目の回復今回の回復結果は成功した.前回と違うのは;今回は、セカンダリインスタンスのパラメータファイルを追加しました.操作は以下の通りです.
    [oracle@oracle234 auxiliary]$ cat initaux.ora 
    db_name=ORA11G                                  
    db_unique_name=swhw_tspitr_ORA11G
    compatible=11.2.0.0.0
    db_block_size=8192
    db_files=200
    sga_target=1024M
    processes=50

    「db_name=」と「compatible=」は、リカバリ・データベースと一致する必要があります.これは、情報のコピーを最初から復元することができます.リカバリ・スクリプトは次のとおりです.
    run{
    set auxiliary instance parameter file to '/u01/auxiliary/initaux.ora'
    sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"';
    sql 'alter session set NLS_LANGUAGE=American';
    recover tablespace LOTTU until time='2017-04-07 11:14:22' auxiliary destination '/u01/auxiliary';
    } 

    3.3検証結果:
    SQL> select file#,status from v$datafile;
    
         FILE# STATUS
    ---------- -------
         1 SYSTEM
         2 ONLINE
         3 ONLINE
         4 ONLINE
         5 OFFLINE
         6 ONLINE
    
    6 rows selected.
    
    SQL> alter tablespace lottu online;
    
    Tablespace altered.
    
    SQL> conn lottu/li0924
    Connected.
    SQL> select count(1) from lottu02;
    
      COUNT(1)
    ----------
           999

    結果から見ると回復は成功した.
    4.参考文献http://www.cnblogs.com/jyzhao/p/4956220.html