web-dev-qa-db-ja.com

ORACLE復元-特定の.bkpファイルを復元する方法

私はOracleを使い始めたばかりで、いくつか問題があります。私のデータベースはNONARCHIVELOGモードです。私は2つのバックアップを作成しました:それらは場所にあります:

/opt/Oracle/flash_recovery_area/CTGINST1/backupset/ol_mf_____20130408.bkp

/opt/Oracle/flash_recovery_area/CTGINST1/backupset/ol_mf_____20130407.bkp

4月7日から2番目のファイルを復元したい。私はいくつかのガイドを読みます: http://orafusion.com/art_rman3.htm

しかし、これら2つ(またはそれ以上)の特定のバックアップファイルを使用して復元コマンドを指定する方法を見つけることができません。このリンクや私が読んだ他のリンクには書かれていません。 [〜#〜] rman [〜#〜]コマンドで使用したい。古いバックアップを復元するコマンドは何ですか?

見つけた

RMAN> restore database;

しかし、どのようにして復元するファイルを知るのでしょうか?また、追加のバックアップをいくつか作成しなかったため(コマンドbackup databaseを実行しただけなので)、常にspfileと制御ファイルを復元する必要がありますか?

ありがとうございました!!

1
Dejan

TL; DR:restore database from tag 'INTERESTING_TAG';のように、データベースを復元するバックアップのタグを指定するだけです


[〜#〜]免責事項[〜#〜]

ここで提供される解決策は、私の経験にのみ基づいており、あなた自身のリスクでそれを使用します。私は、このソリューションの使用によって引き起こされたいかなる損害(データ損失を含む)について責任を負いません。


また、追加のバックアップを作成しなかった(コマンドbackup databaseを実行しただけ)ため、常にspfileと制御ファイルを復元する必要がありますか?

デフォルトでは、RMANは、バックアップが成功した後、およびデータベースの構造が変更されるたびに(たとえば、データファイルの追加)、制御ファイルとspfileを自動的にバックアップするように構成されています。したがって、backup databaseを使用してデータベースが正常にバックアップされるたびに、spfileと制御ファイルが自動的にバックアップされます。

RMANでshow controlfile autobackup;を発行して自動バックアップが有効かどうかを確認し、RMANでconfigure controlfile autobackup on;と言って有効にすることができます。


データベースを復元するバックアップセットへのパスを指定したので、RMANを使用して現在の制御ファイルからパスを取得したものと想定しています。以前の制御ファイルの1つを復元すると、この情報が失われる可能性があるため、この情報と既存のバックアップに関するその他の情報をプレーンテキストファイルに保存しても問題はありません。

[Oracle@oca ~]$ export NLS_DATE_FORMAT='DD-MON-YY HH24:MI:SS'
[Oracle@oca ~]$ rman target=/ log 'list_backup.txt'
RMAN> list backup;
RMAN> exit;

データベース[〜#〜]および[〜#〜]の制御ファイルを復元する必要があります。データファイルは制御ファイルと同期している必要があります。 e。同じシステム変更番号(SCN)が必要です。

すでに述べたように、特定のバックアップからデータベースを復元するには、タグ名を指定するだけです。ユーザーまたはシステムによってバックアップに割り当てられたタグ、バックアップの完了日時、およびRMANでlist backupと示されているバックアップに関するその他の情報を確認できます(この情報はテキストファイルに既に保存されています)。 。これは、サンプルインストールでのlist backupの出力です。

RMAN> list backup;

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ------------------
78      Full    300.26M    DISK        00:01:40     10-APR-13 05:10:32
        BP Key: 78   Status: AVAILABLE  Compressed: YES  Tag: TAG20130410T050852
        Piece Name: /u01/app/Oracle/fast_recovery_area/OCAEXAM/backupset/2013_04_10/o1_mf_nnndf_TAG20130410T050852_8pbc14yv_.bkp
  List of Datafiles in backup set 78
  File LV Type Ckp SCN    Ckp Time           Name
  ---- -- ---- ---------- ------------------ ----
  1       Full 3985848    10-APR-13 04:52:40 /u01/app/Oracle/oradata/ocaexam/system01.dbf
  2       Full 3985848    10-APR-13 04:52:40 /u01/app/Oracle/oradata/ocaexam/sysaux01.dbf
  3       Full 3985848    10-APR-13 04:52:40 /u01/app/Oracle/oradata/ocaexam/undotbs01.dbf
  4       Full 3985848    10-APR-13 04:52:40 /u01/app/Oracle/oradata/ocaexam/users01.dbf
  5       Full 3985848    10-APR-13 04:52:40 /u01/app/Oracle/oradata/ocaexam/example01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ------------------
79      Full    9.39M      DISK        00:00:02     10-APR-13 05:10:39
        BP Key: 79   Status: AVAILABLE  Compressed: NO  Tag: TAG20130410T051037
        Piece Name: /u01/app/Oracle/fast_recovery_area/OCAEXAM/autobackup/2013_04_10/812350360_8pbk.bkp
  SPFILE Included: Modification time: 10-APR-13 04:55:39
  SPFILE db_unique_name: OCAEXAM
  Control File Included: Ckp SCN: 3985848      Ckp time: 10-APR-13 04:52:40

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ------------------
80      Full    300.30M    DISK        00:01:39     10-APR-13 05:18:03
        BP Key: 80   Status: AVAILABLE  Compressed: YES  Tag: DELETE_ME
        Piece Name: /u01/app/Oracle/fast_recovery_area/OCAEXAM/backupset/2013_04_10/o1_mf_nnndf_DELETE_ME_8pbch94j_.bkp
  List of Datafiles in backup set 80
  File LV Type Ckp SCN    Ckp Time           Name
  ---- -- ---- ---------- ------------------ ----
  1       Full 3986589    10-APR-13 05:12:33 /u01/app/Oracle/oradata/ocaexam/system01.dbf
  2       Full 3986589    10-APR-13 05:12:33 /u01/app/Oracle/oradata/ocaexam/sysaux01.dbf
  3       Full 3986589    10-APR-13 05:12:33 /u01/app/Oracle/oradata/ocaexam/undotbs01.dbf
  4       Full 3986589    10-APR-13 05:12:33 /u01/app/Oracle/oradata/ocaexam/users01.dbf
  5       Full 3986589    10-APR-13 05:12:33 /u01/app/Oracle/oradata/ocaexam/example01.dbf

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ ------------------
81      Full    9.39M      DISK        00:00:01     10-APR-13 05:18:11
        BP Key: 81   Status: AVAILABLE  Compressed: NO  Tag: TAG20130410T051810
        Piece Name: /u01/app/Oracle/fast_recovery_area/OCAEXAM/autobackup/2013_04_10/812351553_8pbm.bkp
  SPFILE Included: Modification time: 10-APR-13 05:13:53
  SPFILE db_unique_name: OCAEXAM
  Control File Included: Ckp SCN: 3986589      Ckp time: 10-APR-13 05:12:33

この出力から、最初のバックアップに(自動的に)タグTAG20130410T050852が割り当てられ、制御ファイルとspfile自動バックアップがすぐに続くことがわかります([完了時間]フィールドを確認します)。また、別のデータベースバックアップを実行し、それに手動でタグDELETE_MEを割り当てたことがわかります。もちろん、直後に自動バックアップも続きます。また、すべてのバックアップのファイルには同じSCNがあり、SCNは隣接する自動バックアップの制御ファイルのSCNと一致することに注意してください。

TAG20130410T050852とタグ付けされた他のバックアップよりも古いDELETE_MEとタグ付けされたバックアップからデータベースを復元し、最初に自動バックアップから制御ファイルを復元します。

RMANを使用したバックアップから制御ファイルを復元するには、インスタンスをNOMOUNT状態にする必要があります(この状態では、インスタンス制御ファイルによってspfileのみがアクセスされ、データファイルはアクセスされません)。

RMAN> shutdown immediate;

RMAN> startup nomount;

connected to target database (not started)
Oracle instance started
database mounted

(ただし、abortの代わりにimmediate句を使用することもできます。そうすれば、Oracleはデータベースを順番にシャットダウンする必要がなくなります。とにかく、以前のバックアップからデータベースを復元します。)

自動バックアップから制御ファイルを復元します。

RMAN> restore controlfile from
2> '/u01/app/Oracle/fast_recovery_area/OCAEXAM/autobackup/2013_04_10/812350360_8pbk.bkp';

Starting restore at 10-APR-13 06:01:25
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=63 device type=DISK

channel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02
output file name=/u01/app/Oracle/oradata/ocaexam/control01.ctl
output file name=/u01/app/Oracle/fast_recovery_area/ocaexam/control02.ctl
Finished restore at 10-APR-13 06:01:27

RMANが(list backupを発行したときと同じように)制御ファイルのバックアップレコードを読み取れるようにするには、データベースをMOUNT状態にする必要があります。

RMAN> sql 'alter database mount';

これで、データベースを復元する準備ができました。

RMAN> restore database from tag 'TAG20130410T050852';

最後のステップはデータベースを開くことです:

RMAN> sql 'alter database open resetlogs';

既存のREDOログファイルは以前のデータベースで使用されていたため使用できなくなったため、ここでresetlogs句を指定しました。したがって、復元されたデータベースで使用できるようにリセットする必要があります。

さあ、すばらしいことを検索してください!

2