RMAN 恢复

来源:互联网 发布:西餐收银软件 编辑:程序博客网 时间:2024/04/29 06:54

可以在mount的情况;

alter database create datafile 8----前提在控制文件中已经有datafile相关记录。

然后alter database rename file '+DATA/xxxxxxxxxxxxxx' to '+DATA/yyyyyyyyyyyyyyyyyy' 



alter database backup control file to trace可以产生一个控制文件的文本备份。用于控制文件恢复

可以去alert文件里查看刚才生成的trace file文件名。


实验

先备份整个数据加控制文件spfile


backup database  

RMAN> list backup;using target database control file instead of recovery catalogList of Backup Sets===================BS Key  Type LV Size       Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------9       Full    1.49G      DISK        00:00:27     18-MAR-13              BP Key: 9   Status: AVAILABLE  Compressed: NO  Tag: TAG20130318T052627        Piece Name: +DATA/orcl/backupset/2013_03_18/nnndf0_tag20130318t052627_0.710.810365187  List of Datafiles in backup set 9  File LV Type Ckp SCN    Ckp Time  Name  ---- -- ---- ---------- --------- ----  1       Full 25341971   18-MAR-13 +DATA/orcl/datafile/system.256.793082125  2       Full 25341971   18-MAR-13 +DATA/orcl/datafile/sysaux.257.793082125  3       Full 25341971   18-MAR-13 +DATA/orcl/datafile/undotbs1.258.793082127  4       Full 25341971   18-MAR-13 +DATA/orcl/datafile/users.259.793082127  5       Full 25341971   18-MAR-13 +DATA/orcl/datafile/undotbs2.267.793082251BS Key  Type LV Size       Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ------------ ---------------10      Full    18.17M     DISK        00:00:01     18-MAR-13              BP Key: 10   Status: AVAILABLE  Compressed: NO  Tag: TAG20130318T052702        Piece Name: +DATA/orcl/autobackup/2013_03_18/s_810365222.706.810365223  SPFILE Included: Modification time: 17-MAR-13  SPFILE db_unique_name: ORCL  Control File Included: Ckp SCN: 25342056     Ckp time: 18-MAR-13



删除所有的数据文件,控制文件,联机日志文件;


orcl1>select name from v$controlfile  2  union   3  select name from v$datafile  4  union  5  select member name from v$logfile;NAME----------------------------------------------------------------------+DATA/orcl/controlfile/current.260.793082219+DATA/orcl/controlfile/current.261.793082219+DATA/orcl/datafile/sysaux.257.793082125+DATA/orcl/datafile/system.256.793082125+DATA/orcl/datafile/undotbs1.258.793082127+DATA/orcl/datafile/undotbs2.267.793082251+DATA/orcl/datafile/users.259.793082127+DATA/orcl/onlinelog/group_1.262.793082223+DATA/orcl/onlinelog/group_1.263.793082223+DATA/orcl/onlinelog/group_2.264.793082223+DATA/orcl/onlinelog/group_2.265.793082225NAME----------------------------------------------------------------------+DATA/orcl/onlinelog/group_3.268.793082307+DATA/orcl/onlinelog/group_3.269.793082307+DATA/orcl/onlinelog/group_4.270.793082309+DATA/orcl/onlinelog/group_4.271.79308230915 rows selected.

.

关闭两个实例

shutdown abort; --所有实例


进行删除操作:--删除上面列出的所有文件


恢复步骤:


先从备份中恢复控制文件

sal>startup nomount;

[oracle@juliaz2 ~]$ rman target /Recovery Manager: Release 11.2.0.1.0 - Production on Mon Mar 18 06:50:11 2013Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.connected to target database: ORCL (not mounted)RMAN> restore controlfile from '+DATA/orcl/autobackup/2013_03_18/s_810365222.706.810365223';Starting restore at 18-MAR-13using target database control file instead of recovery catalogallocated channel: ORA_DISK_1channel ORA_DISK_1: SID=134 instance=orcl1 device type=DISKchannel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:01output file name=+DATA/orcl/controlfile/current.267.810370223output file name=+DATA/orcl/controlfile/current.258.810370223Finished restore at 18-MAR-13


rman>restore controlfile form '控制文件备份所在路径'


控制文件恢复成功后


rman > sql 'alter database mount' ;

RMAN> sql 'alter database mount';sql statement: alter database mountreleased channel: ORA_DISK_1RMAN> 

rman>restore database ;

