1 准备 2 1.1 检查数据库归档状态 2 1.2 RMAN登陆目标 2 2 备份全库 2 2.1 创建备份数据存储目录 2 2.2 RMAN备份全库 2 2.3 试验(备份后,改变数据) 5 2.4 试验(模拟删除控制文件) 7 3 恢复数据库 8 3.1 假定没有设置ORACLE_SID,设置ORACLE_SID启动一个伪实例 8 3.2 恢复SPFILE 9 3.3 恢复控制文件 9 3.4 恢复数据库 10
目录
1 准备
1.1 检查数据库归档状态
[[email protected] /]$ sqlplus /nolog SQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 12 11:58:35 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. SQL> conn sys/[email protected] as sysdba Connected. SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination /data2/orcl/recover_log/archive_log Oldest online log sequence 22 Next log sequence to archive 24 Current log sequence 24 |
1.2 RMAN登陆目标
[[email protected] ~]$ rman target sys/[email protected] |
2 备份全库
2.1 创建备份数据存储目录(本次实验没有创建)
[[email protected] /]$ mkdir /data2/backup |
2.2 RMAN备份全库
RMAN> backup as compressed backupset database plus archivelog; Starting backup at 12-OCT-15 current log archived using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 channel ORA_DISK_1: starting compressed archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=12 RECID=1 STAMP=892728339 input archived log thread=1 sequence=13 RECID=2 STAMP=892736557 input archived log thread=1 sequence=14 RECID=3 STAMP=892753270 input archived log thread=1 sequence=15 RECID=4 STAMP=892768262 channel ORA_DISK_1: starting piece 1 at 12-OCT-15 channel ORA_DISK_2: starting compressed archived log backup set channel ORA_DISK_2: specifying archived log(s) in backup set input archived log thread=1 sequence=16 RECID=5 STAMP=892791995 input archived log thread=1 sequence=17 RECID=6 STAMP=892803633 input archived log thread=1 sequence=18 RECID=7 STAMP=892815402 input archived log thread=1 sequence=19 RECID=8 STAMP=892828012 input archived log thread=1 sequence=20 RECID=9 STAMP=892843267 channel ORA_DISK_2: starting piece 1 at 12-OCT-15 channel ORA_DISK_3: starting compressed archived log backup set channel ORA_DISK_3: specifying archived log(s) in backup set input archived log thread=1 sequence=21 RECID=10 STAMP=892857631 input archived log thread=1 sequence=22 RECID=11 STAMP=892882839 input archived log thread=1 sequence=23 RECID=12 STAMP=892891106 input archived log thread=1 sequence=24 RECID=13 STAMP=892900945 input archived log thread=1 sequence=25 RECID=14 STAMP=892901057 input archived log thread=1 sequence=26 RECID=15 STAMP=892901228 input archived log thread=1 sequence=27 RECID=16 STAMP=892901372 input archived log thread=1 sequence=28 RECID=17 STAMP=892901532 channel ORA_DISK_3: starting piece 1 at 12-OCT-15 channel ORA_DISK_3: finished piece 1 at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp3xr2_.bkp tag=TAG20151012T145139 comment=NONE channel ORA_DISK_3: backup set complete, elapsed time: 00:00:15 channel ORA_DISK_3: starting compressed archived log backup set channel ORA_DISK_3: specifying archived log(s) in backup set input archived log thread=1 sequence=29 RECID=18 STAMP=892901677 input archived log thread=1 sequence=30 RECID=19 STAMP=892909146 input archived log thread=1 sequence=31 RECID=20 STAMP=892909170 input archived log thread=1 sequence=32 RECID=21 STAMP=892909211 input archived log thread=1 sequence=33 RECID=22 STAMP=892911098 channel ORA_DISK_3: starting piece 1 at 12-OCT-15 channel ORA_DISK_1: finished piece 1 at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp3wp6_.bkp tag=TAG20151012T145139 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:20 channel ORA_DISK_2: finished piece 1 at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp3ww1_.bkp tag=TAG20151012T145139 comment=NONE channel ORA_DISK_2: backup set complete, elapsed time: 00:00:22 channel ORA_DISK_3: finished piece 1 at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145139_c1pp4hhj_.bkp tag=TAG20151012T145139 comment=NONE channel ORA_DISK_3: backup set complete, elapsed time: 00:00:06 Finished backup at 12-OCT-15 Starting backup at 12-OCT-15 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 channel ORA_DISK_1: starting compressed full datafile backup set channel ORA_DISK_1: specifying datafile(s) in backup set input datafile file number=00001 name=/data2/orcl/system01.dbf input datafile file number=00003 name=/data2/orcl/undotbs01.dbf channel ORA_DISK_1: starting piece 1 at 12-OCT-15 channel ORA_DISK_2: starting compressed full datafile backup set channel ORA_DISK_2: specifying datafile(s) in backup set input datafile file number=00002 name=/data2/orcl/sysaux01.dbf input datafile file number=00004 name=/data2/orcl/users01.dbf channel ORA_DISK_2: starting piece 1 at 12-OCT-15 channel ORA_DISK_2: finished piece 1 at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4phv_.bkp tag=TAG20151012T145203 comment=NONE channel ORA_DISK_2: backup set complete, elapsed time: 00:00:55 channel ORA_DISK_1: finished piece 1 at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4o7j_.bkp tag=TAG20151012T145203 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:01:16 Finished backup at 12-OCT-15 Starting backup at 12-OCT-15 current log archived using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 channel ORA_DISK_1: starting compressed archived log backup set channel ORA_DISK_1: specifying archived log(s) in backup set input archived log thread=1 sequence=34 RECID=23 STAMP=892911204 channel ORA_DISK_1: starting piece 1 at 12-OCT-15 channel ORA_DISK_1: finished piece 1 at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_annnn_TAG20151012T145325_c1pp76vh_.bkp tag=TAG20151012T145325 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07 Finished backup at 12-OCT-15 Starting Control File and SPFILE Autobackup at 12-OCT-15 piece handle=/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 12-OCT-15 |
2.3 试验(备份后,改变数据)
SQL> select sal from scott .emp; SAL ---------- 800 1600 1250 2975 1250 2850 2450 3000 5000 1500 1100 SAL ---------- 950 3000 1300 14 rows selected. SQL> update scott.emp set sal=sal+10; 14 rows updated. SQL> commit; Commit complete. SQL> alter system switch logfile; System altered. SQL> update scott.emp set sal=sal+10; 14 rows updated. SQL> commit; Commit complete. SQL> alter system switch logfile; System altered. SQL> update scott.emp set sal=sal+10; 14 rows updated. SQL> commit; Commit complete. SQL> alter system switch logfile; System altered. SQL> update scott.emp set sal=sal+10; 14 rows updated. SQL> commit; Commit complete. SQL> alter system switch logfile; System altered. SQL> select sal from scott.emp; SAL ---------- 840 1640 1290 3015 1290 2890 2490 3040 5040 1540 1140 SAL ---------- 990 3040 1340 14 rows selected. |
2.4 试验(模拟删除控制文件)
模拟数据库崩溃,删除控制文件,此时数据库还在继续运行,可能要过一会切换日志崩溃。这里我直接重启一下数据库 |
[[email protected] orcl]$ cd /data2/orcl [[email protected] orcl]$ ll 总用量 1666384 -rw-r----- 1 oracle oinstall 9748480 10月 12 15:15 control01.ctl drwxr-xr-x 3 oracle oinstall 4096 10月 10 10:48 recover_log -rw-r----- 1 oracle oinstall 52429312 10月 12 14:53 redo01.log -rw-r----- 1 oracle oinstall 52429312 10月 12 15:08 redo02.log -rw-r----- 1 oracle oinstall 52429312 10月 12 15:15 redo03.log -rw-r----- 1 oracle oinstall 681582592 10月 12 15:14 sysaux01.dbf -rw-r----- 1 oracle oinstall 754982912 10月 12 15:14 system01.dbf -rw-r----- 1 oracle oinstall 30416896 10月 12 14:33 temp01.dbf -rw-r----- 1 oracle oinstall 94380032 10月 12 15:15 undotbs01.dbf -rw-r----- 1 oracle oinstall 5251072 10月 12 15:13 users01.dbf [[email protected] orcl]$ mv control01.ctl control01.ctl.bak [[email protected] orcl]$ ll 总用量 1666384 -rw-r----- 1 oracle oinstall 9748480 10月 12 15:15 control01.ctl.bak drwxr-xr-x 3 oracle oinstall 4096 10月 10 10:48 recover_log -rw-r----- 1 oracle oinstall 52429312 10月 12 14:53 redo01.log -rw-r----- 1 oracle oinstall 52429312 10月 12 15:08 redo02.log -rw-r----- 1 oracle oinstall 52429312 10月 12 15:15 redo03.log -rw-r----- 1 oracle oinstall 681582592 10月 12 15:15 sysaux01.dbf -rw-r----- 1 oracle oinstall 754982912 10月 12 15:14 system01.dbf -rw-r----- 1 oracle oinstall 30416896 10月 12 14:33 temp01.dbf -rw-r----- 1 oracle oinstall 94380032 10月 12 15:15 undotbs01.dbf -rw-r----- 1 oracle oinstall 5251072 10月 12 15:13 users01.dbf SQL> startup force ORACLE instance started. Total System Global Area 1937457152 bytes Fixed Size 2229584 bytes Variable Size 1241516720 bytes Database Buffers 687865856 bytes Redo Buffers 5844992 bytes ORA-00205: error in identifying control file, check alert log for more info |
查看告警信息了,无法启动! |
3 恢复数据库
3.1 假定没有设置Oracle_SID,设置Oracle_SID启动一个伪实例
$ORACLE_SID查看原来的SID。这里是假设原来$ORACLE_SID没设置的情况下: [[email protected] ~]$ export ORACLE_SID=test [[email protected] ~]$ echo $ORACLE_SID test [[email protected] ~]$ rman target / Recovery Manager: Release 11.2.0.3.0 - Production on Mon Oct 12 15:45:22 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database (not started) RMAN> startup nomount startup failed: ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file ‘/u01/app/oracle/product/11.2.0/db_1/dbs/inittest.ora‘ starting Oracle instance without parameter file for retrieval of spfile Oracle instance started Total System Global Area 158662656 bytes Fixed Size 2226456 bytes Variable Size 130025192 bytes Database Buffers 20971520 bytes Redo Buffers 5439488 bytes |
此时查看下[[email protected] orcl]$ cd /u01/app/oracle/product/11.2.0/db_1/dbs/ 中产生的文件: [[email protected] dbs]$ ll 总用量 9540 -rw-rw---- 1 oracle oinstall 1544 10月 12 15:18 hc_orcl.dat -rw-r--r-- 1 oracle oinstall 2851 5月 15 2009 init.ora -rw-r----- 1 oracle oinstall 0 10月 12 15:45 lkinsttest -rw-r----- 1 oracle oinstall 24 10月 9 11:53 lkORCL -rw-r----- 1 oracle oinstall 1536 10月 9 12:02 orapworcl -rw-r----- 1 oracle oinstall 9748480 10月 12 14:53 snapcf_orcl.f -rw-r----- 1 oracle oinstall 2560 10月 12 09:18 spfileorcl.ora |
3.2 恢复spfile
RMAN> restore spfile from ‘/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp‘; Starting restore at 12-OCT-15 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=429 device type=DISK channel ORA_DISK_1: restoring spfile from AUTOBACKUP /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp channel ORA_DISK_1: SPFILE restore from AUTOBACKUP complete Finished restore at 12-OCT-15 |
此时参数文件恢复完成,此时,在DBS目录下有一个以当前oracle_sid.ora为后缀的参数文件: [[email protected] dbs]$ ll 总用量 9548 -rw-rw---- 1 oracle oinstall 1544 10月 12 15:18 hc_orcl.dat -rw-rw---- 1 oracle oinstall 1544 10月 12 15:47 hc_test.dat -rw-r--r-- 1 oracle oinstall 2851 5月 15 2009 init.ora -rw-r----- 1 oracle oinstall 24 10月 9 11:53 lkORCL -rw-r----- 1 oracle oinstall 1536 10月 9 12:02 orapworcl -rw-r----- 1 oracle oinstall 9748480 10月 12 14:53 snapcf_orcl.f -rw-r----- 1 oracle oinstall 2560 10月 12 09:18 spfileorcl.ora -rw-r----- 1 oracle oinstall 2560 10月 12 15:47 spfiletest.ora |
3.3 恢复控制文件
停掉伪实例,还原原来的参数文件名,原来是ORACLE_SID=orcl RMAN> shutdown immediate Oracle instance shut down [[email protected] dbs]$ mv spfiletest.ora spfileorcl.ora [[email protected] dbs]$ ll 总用量 9544 -rw-rw---- 1 oracle oinstall 1544 10月 12 15:18 hc_orcl.dat -rw-rw---- 1 oracle oinstall 1544 10月 12 16:08 hc_test.dat -rw-r--r-- 1 oracle oinstall 2851 5月 15 2009 init.ora -rw-r----- 1 oracle oinstall 24 10月 9 11:53 lkORCL -rw-r----- 1 oracle oinstall 1536 10月 9 12:02 orapworcl -rw-r----- 1 oracle oinstall 9748480 10月 12 14:53 snapcf_orcl.f -rw-r----- 1 oracle oinstall 2560 10月 12 15:47 spfileorcl.ora |
恢复控制文件: [[email protected] ~]$ export ORACLE_SID=orcl [[email protected] ~]$ rman target / Recovery Manager: Release 11.2.0.3.0 - Production on Mon Oct 12 16:16:03 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. connected to target database (not started) RMAN> startup nomount Oracle instance started Total System Global Area 1937457152 bytes Fixed Size 2229584 bytes Variable Size 1241516720 bytes Database Buffers 687865856 bytes Redo Buffers 5844992 bytes RMAN> restore controlfile from ‘/u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp‘; Starting restore at 12-OCT-15 using target database control file instead of recovery catalog 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:03 output file name=/data2/orcl/control01.ctl output file name=/u01/app/oracle/fast_recovery_area/orcl/control02.ctl Finished restore at 12-OCT-15 |
3.4 恢复数据库
RMAN> alter database mount; database mounted released channel: ORA_DISK_1 RMAN> run{ 2> restore database; 3> recover database; 4> }; Starting restore at 12-OCT-15 Starting implicit crosscheck backup at 12-OCT-15 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=63 device type=DISK allocated channel: ORA_DISK_2 channel ORA_DISK_2: SID=129 device type=DISK allocated channel: ORA_DISK_3 channel ORA_DISK_3: SID=193 device type=DISK Crosschecked 7 objects Crosschecked 50 objects Finished implicit crosscheck backup at 12-OCT-15 Starting implicit crosscheck copy at 12-OCT-15 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 Crosschecked 6 objects Finished implicit crosscheck copy at 12-OCT-15 searching for all files in the recovery area cataloging files... cataloging done List of Cataloged Files ======================= File Name: /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2015_10_12/o1_mf_s_892911216_c1pp7o9p_.bkp using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 channel ORA_DISK_1: starting datafile backup set restore channel ORA_DISK_1: specifying datafile(s) to restore from backup set channel ORA_DISK_1: restoring datafile 00002 to /data2/orcl/sysaux01.dbf channel ORA_DISK_1: restoring datafile 00004 to /data2/orcl/users01.dbf channel ORA_DISK_1: reading from backup piece /u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4phv_.bkp channel ORA_DISK_2: starting datafile backup set restore channel ORA_DISK_2: specifying datafile(s) to restore from backup set channel ORA_DISK_2: restoring datafile 00001 to /data2/orcl/system01.dbf channel ORA_DISK_2: restoring datafile 00003 to /data2/orcl/undotbs01.dbf channel ORA_DISK_2: reading from backup piece /u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4o7j_.bkp channel ORA_DISK_1: piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4phv_.bkp tag=TAG20151012T145203 channel ORA_DISK_1: restored backup piece 1 channel ORA_DISK_1: restore complete, elapsed time: 00:01:01 channel ORA_DISK_2: piece handle=/u01/app/oracle/fast_recovery_area/ORCL/backupset/2015_10_12/o1_mf_nnndf_TAG20151012T145203_c1pp4o7j_.bkp tag=TAG20151012T145203 channel ORA_DISK_2: restored backup piece 1 channel ORA_DISK_2: restore complete, elapsed time: 00:01:25 Finished restore at 12-OCT-15 Starting recover at 12-OCT-15 using channel ORA_DISK_1 using channel ORA_DISK_2 using channel ORA_DISK_3 starting media recovery archived log for thread 1 with sequence 34 is already on disk as file /data2/orcl/redo01.log archived log for thread 1 with sequence 35 is already on disk as file /data2/orcl/redo02.log archived log for thread 1 with sequence 36 is already on disk as file /data2/orcl/redo03.log archived log file name=/data2/orcl/redo01.log thread=1 sequence=34 archived log file name=/data2/orcl/redo02.log thread=1 sequence=35 archived log file name=/data2/orcl/redo03.log thread=1 sequence=36 media recovery complete, elapsed time: 00:00:18 Finished recover at 12-OCT-15 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-00558: error encountered while parsing input commands RMAN-01009: syntax error: found ";": expecting one of: "advise, allocate, alter, backup, @, catalog, change, configure, connect, convert, copy, create, crosscheck, delete, drop, duplicate, exit, flashback, grant, host, import, list, mount, open, print, quit, recover, register, release, repair, replace, report, reset, restore, resync, revoke, run, send, set, show, shutdown, spool, sql, startup, switch, transport, unregister, upgrade, validate, {, " RMAN-01007: at line 0 column 3 file: standard input [[email protected] onlinelog]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Mon Oct 12 16:31:51 2015 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select sal from scott.emp; SAL ---------- 840 1640 1290 3015 1290 2890 2490 3040 5040 1540 1140 SAL ---------- 990 3040 1340 14 rows selected. |
4 附
connect target / |
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2; new RMAN configuration parameters: CONFIGURE RETENTION POLICY TO REDUNDANCY 2; new RMAN configuration parameters are successfully stored RMAN> run { 2> allocate channel d1 device type disk; backup full 3> 4> 5> format ‘/data2/backup/%d_%s_%p_%t.db‘ 6> tag dbfull 7> database; 8> sql ‘alter system archive log current‘; 9> backup archivelog all 10> format ‘/data2/backup/%d_%s_%p_%t.arch‘ 11> tag dbarch; 12> backup spfile 13> format ‘/data2/backup/%d_%s_%p_%t.spfile‘ 14> tag dbspfile; 15> backup 16> format ‘/data2/backup/%d_%s_%p_%t.ctl‘ 17> tag dbctl 18> current controlfile; 19> release channel d1; 20> } RMAN>crosscheck backup; RMAN>delete noprompt expired backup; RMAN>delete noprompt obsolete; |