本文共 17937 字,大约阅读时间需要 59 分钟。
第十一章: RMAN 备份与恢复
----------------非归档模式 RMAN 备份恢复
一、查看测试环境[oracle@oracle ~]$ !sql
sqlplus '/as sysdba'SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:40:15 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
08:40:17 SQL> startup
ORACLE instance started.Total System Global Area 251658240 bytes
Fixed Size 1218820 bytes Variable Size 201328380 bytes Database Buffers 46137344 bytes Redo Buffers 2973696 bytes Database mounted. Database opened. 08:40:42 SQL> show parameter nameNAME TYPE VALUE
------------------------------------ ----------- ------------------------------ db_file_name_convert string db_name string lx01 db_unique_name string lx01 global_names boolean FALSE instance_name string lx01 lock_name_space string log_file_name_convert string service_names string lx01 08:41:29 SQL> !clear 08:41:45 SQL> archive log list; Database log mode No Archive Mode Automatic archival Disabled Archive destination /disk4/arch/lx01 Oldest online log sequence 1 Current log sequence 3 08:41:57 SQL> show parameter nameNAME TYPE VALUE
------------------------------------ ----------- ------------------------------ db_file_name_convert string db_name string lx01 db_unique_name string lx01 global_names boolean FALSE instance_name string lx01 lock_name_space string log_file_name_convert string service_names string lx01 08:42:10 SQL> select * from v$log;GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- 1 1 1 10485760 2 NO INACTIVE 1278963 2011-07-22 12:00:15 4 1 0 10485760 2 YES UNUSED 0 3 1 3 10485760 2 NO CURRENT 1321065 2011-07-28 08:40:32 2 1 2 10485760 2 NO INACTIVE 1300729 2011-07-28 08:20:0608:42:42 SQL> select name from v$datafile;
NAME
------------------------------------------------------------------------------------------------------------------------------------------------------ /u01/app/oracle/oradata/lx01/system01.dbf /u01/app/oracle/oradata/lx01/rtbs01.dbf /u01/app/oracle/oradata/lx01/sysaux01.dbf /u01/app/oracle/oradata/lx01/user01.dbf /u01/app/oracle/oradata/lx01/small_undo01.dbf /u01/app/oracle/oradata/lx01/test01.dbf /u01/app/oracle/oradata/lx01/users02.dbf /u01/app/oracle/oradata/lx01/undo01.dbf /u01/app/oracle/oradata/lx01/indexes01.dbf9 rows selected.
[oracle@oracle ~]$ !sql
sqlplus '/as sysdba'SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:45:39 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options08:45:39 SQL> conn scott/tiger
Connected. 08:45:41 SQL> select * from tab;TNAME TABTYPE CLUSTERID
------------------------------ ------- ---------- ADMIN_EXT_EMPLOYEES TABLE SYS_TEMP_FBT TABLE BONUS TABLE DEPT TABLE EMP TABLE EMP_EXT TABLE EXCEPTIONS TABLE SALGRADE TABLE EMP1 TABLE TEST TABLE10 rows selected.
二、利用rman备份
RMAN> run {
2> shutdown immediate; 3> startup mount; 4> backup database format='/disk4/rman/lx/%d_%s.bak'; 5> alter database open; 6> }database closed
database dismounted Oracle instance shut downconnected to target database (not started)
Oracle instance started database mountedTotal System Global Area 251658240 bytes
Fixed Size 1218820 bytes
Variable Size 201328380 bytes Database Buffers 46137344 bytes Redo Buffers 2973696 bytesStarting backup at 22-JUL-11
allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=37 devtype=DISK channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset input datafile fno=00001 name=/u01/app/oracle/oradata/lx01/system01.dbf input datafile fno=00002 name=/u01/app/oracle/oradata/lx01/rtbs01.dbf input datafile fno=00003 name=/u01/app/oracle/oradata/lx01/sysaux01.dbf input datafile fno=00004 name=/u01/app/oracle/oradata/lx01/user01.dbf input datafile fno=00010 name=/u01/app/oracle/oradata/lx01/undo01.dbf input datafile fno=00006 name=/u01/app/oracle/oradata/lx01/test01.dbf input datafile fno=00007 name=/u01/app/oracle/oradata/lx01/users02.dbf input datafile fno=00011 name=/u01/app/oracle/oradata/lx01/indexes01.dbf input datafile fno=00005 name=/u01/app/oracle/oradata/lx01/small_undo01.dbf channel ORA_DISK_1: starting piece 1 at 22-JUL-11 channel ORA_DISK_1: finished piece 1 at 22-JUL-11 piece handle=/disk4/rman/lx/LX01_115.bak tag=TAG20110722T114920 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:35 Finished backup at 22-JUL-11Starting Control File and SPFILE Autobackup at 22-JUL-11
piece handle=/disk4/recovery/lx01/LX01/autobackup/2011_07_22/o1_mf_s_757165750_72m71539_.bkp comment=NONE Finished Control File and SPFILE Autobackup at 22-JUL-11database opened
RMAN> list backup;
List of Backup Sets ===================BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ --------------- 111 Full 319.06M DISK 00:00:29 22-JUL-11 BP Key: 111 Status: AVAILABLE Compressed: NO Tag: TAG20110722T114920 Piece Name: /disk4/rman/lx/LX01_115.bak List of Datafiles in backup set 111 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/system01.dbf 2 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/rtbs01.dbf 3 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/sysaux01.dbf 4 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/user01.dbf 5 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/small_undo01.dbf 6 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/test01.dbf 7 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/users02.dbf 10 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/undo01.dbf 11 Full 1278135 22-JUL-11 /u01/app/oracle/oradata/lx01/indexes01.dbfBS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ --------------- 112 Full 7.27M DISK 00:00:01 22-JUL-11 BP Key: 112 Status: AVAILABLE Compressed: NO Tag: TAG20110722T114956 Piece Name: /disk4/recovery/lx01/LX01/autobackup/2011_07_22/o1_mf_s_757165750_72m71539_.bkp Control File Included: Ckp SCN: 1278135 Ckp time: 22-JUL-11 SPFILE Included: Modification time: 22-JUL-11三、模拟测试环境
08:45:48 SQL> select * from test order by 1;
ID
---------- 1 2 3 4 5 6 7 88 rows selected.
08:45:53 SQL> conn /as sysdba
Connected. 08:46:01 SQL> select * from v$log;GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- 1 1 1 10485760 2 NO INACTIVE 1278963 2011-07-22 12:00:15 4 1 4 10485760 2 NO CURRENT 1321633 2011-07-28 08:45:01 3 1 3 10485760 2 NO ACTIVE 1321065 2011-07-28 08:40:32 2 1 2 10485760 2 NO INACTIVE 1300729 2011-07-28 08:20:0608:46:06 SQL> insert into scott.test values (9);
1 row created.
08:46:17 SQL> insert into scott.test values (10);
1 row created.
08:46:20 SQL> commit;
Commit complete.
08:46:21 SQL> alter system switch logfile;
System altered.
08:46:25 SQL> /
System altered.
08:46:27 SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- 1 1 5 10485760 2 NO ACTIVE 1321688 2011-07-28 08:46:25 4 1 4 10485760 2 NO ACTIVE 1321633 2011-07-28 08:45:01 3 1 3 10485760 2 NO ACTIVE 1321065 2011-07-28 08:40:32 2 1 6 10485760 2 NO CURRENT 1321690 2011-07-28 08:46:2708:46:31 SQL> insert into scott.test values (11);
1 row created.
08:46:48 SQL> insert into scott.test values (12);
1 row created.
08:46:50 SQL> commit;
Commit complete.
08:46:51 SQL> alter system switch logfile;
System altered.
08:46:56 SQL> /
System altered.
08:47:02 SQL> /
System altered.
08:47:03 SQL> /
System altered.
08:47:05 SQL> select * from v$log;
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- 1 1 9 10485760 2 NO INACTIVE 1321706 2011-07-28 08:47:03 4 1 8 10485760 2 NO INACTIVE 1321704 2011-07-28 08:47:02 3 1 7 10485760 2 NO INACTIVE 1321702 2011-07-28 08:46:56 2 1 10 10485760 2 NO CURRENT 1321708 2011-07-28 08:47:05/
GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ------------------- 1 1 9 10485760 2 NO INACTIVE 1321706 2011-07-28 08:47:03 4 1 8 10485760 2 NO INACTIVE 1321704 2011-07-28 08:47:02 3 1 7 10485760 2 NO INACTIVE 1321702 2011-07-28 08:46:56 2 1 10 10485760 2 NO CURRENT 1321708 2011-07-28 08:47:0508:47:13 SQL> alter system switch logfile;
System altered.
08:47:16 SQL> select * from scott.test;
ID
---------- 6 7 8 1 2 3 4 5 9 10 11 1212 rows selected.
08:47:22 SQL> shutdown abort
ORACLE instance shut down. 08:47:41 SQL> ! [oracle@oracle ~]$ [oracle@oracle ~]$ rm /u01/app/oracle/oradata/lx01/*.dbf[oracle@oracle ~]$ sqlplus '/as sysdba'
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:50:16 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to an idle instance.
08:50:16 SQL> startup
ORACLE instance started.Total System Global Area 251658240 bytes
Fixed Size 1218820 bytes Variable Size 201328380 bytes Database Buffers 46137344 bytes Redo Buffers 2973696 bytes Database mounted. ORA-01157: cannot identify/lock data file 1 - see DBWR trace file ORA-01110: data file 1: '/u01/app/oracle/oradata/lx01/system01.dbf' 08:50:25 SQL> select file# ,error from v$recover_file;FILE# ERROR
---------- ----------------------------------------------------------------- 1 FILE NOT FOUND 2 FILE NOT FOUND 3 FILE NOT FOUND 4 FILE NOT FOUND 5 FILE NOT FOUND 6 FILE NOT FOUND 7 FILE NOT FOUND 10 FILE NOT FOUND 11 FILE NOT FOUND9 rows selected.
08:50:37 SQL> exit
ERROR: ORA-03135: connection lost contact Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options (with complications)四、用rman restore database
08:52:45 SQL> select dbid from v$database;
DBID
---------- 155964305208:54:04 SQL>
RMAN> list backup;using target database control file instead of recovery catalog
List of Backup Sets
===================BS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ --------------- 113 Full 142.50M DISK 00:00:26 28-JUL-11 BP Key: 113 Status: AVAILABLE Compressed: NO Tag: TAG20110728T084406 Piece Name: /disk4/rman/lx/lx01_118_757673047.bak List of Datafiles in backup set 113 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/system01.dbf 5 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/small_undo01.dbf 10 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/undo01.dbf 11 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/indexes01.dbfBS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ --------------- 114 Full 176.95M DISK 00:00:34 28-JUL-11 BP Key: 114 Status: AVAILABLE Compressed: NO Tag: TAG20110728T084406 Piece Name: /disk4/rman/lx/lx01_119_757673047.bak List of Datafiles in backup set 114 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 2 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/rtbs01.dbf 3 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/sysaux01.dbf 4 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/user01.dbf 6 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/test01.dbf 7 Full 1321454 28-JUL-11 /u01/app/oracle/oradata/lx01/users02.dbfBS Key Type LV Size Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ --------------- 115 Full 7.27M DISK 00:00:01 28-JUL-11 BP Key: 115 Status: AVAILABLE Compressed: NO Tag: TAG20110728T084443 Piece Name: /disk4/recovery/lx01/LX01/autobackup/2011_07_28/o1_mf_s_757673037_732pfw39_.bkp Control File Included: Ckp SCN: 1321454 Ckp time: 28-JUL-11 SPFILE Included: Modification time: 22-JUL-11RMAN> shutdown
database dismounted
Oracle instance shut downRMAN> startup nomount
connected to target database (not started)
Oracle instance startedTotal System Global Area 251658240 bytes
Fixed Size 1218820 bytes
Variable Size 201328380 bytes Database Buffers 46137344 bytes Redo Buffers 2973696 bytesRMAN> set dbid=1559643052;
executing command: SET DBID
RMAN> restore controlfile from '/disk4/recovery/lx01/LX01/autobackup/2011_07_28/o1_mf_s_757673037_732pfw39_.bkp';
Starting restore at 28-JUL-11
allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=36 devtype=DISKchannel ORA_DISK_1: restoring control file
channel ORA_DISK_1: restore complete, elapsed time: 00:00:02 output filename=/disk1/lx01/oradata/control01.ctl output filename=/disk1/lx01/oradata/control02.ctl output filename=/disk2/lx01/oradata/control03.ctl Finished restore at 28-JUL-11RMAN> alter database mount;
database mounted
released channel: ORA_DISK_1RMAN> restore database;
Starting restore at 28-JUL-11
Starting implicit crosscheck backup at 28-JUL-11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=36 devtype=DISK Crosschecked 2 objects Finished implicit crosscheck backup at 28-JUL-11Starting implicit crosscheck copy at 28-JUL-11
using channel ORA_DISK_1 Finished implicit crosscheck copy at 28-JUL-11searching for all files in the recovery area
cataloging files... cataloging doneList of Cataloged Files
======================= File Name: /disk4/recovery/lx01/LX01/autobackup/2011_07_28/o1_mf_s_757673037_732pfw39_.bkpusing channel ORA_DISK_1
skipping datafile 1; already restored to file /u01/app/oracle/oradata/lx01/system01.dbf
skipping datafile 5; already restored to file /u01/app/oracle/oradata/lx01/small_undo01.dbf skipping datafile 10; already restored to file /u01/app/oracle/oradata/lx01/undo01.dbf skipping datafile 11; already restored to file /u01/app/oracle/oradata/lx01/indexes01.dbf skipping datafile 2; already restored to file /u01/app/oracle/oradata/lx01/rtbs01.dbf skipping datafile 3; already restored to file /u01/app/oracle/oradata/lx01/sysaux01.dbf skipping datafile 4; already restored to file /u01/app/oracle/oradata/lx01/user01.dbf skipping datafile 6; already restored to file /u01/app/oracle/oradata/lx01/test01.dbf skipping datafile 7; already restored to file /u01/app/oracle/oradata/lx01/users02.dbf restore not done; all files readonly, offline, or already restored Finished restore at 28-JUL-11五、查看restore 结果
[oracle@oracle ~]$ !sql sqlplus '/as sysdba'SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jul 28 08:52:15 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options08:52:16 SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------ 132145408:52:31 SQL> select checkpoint_change#,file# from v$datafile;
CHECKPOINT_CHANGE# FILE#
------------------ ---------- 1321454 1 1321454 2 1321454 3 1321454 4 1321454 5 1321454 6 1321454 7 1321454 10 1321454 119 rows selected.
08:52:38 SQL> select checkpoint_change#,file# from v$datafile_header;CHECKPOINT_CHANGE# FILE#
------------------ ---------- 1321454 1 1321454 2 1321454 3 1321454 4 1321454 5 1321454 6 1321454 7 1321454 10 1321454 119 rows selected.
六、用rman 进行恢复
RMAN> recover database;
Starting recover at 28-JUL-11
using channel ORA_DISK_1starting media recovery
archive log thread 1 sequence 8 is already on disk as file /disk1/lx01/oradata/redo04b.log
archive log thread 1 sequence 9 is already on disk as file /disk1/lx01/oradata/redo01b.log archive log thread 1 sequence 10 is already on disk as file /disk1/lx01/oradata/redo02b.log archive log thread 1 sequence 11 is already on disk as file /disk1/lx01/oradata/redo03b.log unable to find archive log archive log thread=1 sequence=3 RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of recover command at 07/28/2011 08:59:30 RMAN-06054: media recovery requesting unknown log: thread 1 seq 3 lowscn 1321454RMAN> alter database open;
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 07/28/2011 08:59:57 ORA-01589: must use RESETLOGS or NORESETLOGS option for database openRMAN> alter database open resetlogs;
database opened
RMAN>
alter_lx01.log 告警日志信息:
alter database mount
Thu Jul 28 08:58:15 2011 Setting recovery target incarnation to 20 Thu Jul 28 08:58:15 2011 Successful mount of redo thread 1, with mount id 1560169571 Thu Jul 28 08:58:15 2011 Database mounted in Exclusive Mode Completed: alter database mount Thu Jul 28 08:59:29 2011 alter database recover datafile list clear Thu Jul 28 08:59:29 2011 Completed: alter database recover datafile list clear Thu Jul 28 08:59:29 2011 alter database recover datafile list 1 , 2 , 3 , 4 , 5 , 6 , 7 , 10 , 11 Completed: alter database recover datafile list 1 , 2 , 3 , 4 , 5 , 6 , 7 , 10 , 11 Thu Jul 28 08:59:29 2011 alter database recover if needed start until cancel using backup controlfile Media Recovery Start ORA-279 signalled during: alter database recover if needed start until cancel using backup controlfile ... Thu Jul 28 08:59:29 2011 alter database recover cancel Thu Jul 28 08:59:30 2011 Media Recovery Canceled Completed: alter database recover cancel