RMAN> restore database ;Starting restore at 18-MAR-13Starting implicit crosscheck backup at 18-MAR-13allocated channel: ORA_DISK_1Crosschecked 3 objectsFinished implicit crosscheck backup at 18-MAR-13Starting implicit crosscheck copy at 18-MAR-13using channel ORA_DISK_1Crosschecked 16 objectsFinished implicit crosscheck copy at 18-MAR-13searching for all files in the recovery areacataloging files...cataloging doneList of Cataloged Files=======================File Name: +dg1/ORCL/ARCHIVELOG/2013_03_18/thread_1_seq_426.257.810368515File Name: +dg1/ORCL/ARCHIVELOG/2013_03_18/thread_1_seq_427.258.810368563File Name: +dg1/ORCL/ARCHIVELOG/2013_03_18/thread_1_seq_428.259.810368569File Name: +dg1/ORCL/ARCHIVELOG/2013_03_18/thread_2_seq_460.260.810368569File Name: +dg1/ORCL/ARCHIVELOG/2013_03_18/thread_1_seq_429.261.810369187File Name: +dg1/ORCL/ARCHIVELOG/2013_03_18/thread_1_seq_430.262.810369189using channel ORA_DISK_1channel ORA_DISK_1: starting datafile backup set restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setchannel ORA_DISK_1: restoring datafile 00001 to +DATA/orcl/datafile/system.256.793082125channel ORA_DISK_1: restoring datafile 00002 to +DATA/orcl/datafile/sysaux.257.793082125channel ORA_DISK_1: restoring datafile 00003 to +DATA/orcl/datafile/undotbs1.258.793082127channel ORA_DISK_1: restoring datafile 00004 to +DATA/orcl/datafile/users.259.793082127channel ORA_DISK_1: restoring datafile 00005 to +DATA/orcl/datafile/undotbs2.267.793082251channel ORA_DISK_1: reading from backup piece +DATA/orcl/backupset/2013_03_18/nnndf0_tag20130318t052627_0.710.810365187channel ORA_DISK_1: piece handle=+DATA/orcl/backupset/2013_03_18/nnndf0_tag20130318t052627_0.710.810365187 tag=TAG20130318T052627channel ORA_DISK_1: restored backup piece 1channel ORA_DISK_1: restore complete, elapsed time: 00:00:45Finished restore at 18-MAR-13


接下来确定恢复终点;

查看控制文件中归档日志记录;

查看磁盘上的归档日志记录

sql>select name from v$archived_log;

orcl1>select name from v$archived_log;+DG1/orcl/archivelog/2013_03_18/thread_1_seq_426.257.810368515+DG1/orcl/archivelog/2013_03_18/thread_1_seq_427.258.810368563+DG1/orcl/archivelog/2013_03_18/thread_1_seq_428.259.810368569+DG1/orcl/archivelog/2013_03_18/thread_2_seq_460.260.810368569NAME----------------------------------------------------------------------+DG1/orcl/archivelog/2013_03_18/thread_1_seq_429.261.810369187+DG1/orcl/archivelog/2013_03_18/thread_1_seq_430.262.810369189442 rows selected.

再看看磁盘上的归档日志

ASMCMD> pwd+dg1/orcl/archivelog/2013_03_18ASMCMD> lsthread_1_seq_426.257.810368515thread_1_seq_427.258.810368563thread_1_seq_428.259.810368569thread_1_seq_429.261.810369187thread_1_seq_430.262.810369189thread_2_seq_460.260.810368569ASMCMD> 


有些归档日志是在备份之后产生的,所以不被当前控制文件所知道。需要把这些文件登记到控制文件中;

可以在我的实验里没有。

登记备份后产生的日志需要用rman的catalog命令;

rman>catalog  archivelog '归档文件所在路径‘;

。。。

直到全部注册到controlfile;


确认恢复终点

sql>select thread#,sequence#,name,next_change# from v$archived_log

 1  426 +DG1/orcl/archivelog/2013_03_18/thread_1_seq_426.257.810368515 25350729 1  427 +DG1/orcl/archivelog/2013_03_18/thread_1_seq_427.258.810368563 25352313 1  428 +DG1/orcl/archivelog/2013_03_18/thread_1_seq_428.259.810368569 25359744 2  460 +DG1/orcl/archivelog/2013_03_18/thread_2_seq_460.260.810368569 25360192   THREAD#  SEQUENCE# NAME     NEXT_CHANGE#---------- ---------- ---------------------------------------------------------------------- ------------ 1  429 +DG1/orcl/archivelog/2013_03_18/thread_1_seq_429.261.810369187 25387789 1  430 +DG1/orcl/archivelog/2013_03_18/thread_1_seq_430.262.810369189 25387794442 rows selected.orcl1>l  1* select thread#,sequence#,name,next_change# from v$archived_log


再执行恢复;

sql>recover database using backup controlfile until cancel;也可以用rman工具,但是需要使用set until提前指定恢复终点,比较麻烦,还是sql中的简单。

