oraclerac在asm下的备份与恢复oracle 10g rac+asm 的备份与恢复,因为asm 磁盘管理是两个实例都可以访问的,并且是共享的,归档日志文件也是放在asm磁盘上,所以备份与恢复的操作和单实例差不多,只需要在一个节点上做可以了,以下是测试过程:SQL> show parameter log_archive_dest_1NAME TYPE VALUE------------------------------------ ----------- ------------------------------log_archive_dest_1 string location=+DISKGR OUPlog_archive_dest_10 string1.备份[oracle@rac1 ~]$ rman target /Recovery Manager: Release 10.2.0.4.0 - Production on Sat Jan 3 20:30:40 2009Copyright (c) 1982, 2007, Oracle. All rights reserved.connected to target database: RAC (DBID=2257786532)RMAN> show all;RMAN configuration parameters are:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION OFF; # defaultCONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP OFF; # defaultCONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUPTYPE 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 '/oradata/%U';CONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_rac1.f'; # defaultRMAN> backup database plus archivelog delete all input;Starting backup at 03-JAN-09current log archivedusing channel ORA_DISK_1channel ORA_DISK_1: starting archive log backupsetchannel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=46 recid=70 stamp=674701009input archive log thread=1 sequence=47 recid=73 stamp=674701367input archive log thread=1 sequence=48 recid=74 stamp=674701585input archive log thread=1 sequence=49 recid=76 stamp=675201928input archive log thread=1 sequence=50 recid=79 stamp=675203712input archive log thread=2 sequence=34 recid=71 stamp=674701052input archive log thread=2 sequence=35 recid=72 stamp=674701368input archive log thread=2 sequence=36 recid=75 stamp=674701587input archive log thread=2 sequence=37 recid=77 stamp=675203284input archive log thread=2 sequence=38 recid=78 stamp=675203700channel ORA_DISK_1: starting piece 1 at 03-JAN-09channel ORA_DISK_1: finished piece 1 at 03-JAN-09piece handle=/oradata/0lk3tik2_1_1 tag=TAG20090103T203513 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:08channel ORA_DISK_1: deleting archive log(s)archive log filename=+DISKGROUP/rac/archivelog/2008_12_29/thread_1_se q_46.288.674701007 recid=70 stamp=674701009archive log filename=+DISKGROUP/rac/archivelog/2008_12_29/thread_1_se q_47.281.674701367 recid=73 stamp=674701367archive log filename=+DISKGROUP/rac/archivelog/2008_12_29/thread_1_se q_48.287.674701585 recid=74 stamp=674701585archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_1_seq_49.280.675201927 recid=76 stamp=675201928archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_1_se q_50.282.675203705 recid=79 stamp=675203712archive log filename=+DISKGROUP/rac/archivelog/2008_12_29/thread_2_se q_34.283.674701051 recid=71 stamp=674701052archive log filename=+DISKGROUP/rac/archivelog/2008_12_29/thread_2_se q_35.286.674701369 recid=72 stamp=674701368archive log filename=+DISKGROUP/rac/archivelog/2008_12_29/thread_2_se q_36.279.674701587 recid=75 stamp=674701587archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_2_se q_37.285.675203283 recid=77 stamp=675203284archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_2_se q_38.284.675203701 recid=78 stamp=675203700Finished backup at 03-JAN-09Starting backup at 03-JAN-09using channel ORA_DISK_1channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00007 name=/oradata/paul01.dbfinput datafile fno=00003 name=+DISKGROUP/rac/datafile/sysaux.270.669804585 input datafile fno=00005 name=+DISKGROUP/rac/datafile/users.278.672888597 input datafile fno=00002name=+DISKGROUP/rac/datafile/undotbs1.269.669804571 channel ORA_DISK_1: starting piece 1 at 03-JAN-09channel ORA_DISK_1: finished piece 1 at 03-JAN-09piece handle=/oradata/0mk3tikd_1_1 tag=TAG20090103T203524 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:45channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00001 name=+DISKGROUP/rac/datafile/system.268.669804533 channel ORA_DISK_1: starting piece 1 at 03-JAN-09channel ORA_DISK_1: finished piece 1 at 03-JAN-09piece handle=/oradata/0nk3tilq_1_1 tag=TAG20090103T203524 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:35channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00004 name=+DISKGROUP/rac/datafile/undotbs2.272.669804611 channel ORA_DISK_1: starting piece 1 at 03-JAN-09channel ORA_DISK_1: finished piece 1 at 03-JAN-09piece handle=/oradata/0ok3timu_1_1 tag=TAG20090103T203524 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:03channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetinput datafile fno=00006name=+DISKGROUP/rac/datafile/test.277.669863437 channel ORA_DISK_1: starting piece 1 at 03-JAN-09channel ORA_DISK_1: finished piece 1 at 03-JAN-09piece handle=/oradata/0pk3tin1_1_1 tag=TAG20090103T203524 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:01channel ORA_DISK_1: starting full datafile backupsetchannel ORA_DISK_1: specifying datafile(s) in backupsetincluding current control file in backupsetincluding current SPFILE in backupsetchannel ORA_DISK_1: starting piece 1 at 03-JAN-09channel ORA_DISK_1: finished piece 1 at 03-JAN-09piece handle=/oradata/0qk3tin2_1_1 tag=TAG20090103T203524 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:08Finished backup at 03-JAN-09Starting backup at 03-JAN-09current log archivedusing channel ORA_DISK_1channel ORA_DISK_1: starting archive log backupsetchannel ORA_DISK_1: specifying archive log(s) in backup set input archive log thread=1 sequence=51 recid=81 stamp=675203822input archive log thread=2 sequence=39 recid=80 stamp=675203817channel ORA_DISK_1: starting piece 1 at 03-JAN-09channel ORA_DISK_1: finished piece 1 at 03-JAN-09piece handle=/oradata/0rk3ting_1_1tag=TAG20090103T203703 comment=NONEchannel ORA_DISK_1: backup set complete, elapsed time: 00:00:02channel ORA_DISK_1: deleting archive log(s)archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_1_se q_51.285.675203823 recid=81 stamp=675203822archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_2_se q_39.284.675203817 recid=80 stamp=675203817Finished backup at 03-JAN-09RMAN>2.加入测试数据rac1[oracle@rac1 ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.4.0 - Production on Sat Jan 3 20:51:30 2009Copyright (c) 1982, 2007, Oracle. All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing optionsSQL>SQL> select count(*) from t;COUNT(*)----------160688SQL> insert into t select * from t;160688 rows created.SQL> commit;Commit complete.SQL> alter system switch logfile;System altered.rac2[oracle@rac2 ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.4.0 - Production on Sat Jan 3 20:53:00 2009Copyright (c) 1982, 2007, Oracle. All Rights Reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - ProductionWith the Partitioning, Real Application Clusters, OLAP, Data Miningand Real Application Testing optionsSQL> insert into t select * from t;321376 rows created.SQL> commit;Commit complete.SQL> alter system switch logfile;System altered.SQL> select count(*) from t;COUNT(*)----------6427523.恢复:注意恢复时另外一个节点数据库一定要关闭,要不然在恢复时会报如下错误:Recovery Manager complete.[oracle@rac1 ~]$ rman target /Recovery Manager: Release 10.2.0.4.0 - Production on Sat Jan 3 21:02:48 2009Copyright (c) 1982, 2007, Oracle. All rights reserved.connected to target database (not started)RMAN> startup mount;Oracle instance starteddatabase mountedTotal System Global Area 285212672 bytesFixed Size 1267068 bytesVariable Size 104860292 bytesDatabase Buffers 176160768 bytesRedo Buffers 2924544 bytesRMAN> restore database;Starting restore at 03-JAN-09using target database control file instead of recovery catalog allocated channel: ORA_DISK_1channel ORA_DISK_1: sid=150 instance=rac1 devtype=DISK channel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00002 to +DISKGROUP/rac/datafile/undotbs1.269.669804571restoring datafile 00003 to +DISKGROUP/rac/datafile/sysaux.270.669804585restoring datafile 00005 to +DISKGROUP/rac/datafile/users.278.672888597restoring datafile 00007 to /oradata/paul01.dbfchannel ORA_DISK_1: reading from backup piece /oradata/0mk3tikd_1_1RMAN-00571:========================================= ==================RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============RMAN-00571:========================================= ==================RMAN-03002: failure of restore command at 01/03/2009 21:06:08ORA-19870: error reading backup piece /oradata/0mk3tikd_1_1ORA-19573: cannot obtain exclusive enqueue for datafile 2以下是关闭另外一个实例后的恢复过程RMAN>[oracle@rac1 ~]$ rman target /Recovery Manager: Release 10.2.0.4.0 - Production on Sat Jan 3 21:02:48 2009Copyright (c) 1982, 2007, Oracle. All rights reserved.connected to target database (not started)RMAN> startup mount;Oracle instance starteddatabase mountedTotal System Global Area 285212672 bytesFixed Size 1267068 bytesVariable Size 104860292 bytesDatabase Buffers 176160768 bytesRedo Buffers 2924544 bytesRMAN> restore database2> ;Starting restore at 03-JAN-09using channel ORA_DISK_1channel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00002 to +DISKGROUP/rac/datafile/undotbs1.269.669804571restoring datafile 00003 to +DISKGROUP/rac/datafile/sysaux.270.669804585restoring datafile 00005 to +DISKGROUP/rac/datafile/users.278.672888597restoring datafile 00007 to /oradata/paul01.dbfchannel ORA_DISK_1: reading from backup piece /oradata/0mk3tikd_1_1channel ORA_DISK_1: restored backup piece 1piece handle=/oradata/0mk3tikd_1_1 tag=TAG20090103T203524channel ORA_DISK_1: restore complete, elapsed time: 00:01:09channel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00001 to +DISKGROUP/rac/datafile/system.268.669804533channel ORA_DISK_1: reading from backup piece /oradata/0nk3tilq_1_1channel ORA_DISK_1: restored backup piece 1piece handle=/oradata/0nk3tilq_1_1tag=TAG20090103T203524channel ORA_DISK_1: restore complete, elapsed time: 00:01:20channel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00004 to +DISKGROUP/rac/datafile/undotbs2.272.669804611channel ORA_DISK_1: reading from backup piece /oradata/0ok3timu_1_1channel ORA_DISK_1: restored backup piece 1piece handle=/oradata/0ok3timu_1_1 tag=TAG20090103T203524channel ORA_DISK_1: restore complete, elapsed time: 00:00:37channel ORA_DISK_1: starting datafile backupset restorechannel ORA_DISK_1: specifying datafile(s) to restore from backup setrestoring datafile 00006 to +DISKGROUP/rac/datafile/test.277.669863437channel ORA_DISK_1: reading from backup piece /oradata/0pk3tin1_1_1channel ORA_DISK_1: restored backup piece 1piece handle=/oradata/0pk3tin1_1_1 tag=TAG20090103T203524channel ORA_DISK_1: restore complete, elapsed time: 00:00:18Finished restore at 03-JAN-09RMAN> recover database;Starting recover at 03-JAN-09using channel ORA_DISK_1starting media recoveryarchive log thread 1 sequence 52 is already on disk as file +DISKGROUP/rac/archivelog/2009_01_03/thread_1_seq_52.284. 675204727archive log thread 2 sequence 40 is already on disk as file +DISKGROUP/rac/archivelog/2009_01_03/thread_2_seq_40.285. 675204811channel ORA_DISK_1: starting archive log restore to default destinationchannel ORA_DISK_1: restoring archive logarchive log thread=1 sequence=51channel ORA_DISK_1: restoring archive logarchive log thread=2 sequence=39channel ORA_DISK_1: reading from backup piece /oradata/0rk3ting_1_1channel ORA_DISK_1: restored backup piece 1piece handle=/oradata/0rk3ting_1_1 tag=TAG20090103T203703channel ORA_DISK_1: restore complete, elapsed time: 00:00:08archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_1_se q_51.279.675206019 thread=1 sequence=51archive log filename=+DISKGROUP/rac/archivelog/2009_01_03/thread_2_se q_39.286.675206019 thread=2 sequence=39 ---可以看到两个实例下的归档日志都可以恢复media recovery complete, elapsed time: 00:00:09Finished recover at 03-JAN-09RMAN> alter database open;database openedRMAN>启动另外个节点,验证数据SQL> startupORACLE instance started.Total System Global Area 285212672 bytesFixed Size 1267068 bytesVariable Size 92277380 bytesDatabase Buffers 188743680 bytesRedo Buffers 2924544 bytesDatabase mounted.Database opened.SQL>SQL> select count(*) from t;COUNT(*)----------642752一致恢复完成总结:10g rac+asm的备份与恢复和单实例差不多,很方便管理,目前我们客户是9irac+裸设备的方式,由于归档日志文件不能放在裸设备上,只能放在文件系统上,所以备份与恢复相对就麻烦些,必须在各个节点上备份各自的归档日志文件,和相应恢复各自的归档日志文件下面一篇文章就介绍归档放在文件系统上的备份与恢复方法。