一次曲折的rman控制文件恢复
- 格式:doc
- 大小:43.50 KB
- 文档页数:13
各种故障背景下的恢复方法丢失或损坏的文件归档模式数据库状态恢复方法一个或多个数据文件不归档模式关闭状态利用一致的完全数据库备份修复整个数据库,自从备份之后发生的所有修改都将丢失;修复数据库后不需要进行恢复,利用RESETLOGS选项直接打开数据库;注意:在这种情况下进行恢复时,惟一一种可以不利用RESETLOGS选项打开数据库的情况就是在执行最近一次备份之后,联机重做日志中的内容没有被覆盖掉。
一个或多个数据文件,以及联机重做日志文件不归档模式关闭状态利用一致的完全数据库备份修复整个数据库,自从备份之后发生的所有修改都将丢失;修复数据库后不需要进行恢复,利用RESETLOGS选项直接打开数据库。
一个或多个数据文件以及所有的控制文件不归档模式关闭状态利用一致的完全数据库备份修复整个数据库,自从备份之后发生的所有修改都将丢失;修复数据库后不需要进行恢复,利用RESETLOGS选项直接打开数据库。
注:以上三种不归档模式下的数据库恢复都需要在数据库关闭状态下进行,并且需要拥有正确的控制文件备份。
一个或多个数据文件归档模式加载状态在数据库打开状态下执行表空间或数据文件恢复操作,首先将表空间或数据文件置为脱机状态,然后利用备份修复它们,对它们进行恢复,最后再将它们重新置为联机状态;任何数据修改都不会丢失,并且在恢复过程中数据库的其他部分仍然是可以访问的。
全部的数据文件归档模式关闭状态利用备份修复数据文件,然后使用控制文件加载数据库,并且执行完全恢复;如果所有的联机重做日志文件都没有丢失或损害,最后可以用正常方式打开数据库(不需要使用RESETLOGS选项)一个或多个数据文件以及恢复所需的归档重做日志文件。
归档模式加载状态对包含丢失的数据文件的表空间进行基于时间的表空间恢复,将这个表空间恢复到最近的可用归档重做日志所对应的时刻下的状态。
所有的控制文件,还可能包括一个或多个数据文件归档模式未加载状态利用备份修复丢失的控制文件与数据文件,然后对数据文件进行恢复;任何数据修改都不会丢失,但是在恢复过程中数据库将处于不可用状态。
RMAN恢复操作RMAN(Recovery Manager)是Oracle 数据库提供的一种备份和恢复工具,它能够帮助数据库管理员进行数据库的全量备份、增量备份和恢复操作。
RMAN具有很强的自动化和并行处理功能,可以大大简化数据库备份和恢复的操作过程,提高数据库的可用性和数据的安全性。
在进行RMAN恢复操作前,首先需要进行备份恢复策略的制定。
策略包括备份类型(全量备份、增量备份、归档日志备份)、备份频率、备份保留周期和恢复时间目标等。
根据具体的需求,确定适合的备份和恢复策略。
RMAN支持多种备份方式,可以通过RMAN命令行工具或者企业管理器进行备份。
在进行备份操作时,可以选择全量备份、增量备份或归档日志备份。
全量备份是将整个数据库的数据和控制文件备份,可以用于初始化数据库或完全恢复数据库。
增量备份是将数据库的变化部分备份,可以显著减少备份时间和存储空间。
归档日志备份是将数据库的归档日志备份,用于数据库的恢复操作。
RMAN在进行备份操作时,会将备份集保存到磁盘或者磁带等存储介质上。
备份集包括数据文件备份、控制文件备份和归档日志备份。
备份集可以通过RMAN命令进行管理和检查,还可以进行压缩和加密操作,提高备份效率和保护备份数据的安全性。
在进行恢复操作时,可以选择完全恢复或部分恢复。
完全恢复是将数据库恢复到最近的完全备份点,然后通过应用归档日志将数据库恢复到指定的时间点。
部分恢复是将数据库恢复到一些指定的时间点或者指定的恢复点。
RMAN在进行恢复操作时,会自动应用备份和归档日志,进行数据的重建和恢复。
RMAN还支持增量恢复,可以在进行部分恢复时,只恢复已经发生变化的数据块。
增量恢复可以提高恢复效率,减少恢复时间。
RMAN还支持数据库的跨平台恢复和迁移。
通过RMAN可以实现不同操作系统平台之间的数据库迁移和恢复。
在进行跨平台恢复和迁移时,需要进行必要的参数调整和文件路径修改,保证数据库恢复和迁移的正确性。
使⽤RMAN对数据⽂件进⾏恢复(1)备份数据库在使⽤RMAN进⾏数据库恢复之前,先⽤RMAN进⾏全库备份[oracle@redhat6 ~]$ rman target /Recovery Manager: Release 11.2.0.1.0- Production on Wed May 1614:32:542018Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.connected to target database: ORCL (DBID=1486787650)RMAN>backup database;Starting backup at 16-MAY-18using channel ORA_DISK_1channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbfinput datafile file number=00002 name=/u01/app/oracle/oradata/orcl/sysaux01.dbfinput datafile file number=00003 name=/u01/app/oracle/oradata/orcl/undotbs01.dbfinput datafile file number=00005 name=/u01/app/oracle/oradata/orcl/example01.dbfinput datafile file number=00009 name=/u01/app/oracle/oradata/orcl/mark.bdfinput datafile file number=00011 name=/u01/app/oracle/oradata/orcl/tbs01.bdfinput datafile file number=00012 name=/u01/app/oracle/oradata/orcl/tbs03.dbfinput datafile file number=00013 name=/u01/app/oracle/oradata/orcl/tbs04.dbfinput datafile file number=00004 name=/u01/app/oracle/oradata/orcl/users01.dbfchannel ORA_DISK_1: starting piece 1 at 16-MAY-18channel ORA_DISK_1: finished piece 1 at 16-MAY-18piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/01t31soh_1_1 tag=TAG20180516T144121 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:02:33channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setinput datafile file number=00008 name=/u01/app/oracle/oradata/orcl/tbs_32k.dbfchannel ORA_DISK_1: starting piece 1 at 16-MAY-18channel ORA_DISK_1: finished piece 1 at 16-MAY-18piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/02t31sta_1_1 tag=TAG20180516T144121 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01channel ORA_DISK_1: starting full datafile backup setchannel ORA_DISK_1: specifying datafile(s) in backup setincluding current control file in backup setincluding current SPFILE in backup setchannel ORA_DISK_1: starting piece 1 at 16-MAY-18channel ORA_DISK_1: finished piece 1 at 16-MAY-18piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/03t31stc_1_1 tag=TAG20180516T144121 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01Finished backup at 16-MAY-18(2)删除数据⽂件查看数据库的数据⽂件信息:select t."NAME",d."NAME",d."FILE#"from v$tablespace t,v$datafile dwhere t."TS#" = d."TS#"order by t.ts#;NAME NAME FILE#------------------------------ -------------------------------------------------------------------------------- ----------SYSTEM /u01/app/oracle/oradata/orcl/system01.dbf 1SYSAUX /u01/app/oracle/oradata/orcl/sysaux01.dbf 2UNDOTBS1 /u01/app/oracle/oradata/orcl/undotbs01.dbf 3USERS /u01/app/oracle/oradata/orcl/users01.dbf 4EXAMPLE /u01/app/oracle/oradata/orcl/example01.dbf 5TBS_32K /u01/app/oracle/oradata/orcl/tbs_32k.dbf 8MARK /u01/app/oracle/oradata/orcl/mark.bdf 9TBS01 /u01/app/oracle/oradata/orcl/tbs01.bdf 11TBS03 /u01/app/oracle/oradata/orcl/tbs03.dbf 12TBS04 /u01/app/oracle/oradata/orcl/tbs04.dbf 1310 rows selected删除⼀个数据⽂件,这⾥把⽂件编号为13的数据⽂件给删除:[oracle@redhat6 ~]$ rm -f /u01/app/oracle/oradata/orcl/tbs04.dbf(3)恢复数据⽂件(3.1)使⽤list failure查看失败操作RMAN> list failure;List of Database Failures=========================Failure ID Priority Status Time Detected Summary---------- -------- --------- ------------- -------8 HIGH OPEN16-MAY-18 One or more non-system datafiles need media recovery42 HIGH OPEN13-DEC-17 One or more non-system datafiles are missing(3.2)使⽤RMAN建议来恢复丢失的⽂件RMAN> advise failure2> ;List of Database Failures=========================Failure ID Priority Status Time Detected Summary---------- -------- --------- ------------- -------8 HIGH OPEN16-MAY-18 One or more non-system datafiles need media recovery42 HIGH OPEN13-DEC-17 One or more non-system datafiles are missinganalyzing automatic repair options; this may take some timeusing channel ORA_DISK_1analyzing automatic repair options completeMandatory Manual Actions========================no manual actions availableOptional Manual Actions=======================1. If you restored the wrong version of data file/u01/app/oracle/oradata/orcl/tbs04.dbf, then replace it with the correct one2. If file/u01/app/oracle/oradata/orcl/tbs04.dbf was unintentionally renamed or moved, restore itAutomated Repair Options========================Option Repair Description------ ------------------1Restore and recover datafile 13; Recover datafile 13Strategy: The repair includes complete media recovery with no data lossRepair script: /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1931299378.hm最后⼀⾏给出了恢复的脚本,查看脚本[oracle@redhat6 ~]$ more /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_1931299378.hm# restore and recover datafilesql 'alter database datafile 13 offline';restore datafile 13;recover datafile 13;sql 'alter database datafile 13 online';# recover datafilesql 'alter database datafile 13 offline';recover datafile 13;sql 'alter database datafile 13 online';根据脚本,执⾏修复和恢复RMAN> sql 'alter database datafile 13 offline';sql statement: alter database datafile 13 offlineRMAN>restore datafile 13;Starting restore at 16-MAY-18using 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 00013to/u01/app/oracle/oradata/orcl/tbs04.dbfchannel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/11.2.0/db_1/dbs/01t31soh_1_1channel ORA_DISK_1: piece handle=/u01/app/oracle/product/11.2.0/db_1/dbs/01t31soh_1_1 tag=TAG20180516T144121 channel ORA_DISK_1: restored backup piece 1channel ORA_DISK_1: restore complete, elapsed time: 00:00:03Finished restore at 16-MAY-18RMAN> recover datafile 13;Starting recover at 16-MAY-18using channel ORA_DISK_1starting media recoverymedia recovery complete, elapsed time: 00:00:00Finished recover at 16-MAY-18RMAN> sql 'alter database datafile 13 online';sql statement: alter database datafile 13 online(4)重启数据库,确认⽆异常SQL>shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 730714112 bytesFixed Size 2216944 bytesVariable Size 314575888 bytesDatabase Buffers 411041792 bytesRedo Buffers 2879488 bytesDatabase mounted.Database opened.完结。
这里假定是nocatalog的情况下,我们采用了RMAN备份,但是丢失了控制文件,因为控制文件中包含了rman的备份信息,所以没有办法用平常的方法来恢复,如果想恢复数据库,则需要利用一个叫DBMS_BACKUP_RESTORE的包来实现,这个包在nomount下就可以正常运行,也就是说,只需要启动到nomount下就可以利用它来恢复控制文件或者数据文件以及归档日志。
1、从备份片中恢复控制文件
最好有控制文件能恢复,就算恢复的这个控制文件没有最新的备份信息也好,起码可以利用它来定位数据文件。
如果没有控制文件可恢复,后来的数据文件恢复将变的更复杂。
以下是恢复控制文件的脚本,需要在sys as dba的连接下执行。
2、从备份片中恢复数据文件
恢复数据文件的时候,必须要知道数据文件对应的文件编号,而且最好能知道数据文件位于哪个备份片,所以就是前面说的最好能先resotre一个控制文件出来,如果实在不行,能用备份时候的日志也可以。
以下是恢复全备份的下的数据文件的脚本:
当然,有的时候,我们不仅仅是做全备份,还要做增量备份,那么我们怎么从增量备份中应用备份到数据文件中呢,我们可以参考如下脚本:
3、从备份片中恢复归档日志
如果restore完数据文件,归档日志也是可能需要做restore的,用于做recover,可以采用如下的脚本恢复archive log:
以上是恢复一个归档日志的脚本,如果是恢复批量的归档日志,可以采用增加如下内容在上面的脚本中。
除了system表空间的数据文件(mount)之外,其它数据文件可以在open(mount也可以)状态下恢复。
open状态下恢复数据文件可以减少数据库停用的时间,所以应该在open状态下恢复这些数据文件。
示例一:数据文件被误删除数据库关闭状态下删除非系统表空间数据文件。
启动数据库到mount状态。
脱机丢失的数据文件,alter database datafile n offline。
打开数据库,alter database open。
转储数据文件,restore datafile n。
使用recover datafile n 应用归档日志。
联机数据文件,alter database datafile n online。
--数据库关闭状态下删除非系统表空间数据文件。
1.[oracle@localhost ~]$ rm $ORACLE_BASE/product/10.2.0/oradatabak/example01.dbf;2.SQL> select file#,error from v$recover_file;3.FILE# ERROR4.---------- -----------------------------------------------------------------5. 5 FILE NOT FOUND6.SQL> select file#,name from v$datafile where file#=5;7.FILE# NAME8.---------- --------------------------------------------------------------------------------9. 5 /oracle/10g/oracle/product/10.2.0/oradatabak/example01.dbf10.--恢复数据文件11.RMAN> run {12.startup force mount;13.sql 'alter database datafile 5 offline';14.sql 'alter database open';15.restore datafile 5;16.recover datafile 5;17.sql 'alter database datafile 5 online';18.8> }示例二:数据文件所在磁盘出现损坏数据库关闭状态下删除非系统表空间数据文件。
在这里没有讨论多么深入的RMAN技术,也没有告诉大家这样去编写备份脚本,这并不是我的初衷,我只想把我会的写出来,和大家一起学习,一起进步,谢谢。
1、切换服务器归档模式,如果已经是归档模式可跳过此步:%sqlplus /nolog (启动sqlplus)SQL> conn / as sysdba (以DBA身份连接数据库)SQL> shutdown immediate; (立即关闭数据库)SQL> startup mount (启动实例并加载数据库,但不打开) SQL> alter database archivelog; (更改数据库为归档模式)SQL> alter database open; (打开数据库)SQL> alter system archive log start; (启用自动归档) SQL> exit (退出)2、连接: %rman target=rman/rman@mydb (启动恢复管理器)3、基本设置: RMAN> configure default device type to disk; (设置默认的备份设备为磁盘)RMAN> configure device type disk parallelism 2; (设置备份的并行级别,通道数)RMAN> configure channel 1 device type disk fromat '/backup1/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)RMAN> configure channel 2 device type disk fromat '/backup2/backup_%U'; (设置备份的文件格式,只适用于磁盘设备)RMAN> configure controlfile autobackup on; (打开控制文件与服务器参数文件的自动备份)RMAN> configure controlfile autobackup format for device type disk to '/backup1/ctl_%F'; (设置控制文件与服务器参数文件自动备份的文件格式)4、查看所有设置:RMAN> show all5、查看数据库方案报表:RMAN> report schema;6、备份全库:RMAN> backup database plus archivelog delete input; (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)7、备份表空间:RMAN> backup tablespace system plus archivelog delete input; (备份指定表空间及归档的重做日志,并删除旧的归档日志)8、备份归档日志:RMAN> backup archivelog all delete input;9、复制数据文件:RMAN> copy datafile 1 to '/oracle/dbs/system.copy';10、查看备份和文件复本:RMAN> list backup;11、验证备份:RMAN> validate backupset 3;12、从自动备份中恢复服务器参数文件:RMAN> shutdown immediate; (立即关闭数据库)RMAN> startup nomount; (启动实例)RMAN> restore spfile to pfile '/backup1/mydb.ora' from autobackup; (从自动备份中恢复服务器参数文件) 13、从自动备份中恢复控制文件:RMAN> shutdown immediate; (立即关闭数据库)RMAN> startup nomount; (启动实例)RMAN> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)13、恢复和复原全数据库:RMAN> shutdown immediate; (立即关闭数据库)RMAN> exit (退出)%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak (将数据文件重命名)%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak (将数据文件重命名)%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak (将数据文件重命名)%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak (将数据文件重命名)%rman target=rman/rman@mydb (启动恢复管理器)RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化参数文件启动数据库)RMAN> restore database; (还原数据库) RMAN> recover database; (恢复数据库)RMAN> alter database open; (打开数据库)14、恢复和复原表空间:RMAN> sql 'alter tablespace users offline immediate'; (将表空间脱机)RMAN> exit (退出恢复管理器)%mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak (将表空间重命名)%rman target=rman/rman@mydb (启动恢复管理器)RMAN> restore tablespace users; (还原表空间)RMAN> recover tablespace users; (恢复表空间)RMAN> sql 'alter tablespace users online'; (将表空间联机)15、增量备份与恢复:第一天的增量基本备份:RMAN> backup incremental level=0 database plus archivelog delete input;第二天的增量差异备份:RMAN> backup incremental level=2 database plus archivelog delete input;第三天的增量差异备份:RMAN> backup incremental level=2 database plus archivelog delete input;第四天的增量差异备份:RMAN> backup incremental level=1 database plus archivelog delete input;第五天的增量差异备份:RMAN> backup incremental level=2 database plus archivelog delete input;第六天的增量差异备份:RMAN> backup incremental level=2 database plusarchivelog delete input;第七天的增量差异备份:RMAN> backup incremental level=0 database plus archivelog delete input;增量恢复:RMAN> shutdown immediate;RMAN> exit%mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak%mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak%mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak%mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak%rman target=rman/rman@mydbRMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora RMAN> restore database;RMAN> recover database;RMAN> alter database open。
rman恢复nocatalog方式恢复展开全文控制文件在,数据文件丢失.完全恢复过程RMAN> startup mount;connected to target database (not started)Oracle instance starteddatabase mountedTotal System Global Area 135337540 bytesFixed Size 452164 bytesVariable Size 109051904 bytesDatabase Buffers 25165824 bytesRedo Buffers 667648 bytesRMAN> restore database;Starting restore at 16-AUG-06allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=11 devtype=DISKchannel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00001 to /opt/oracle/oradata/tldb/system01.dbfrestoring datafile 00002 to /opt/oracle/oradata/tldb/undotbs01.dbfrestoring datafile 00003 to /opt/oracle/oradata/tldb/users01.dbfchannel ORA_DISK_1: restored backup piece 1piece handle=/opt/oracle/product/9.2.0/dbs/1fhqs95f_1_1 tag=TAG20060816T100015 params=NULLchannel ORA_DISK_1: restore completeFinished restore at 16-AUG-06RMAN> recover database;Starting recover at 16-AUG-06using channel ORA_DISK_1starting media recoverymedia recovery completeFinished recover at 16-AUG-06RMAN> alter database open;database openedRMAN>------------------------------------------------------------------------控制文件丢失,不完全恢复控制文件损坏时,使用 using backup controlfilesql> recover database until time ‘YYYY-MM-DD:HH:MI:SS‘until canceluntil scn <integer>或者需要恢复到不同的控制文件状态时.比如:表空间的误删除做完不完全恢复,需要重新做备份.tl1:~ # rman target /Recovery Manager: Release 9.2.0.6.0 - ProductionCopyright (c) 1995, 2002, Oracle Corporation. All rights reserved.connected to target database: TLDB (DBID=937533021)tl1:~ # rman target /Recovery Manager: Release 9.2.0.6.0 - ProductionCopyright (c) 1995, 2002, Oracle Corporation. All rights reserved.connected to target database (not started)RMAN> startup nomount; --数据库先启动到nomount状态.Oracle instance startedTotal System Global Area 135337540 bytesFixed Size 452164 bytesVariable Size 109051904 bytesDatabase Buffers 25165824 bytesRedo Buffers 667648 bytesRMAN> restore controlfile from autobackup;Starting restore at 16-AUG-06using target database controlfile instead of recovery catalog allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=11 devtype=DISKRMAN-00571:========================================= ==================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571:========================================= ==================RMAN-03002: failure of restore command at 08/16/2006 09:34:14RMAN-06495: must explicitly specify DBID with SET DBID command --提示需要设置dbid.我们在做rman备份的时候可以看到dbid.RMAN> set dbid 937533021executing command: SET DBIDRMAN> restore controlfile from autobackup;Starting restore at 16-AUG-06using channel ORA_DISK_1channel ORA_DISK_1: looking for autobackup on day: 20060816channel ORA_DISK_1: autobackup found: c-937533021-20060816-01channel ORA_DISK_1: controlfile restore from autobackup completereplicating controlfileinput filename=/opt/oracle/oradata/tldb/control01.ctloutput filename=/opt/oracle/oradata/tldb/control02.ctloutput filename=/opt/oracle/oradata/tldb/control03.ctlFinished restore at 16-AUG-06RMAN> alter database mount; --此时数据库可以mount上了.database mountedRMAN> alter database open; --但是还不能打开RMAN-00571:========================================= ==================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571:========================================= ==================RMAN-03002: failure of alter db command at 08/16/2006 09:35:10ORA-01589: must use RESETLOGS or NORESETLOGS option for database openRMAN> alter database open resetlogs; --打开报错,因为restore之后没有recover.RMAN-00571:========================================= ==================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571:========================================= ==================RMAN-03002: failure of alter db command at 08/16/2006 09:35:20ORA-01152: file 1 was not restored from a sufficiently old backupORA-01110: data file 1: ‘/opt/oracle/oradata/tldb/system01.dbf‘RMAN> recover database;Starting recover at 16-AUG-06using channel ORA_DISK_1starting media recoveryarchive log thread 1 sequence 1 is already on disk as file /opt/oracle/oradata/tldb/redo03.logarchive log filename=/opt/oracle/oradata/tldb/redo03.log thread=1 sequence=0media recovery completeFinished recover at 16-AUG-06RMAN> alter database open resetlogs;database openedRMAN>恢复完毕.使用resetlogs之后需在catalog database 上进行reset database,原有备份信息将不可用,所以要及时进行新的完全备份。
一次曲折的rman控制文件恢复用rman备份一个最新的控制文件rman target / catalog rman/rman@catdbRMAN>backup current controlfile format ='/oracle/backup/backup_%U';破坏控制文件select name from v$controlfile;/dev/rctrlfile1/dev/rctrlfile2/dev/rctrlfile3用dd把控制文件都搞坏,如下:# dd if=/dev/zero of=/dev/rctrlfile1 bs=32k------没有归档当前的redo log。
SQL> shutdown abort;ORACLE instance shut down.尝试正常启动数据库SQL> startupORACLE instance started.Total System Global Area 167772160 bytesFixed Size 2094904 bytesVariable Size 100665544 bytesDatabase Buffers 58720256 bytesRedo Buffers 6291456 bytesORA-00205: error in identifying control file, check alert log for more info报错,把数据库启动到nomount状态SQL> shutdownORA-01507: database not mountedORACLE instance shut down.SQL> startup nomountORACLE instance started.Total System Global Area 167772160 bytesFixed Size 2094904 bytesVariable Size 100665544 bytesDatabase Buffers 58720256 bytesRedo Buffers 6291456 bytesSQL>连接rman,准备恢复数据库文件。
ibmchen$[/oracle]rman target / catalog rman/rman@catdbRecovery Manager: Release 10.2.0.5.0 - Production on Wed Mar 14 16:18:09 2012Copyright (c) 1982, 2007, Oracle. All rights reserved.connected to target database: orac (not mounted)connected to recovery catalog database检查是否打开CONTROLFILE AUTOBACKUP ONRMAN> show all;RMAN configuration parameters are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP OFF; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # defaultCONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # defaultCONFIGURE CHANNEL DEVICE TYPE DISK FORMAT'/oracle/backup/%U';CONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default结果:没有打开AUTOBACKUP列出备份的控制文件RMAN> list backup of controlfile;List of Backup Sets===================BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ---------------------------214 Full 5.30M DISK 00:00:0514-MAR-12BP Key: 216 Status: AVAILABLE Compressed: NO Tag: TAG20120314T051102Piece Name:/oracle/app/oracle/product/10.2.0/db_1/dbs/05n5que6_1_1Control File Included: Ckp SCN: 5593672 Ckp time:14-MAR-12BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ---------------------------246 Full 5.30M DISK 00:00:0414-MAR-12BP Key: 250 Status: AVAILABLE Compressed: NO Tag: TAG20120314T090504Piece Name:/oracle/app/oracle/product/10.2.0/db_1/dbs/07n5rc5h_1_1Control File Included: Ckp SCN: 5637823 Ckp time:14-MAR-12BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ---------------------------283 Full 5.30M DISK 00:00:0714-MAR-12BP Key: 287 Status: AVAILABLE Compressed: NO Tag: TAG20120314T102947Piece Name: /oracle/backup/backup_09n5rh38_1_1Control File Included: Ckp SCN: 5642424 Ckp time:14-MAR-12BS Key Type LV Size Device Type Elapsed Time Completion Time------- ---- -- ---------- ----------- ---------------------------315 Full 5.27M DISK 00:00:0314-MAR-12BP Key: 318 Status: AVAILABLE Compressed: NO Tag: TAG20120314T132455Piece Name: /oracle/backup/control.bkpControl File Included: Ckp SCN: 5644103 Ckp time:14-MAR-12挑一个最新的备份(最新的未必好使)恢复控制文件:RMAN> restore controlfile from '/oracle/backup/control.bkp';Starting restore at 14-MAR-12allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=155 devtype=DISKchannel ORA_DISK_1: restoring control filechannel ORA_DISK_1: restore complete, elapsed time: 00:00:08 output filename=/dev/rctrlfile1output filename=/dev/rctrlfile2output filename=/dev/rctrlfile3Finished restore at 14-MAR-12RMAN>控制文件恢复完毕,将数据库启动到mount状态SQL> alter database mount;Database altered.SQL> alter database open;alter database open*ERROR at line 1:ORA-01589: must use RESETLOGS or NORESETLOGS option for database open提示要用resetlogs方式打开SQL> alter database open resetlogs;alter database open resetlogs*ERROR at line 1:ORA-01194: file 1 needs more recovery to be consistentORA-01110: data file 1: '/dev/rsystem'数据不一致,提示需要recover databaseSQL> recover database until cancel;ORA-00283: recovery session canceled due to errorsORA-01610: recovery using the BACKUP CONTROLFILE option must be done提示需要用BACKUP CONTROLFILE方式recover databaseSQL> recover database using backup controlfile until cancel; ORA-00279: change 5646533 generated at 03/14/2012 14:02:44 needed for thread 1ORA-00289: suggestion : /oracle/arch/arch1_161_772505712.dbf ORA-00280: change 5646533 for thread 1 is in sequence #161Specify log: {<RET>=suggested | filename | AUTO | CANCEL} autoORA-00308: cannot open archived log'/oracle/arch/arch1_161_772505712.dbf'ORA-27037: unable to obtain file statusIBM AIX RISC System/6000 Error: 2: No such file or directory Additional information: 3ORA-00308: cannot open archived log'/oracle/arch/arch1_161_772505712.dbf'ORA-27037: unable to obtain file statusIBM AIX RISC System/6000 Error: 2: No such file or directory Additional information: 3ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error belowORA-01194: file 1 needs more recovery to be consistent我晕,/oracle/arch/arch1_161_772505712.dbf没有归档。