orcl1>recover database using backup controlfile until cancel ;ORA-00279: change 25341971 generated at 03/18/2013 05:26:27 needed for thread 1ORA-00289: suggestion : +DG1/orcl/archivelog/2013_03_18/thread_1_seq_426.257.810368515ORA-00280: change 25341971 for thread 1 is in sequence #426Specify log: {<RET>=suggested | filename | AUTO | CANCEL}+DG1/orcl/archivelog/2013_03_18/thread_1_seq_426.257.810368515ORA-00279: change 25341971 generated at 03/17/2013 23:18:17 needed for thread 2ORA-00289: suggestion : +DG1/orcl/archivelog/2013_03_18/thread_2_seq_460.260.810368569ORA-00280: change 25341971 for thread 2 is in sequence #460Specify log: {<RET>=suggested | filename | AUTO | CANCEL}+DG1/orcl/archivelog/2013_03_18/thread_2_seq_460.260.810368569ORA-00279: change 25350729 generated at 03/18/2013 06:21:54 needed for thread 1ORA-00289: suggestion : +DG1/orcl/archivelog/2013_03_18/thread_1_seq_427.258.810368563ORA-00280: change 25350729 for thread 1 is in sequence #427ORA-00278: log file '+DG1/orcl/archivelog/2013_03_18/thread_1_seq_426.257.810368515' no longer needed for this recoverySpecify log: {<RET>=suggested | filename | AUTO | CANCEL} +DG1/orcl/archivelog/2013_03_18/thread_1_seq_427.258.810368563ORA-00279: change 25352313 generated at 03/18/2013 06:22:43 needed for thread 1ORA-00289: suggestion : +DG1/orcl/archivelog/2013_03_18/thread_1_seq_428.259.810368569ORA-00280: change 25352313 for thread 1 is in sequence #428ORA-00278: log file '+DG1/orcl/archivelog/2013_03_18/thread_1_seq_427.258.810368563' no longer needed for this recoverySpecify log: {<RET>=suggested | filename | AUTO | CANCEL}+DG1/orcl/archivelog/2013_03_18/thread_1_seq_428.259.810368569ORA-00279: change 25359744 generated at 03/18/2013 06:22:48 needed for thread 1ORA-00289: suggestion : +DG1/orcl/archivelog/2013_03_18/thread_1_seq_429.261.810369187ORA-00280: change 25359744 for thread 1 is in sequence #429ORA-00278: log file '+DG1/orcl/archivelog/2013_03_18/thread_1_seq_428.259.810368569' no longer needed for this recoverySpecify log: {<RET>=suggested | filename | AUTO | CANCEL}+DG1/orcl/archivelog/2013_03_18/thread_1_seq_429.261.810369187ORA-00279: change 25360192 generated at 03/18/2013 06:22:49 needed for thread 2ORA-00289: suggestion : +DG1ORA-00280: change 25360192 for thread 2 is in sequence #461ORA-00278: log file '+DG1/orcl/archivelog/2013_03_18/thread_2_seq_460.260.810368569' no longer needed for this recoverySpecify log: {<RET>=suggested | filename | AUTO | CANCEL}cancelMedia recovery cancelled.


如果使用rman ,需要下面的方法

rman> run {

set until sequence 64 thread 2;

restore database;

recover database;

}

如果在rman中我们不提前确认能够恢复的终点,并且用set until 明确指出.Oracle会尝试恢复所有的归档。

在单实例情况下,每个归档日志中的scn号是连续分布的,因此这种尝试肯定会成功;但是在RAC环境下,scn是在实例间分布的,因此归档日志间的scn可能是不连续。这时某些归档日志虽然文件存在,但是却不能恢复到最后时间点。


以resetlogs方式打开数据库

orcl1>alter database open resetlogs;Database altered.orcl1>

打开其他实例



最后,进行数据库完全备份。


在以上操作过程,不清楚节点在哪一个步骤自动在本地生成了spfile文件,

生成正确的pfile,然后用pfile生成正确的spfile,还需要修改一下本地的initsid.ora 文件,和ocr里面spfile的文件路径。我们一般是用srvctl来启动和关闭数据库的,而srvctl读取的ocr里面的配置信息,所以要更新ocr的spfile信息

orcl2>create spfile='+DATA/orcl/spfileorcl.ora' from pfile='/tmp/pfileorcl1.ora';
[oracle@juliaz2 dbs]$ pwd/u01/app/oracle/dbs[oracle@juliaz2 dbs]$ more initorcl1.oraSPFILE='+DATA/orcl/spfileorcl.ora'# line added by Agent[oracle@juliaz2 dbs]$ 
[root@juliaz2 ~]# srvctl modify database -d orcl -p +DATA/orcl/spfileorcl.ora[[root@juliaz2 dbs]# srvctl config database -d orcl -aDatabase unique name: orclDatabase name: orclOracle home: /u01/app/oracleOracle user: oracleSpfile: +DATA/orcl/spfileorcl.oraDomain: Start options: openStop options: immediateDatabase role: PRIMARYManagement policy: AUTOMATICServer pools: orclDatabase instances: orcl1,orcl2Disk Groups: DATAServices: Database is enabledDatabase is administrator managed[root@juliaz2 dbs]# 


参考图书:大话Oracle RAC

oracle联机文档