rmanリカバリスキームとoracle異機種リカバリ

6699 ワード

注意:1リカバリの前提はバックアップが完了していることです②完全リカバリデータベースはデータベースに障害が発生していること、リカバリ時にコミットされたものを失っていないリカバリ不完全リカバリデータベースはデータベースに障害が発生していること、リカバリ時にデータの一部を失ったリカバリ③linuxで環境変数を設定する必要があること、つまりリカバリが必要なoracleデータベースのインスタンス名:export ORACLE_SID=orcl④resetlogsでデータベースを起動する場合は、データベースをフルバックアップする必要があります
一、リカバリ方案1、データファイルを紛失し、完全なリカバリを行う
 
  
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database;
RMAn>sql 'alter database open';

2、REDOログファイルを紛失し、不完全な回復を行う
 
  
SQL>startup mount;
SQL>recover database until cancel;
SQL>alter database open resetlogs;

3、データファイルの紛失、制御ファイルとREDOログファイルの不完全な回復
 
  
RMAN>startup nomount;
RMAN>restore controfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;

4、初期化ファイル、制御ファイルデータファイルとREDOログファイルを紛失し、不完全な回復を行う
 
  
SQL>startup nomount pfile='D:\oracle\product\10.2.0\db_1\admin\orcl\pfile\init.ora.27201414210'; #pfile
RMAN>restore spfile from autobackup;
SQL>shutdown immediate;
SQL>startup nomount;
RMAN>restore controlfile from autobackup;
RMAN>alter database mount;
RMAN>restore database;
SQL>recover database using backup controlfile until cancel;
SQL>alter database open resetlogs;

5.ポイント・ベースのリカバリ(共通)
 
  
RMAN>startup mount;
RMAN>restore database;
RMAN>sql 'alter session set nls_date_format="yyyymmdd hh24:mi:ss"'; #
RMAN>recover database until time '20140312 17:07:00'; # 2014-03-12 17:07:00
RMAN>sql 'alter database open resetlogs';

6.SCNベースのリカバリ
 
  
RMAN>startup mount;
RMAN>restore database;
RMAN>recover database until scn  963915;
RMAN>sql 'alter database open resetlogs';

①現在のSCN番号を問い合わせる:
 
  
SQL>select dbms_flashback.get_system_change_number from dual;

②SCN号による照会時間:
 
  
SQL>select to_char(scn_to_timestamp(963959),'yyyymmdd hh24:mi:si') from dual;

③時間に応じてSCN番号を問い合わせる:
 
  
SQL>select timestamp_to_scn(to_date('20140309 17:55:10','yyyymmdd hh24:mi:ss')) from dual;

④一定期間のSCN番号を問い合わせる:
 
  
SQL>select * from (select time_dp,scn from smon_scn_time order by time_dp desc) where  rownum<20;

7、incarnationを深く理解する:resetlogsを越えてデータ回復を行うことができる
1 resetlogsのたびにincarnation+1を使用します.以前のincarnationのscnに復元するには、前のincarnationに復元する必要があります.
②Incarnation 11 and 12はscn 900,000のspotを含んでいるので、incarnation 12がuntil scnを行うと、現在のincarationのscnに復元される.しかし、私たちのニーズに応じて、incarnation 11のscn 900000が必要です.だから、incarnationをincarnation 11に切り替えてこそ、私たちが必要とするデータを取り戻すことができます.RMAN>reset database to incarnation 11;
8、recover databaseの4つの文の違い①SQL>recover database using backup controlfile現在の制御ファイルを紛失した場合、冷たいバックアップの制御ファイルで回復する場合、controlfileのscnを回復の終点としないようにoracleに伝えるために使用します.②SQL>recover database until cancel current/active redoを紛失した場合、手動で終点を指定します.③SQL>recover database using backup controlfile until cancel;現在のcontrolfileが失われ、current/active redoが失われた場合、アーカイブログが自動的に適用され、最大のリカバリが可能になります.④SQL>recover database until cancel using backup controlfile;現在のcontrolfileが失われ、current/active redoが失われた場合、アーカイブログが適用されていないため、古いredoのscnをリカバリの終点とします.データはすべて失われます.
recover database using backup controlfileを理解するには、recover databaseを理解します.通常のrecover databaseまたはrecover tablespace、recover datafileの場合、Oracleは現在のcontrolfileに記録されているSCNに準じてarchive logとredo logのredo entryを利用して、関連するdatafileのblockを「現在のcontrolfileに記録されているSCN」に復元します.場合によっては、Oracleは現在のcontrolfileに記録されているSCNよりも後ろの場所にデータを復元する必要があります(たとえば、control fileはbackup controlfile、またはcontrolfileはtrace createに基づいています).この場合、using backup controlfileを使用する必要があります.リカバリは、「現在のcontrolfileに記録されているSCN」に制限されません.この場合の制限は、あなたの文(until time,until scn)、または使用可能なarchive log(until cancel)から来ます.制御ファイルが失われた場合、restoreがバックアップした制御ファイルの後、using backup controlfileオプションを使用する必要があります.一方、until cancelは不完全なリカバリ、すなわちcurrent/active redoが失われたり、restoreデータベースの後にアーカイブファイルが欠落したりすると終了します.結論:古いデータベースバックアップがあり、アーカイブログとオンラインログがすべて保存されている場合、recover databaseまたはrecover database using backup controlfileを使用すると、データが失われないバックアップデータファイルrestoreが存在した後、アーカイブログまたはオンラインログ(active、current)が失われた場合、recover database using backup controlfile until cancelを使用すると、最大リカバリが可能になります.
二、RMAN異機種リカバリ(ソース・データベースとターゲット・データベースのインスタンス名が一致すること)
1、ソースデータベースのバックアップ
 
  
RMAN>backup database plus archivelog;
RMAN>backup current controlfile;

2、ソースデータベースのパラメータファイルを生成し、修正してからターゲットデータベースに転送する
3、Windowsプラットフォームの下で回復する
 
  
C:\>oradim -new -sid orcl  # orcl
C:\>set ORACLE_SID=orcl
C:\>sqlplus "/as sysdba";
SQL>startup nomount pfile='C:\INITorcl.ORA';
SQL> create spfile from pfile='C:\INITorcl.ORA';
SQL> shutdown immediate;
SQL>exit;
C:\>set ORACLE_SID=orcl
C:\>rman target/
RMAN>startup nomount;
RMAN>restore controlfile to ' ' from ' ';
RMAN>alter database mount;
RMAN>catalog start with ' '; #
RMAN>crosscheck backup;
RMAN>report schema;

下のスクリプトを作成して実行
 
  
run
{
set newname for datafile 1
  to 'C:\oracle\product\10.2.0\oradata\orcl\SYSTEM.DBF';  # SYSTEM.DBF
   set newname for datafile 2
   to 'C:\oracle\product\10.2.0\oradata\orcl\UNDOTBS1.DBF';
   set newname for datafile 3
   to 'C:\oracle\product\10.2.0\oradata\orcl\SYSAUX.DBF';
   set newname for datafile 4
   to 'C:\oracle\product\10.2.0\oradata\orcl\USERS.DBF';
   set newname for datafile 5
   to 'C:\oracle\product\10.2.0\oradata\orcl\BANK_DATA02.DBF';
restore database;
switch datafile all;
}
RMAN>recover database;
RMAN>sql 'alter database open resetlogs';

リカバリ成功