十三、RMAN Complete Recovery
1、RMAN RECOVERY
RMAN> list backup;
RMAN> backup database format '/u01/backup/wb_%U';
启动 backup 于 15-8月 -11
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=139 devtype=DISK
通道 ORA_DISK_1: 启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=/home/oracle/oradata/TS/mytbs.dbf
输入数据文件 fno=00001 name=/home/oracle/oradata/TS/system01.dbf
输入数据文件 fno=00003 name=/home/oracle/oradata/TS/sysaux01.dbf
输入数据文件 fno=00005 name=/home/oracle/oradata/TS/example01.dbf
输入数据文件 fno=00007 name=/home/oracle/oradata/TS/autostrace01.dbf
输入数据文件 fno=00008 name=/home/oracle/oradata/TS/app1_01.dbf
输入数据文件 fno=00002 name=/home/oracle/oradata/TS/undotbs01.dbf
输入数据文件 fno=00009 name=/home/oracle/oradata/TS/app02_01.dbf
输入数据文件 fno=00010 name=/home/oracle/oradata/TS/app3_01.dbf
输入数据文件 fno=00004 name=/home/oracle/oradata/TS/users01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=/u01/backup/wb_06mk21ig_1_1 标记=TAG20110815T105612 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:02:28
完成 backup 于 15-8月 -11
启动 Control File and SPFILE Autobackup 于 15-8月 -11
段 handle=/u01/backup/ctl_c-2088014681-20110815-04 comment=NONE
完成 Control File and SPFILE Autobackup 于 15-8月 -11
RMAN> sql 'alter system archive log current';
RMAN>backup incremental level 0 database format '/u01/backup/all_%U';
启动 backup 于 15-8月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 0 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=/home/oracle/oradata/TS/mytbs.dbf
输入数据文件 fno=00001 name=/home/oracle/oradata/TS/system01.dbf
输入数据文件 fno=00003 name=/home/oracle/oradata/TS/sysaux01.dbf
输入数据文件 fno=00005 name=/home/oracle/oradata/TS/example01.dbf
输入数据文件 fno=00007 name=/home/oracle/oradata/TS/autostrace01.dbf
输入数据文件 fno=00008 name=/home/oracle/oradata/TS/app1_01.dbf
输入数据文件 fno=00002 name=/home/oracle/oradata/TS/undotbs01.dbf
输入数据文件 fno=00009 name=/home/oracle/oradata/TS/app02_01.dbf
输入数据文件 fno=00010 name=/home/oracle/oradata/TS/app3_01.dbf
输入数据文件 fno=00004 name=/home/oracle/oradata/TS/users01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=/u01/backup/all_08mk21u5_1_1 标记=TAG20110815T110223 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:02:09
完成 backup 于 15-8月 -11
启动 Control File and SPFILE Autobackup 于 15-8月 -11
段 handle=/u01/backup/ctl_c-2088014681-20110815-05 comment=NONE
完成 Control File and SPFILE Autobackup 于 15-8月 -11
修改一部分的数据
做一级备份:
RMAN>backup incremental level 1 database format '/u01/backup/all_%U';
启动 backup 于 15-8月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 启动增量级别 1 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
输入数据文件 fno=00006 name=/home/oracle/oradata/TS/mytbs.dbf
输入数据文件 fno=00001 name=/home/oracle/oradata/TS/system01.dbf
输入数据文件 fno=00003 name=/home/oracle/oradata/TS/sysaux01.dbf
输入数据文件 fno=00005 name=/home/oracle/oradata/TS/example01.dbf
输入数据文件 fno=00007 name=/home/oracle/oradata/TS/autostrace01.
输入数据文件 fno=00008 name=/home/oracle/oradata/TS/app1_01.dbf
输入数据文件 fno=00002 name=/home/oracle/oradata/TS/undotbs01.dbf
输入数据文件 fno=00009 name=/home/oracle/oradata/TS/app02_01.dbf
输入数据文件 fno=00010 name=/home/oracle/oradata/TS/app3_01.dbf
输入数据文件 fno=00004 name=/home/oracle/oradata/TS/users01.dbf
通道 ORA_DISK_1: 正在启动段 1 于 15-8月 -11
通道 ORA_DISK_1: 已完成段 1 于 15-8月 -11
段句柄=/u01/backup/all_0bmk226g_1_1 标记=TAG20110815T110652 注释=
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:37
完成 backup 于 15-8月 -11
启动 Control File and SPFILE Autobackup 于 15-8月 -11
段 handle=/u01/backup/ctl_c-2088014681-20110815-07 comment=NONE
完成 Control File and SPFILE Autobackup 于 15-8月 -11
RMAN>
关闭数据库
把数据文件删除
rman target /
RMAN> startup mount
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
C:\Documents and Settings\Administrator>rman target sys/sunlin@st110 nocatalog
恢复管理器: Release 10.2.0.1.0 - Production on 星期一 8月 15 11:15:10 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
已连接到目标数据库 (未启动)
RMAN> startup mount;
Oracle 实例已启动
数据库已装载
系统全局区域总计 285212672 字节
Fixed Size 1218992 字节
Variable Size 159385168 字节
Database Buffers 121634816 字节
Redo Buffers 2973696 字节
RMAN> restore database;
启动 restore 于 15-8月 -11
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=156 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到/home/oracle/oradata/TS/system01.dbf
正将数据文件00002恢复到/home/oracle/oradata/TS/undotbs01.dbf
正将数据文件00003恢复到/home/oracle/oradata/TS/sysaux01.dbf
正将数据文件00004恢复到/home/oracle/oradata/TS/users01.dbf
正将数据文件00005恢复到/home/oracle/oradata/TS/example01.dbf
正将数据文件00006恢复到/home/oracle/oradata/TS/mytbs.dbf
正将数据文件00007恢复到/home/oracle/oradata/TS/autostrace01.dbf
正将数据文件00008恢复到/home/oracle/oradata/TS/app1_01.dbf
正将数据文件00009恢复到/home/oracle/oradata/TS/app02_01.dbf
正将数据文件00010恢复到/home/oracle/oradata/TS/app3_01.dbf
通道 ORA_DISK_1: 正在读取备份段 /u01/backup/all_08mk21u5_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = /u01/backup/all_08mk21u5_1_1 标记 = TAG20110815T110223
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:30
完成 restore 于 15-8月 -11
RMAN> recover database;
启动 recover 于 15-8月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复增量数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
数据文件 00001 的恢复目标: /home/oracle/oradata/TS/system01.dbf
数据文件 00002 的恢复目标: /home/oracle/oradata/TS/undotbs01.dbf
数据文件 00003 的恢复目标: /home/oracle/oradata/TS/sysaux01.dbf
数据文件 00004 的恢复目标: /home/oracle/oradata/TS/users01.dbf
数据文件 00005 的恢复目标: /home/oracle/oradata/TS/example01.dbf
数据文件 00006 的恢复目标: /home/oracle/oradata/TS/mytbs.dbf
数据文件 00007 的恢复目标: /home/oracle/oradata/TS/autostrace01.dbf
数据文件 00008 的恢复目标: /home/oracle/oradata/TS/app1_01.dbf
数据文件 00009 的恢复目标: /home/oracle/oradata/TS/app02_01.dbf
数据文件 00010 的恢复目标: /home/oracle/oradata/TS/app3_01.dbf
通道 ORA_DISK_1: 正在读取备份段 /u01/backup/all_0bmk226g_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = /u01/backup/all_0bmk226g_1_1 标记 = TAG20110815T110652
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:02
正在开始介质的恢复
介质恢复完成, 用时: 00:00:06
完成 recover 于 15-8月 -11
RMAN> alter database open;
数据库已打开
RMAN>
2、Restore to a New Location
RMAN>startup mount;
Oracle 实例已启动
数据库已装载
系统全局区域总计 285212672 字节
Fixed Size 1218992 字节
Variable Size 171968080 字节
Database Buffers 109051904 字节
Redo Buffers 2973696 字节
RMAN> run {
2> set newname for datafile 10 to '/home/oracle/oradata/app3_01.dbf
3> restore database;
4> switch datafile all;
5> recover database;
6> alter database open;
7> }
正在执行命令: SET NEWNAME
启动 restore 于 15-8月 -11
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=155 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到/home/oracle/oradata/TS/system01.dbf
正将数据文件00002恢复到/home/oracle/oradata/TS/undotbs01.dbf
正将数据文件00003恢复到/home/oracle/oradata/TS/sysaux01.dbf
正将数据文件00004恢复到/home/oracle/oradata/TS/users01.dbf
正将数据文件00005恢复到/home/oracle/oradata/TS/example01.dbf
正将数据文件00006恢复到/home/oracle/oradata/TS/mytbs.dbf
正将数据文件00007恢复到/home/oracle/oradata/TS/autostrace01.dbf
正将数据文件00008恢复到/home/oracle/oradata/TS/app1_01.dbf
正将数据文件00009恢复到/home/oracle/oradata/TS/app02_01.dbf
正将数据文件00010恢复到/home/oracle/oradata/app3_01.dbf
通道 ORA_DISK_1: 正在读取备份段 /u01/backup/all_08mk21u5_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = /u01/backup/all_08mk21u5_1_1 标记 = TAG20110815T110223
通道 ORA_DISK_1: 恢复完成, 用时: 00:01:42
完成 restore 于 15-8月 -11
启动 recover 于 15-8月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在开始恢复增量数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
数据文件 00001 的恢复目标: /home/oracle/oradata/TS/system01.dbf
数据文件 00002 的恢复目标: /home/oracle/oradata/TS/undotbs01.dbf
数据文件 00003 的恢复目标: /home/oracle/oradata/TS/sysaux01.dbf
数据文件 00004 的恢复目标: /home/oracle/oradata/TS/users01.dbf
数据文件 00005 的恢复目标: /home/oracle/oradata/TS/example01.dbf
数据文件 00006 的恢复目标: /home/oracle/oradata/TS/mytbs.dbf
数据文件 00007 的恢复目标: /home/oracle/oradata/TS/autostrace01.dbf
数据文件 00008 的恢复目标: /home/oracle/oradata/TS/app1_01.dbf
数据文件 00009 的恢复目标: /home/oracle/oradata/TS/app02_01.dbf
数据文件 00010 的恢复目标: /home/oracle/oradata/app3_01.dbf
通道 ORA_DISK_1: 正在读取备份段 /u01/backup/all_0bmk226g_1_1
通道 ORA_DISK_1: 已恢复备份段 1
段句柄 = /u01/backup/all_0bmk226g_1_1 标记 = TAG20110815T110652
通道 ORA_DISK_1: 恢复完成, 用时: 00:00:03
正在开始介质的恢复
介质恢复完成, 用时: 00:00:12
完成 recover 于 15-8月 -11
数据库已打开
RMAN>
3、Recover a tablespace
RMAN>run {
2> sql 'alter database datafile 10 offline';
3> restore datafile 10;
4> recover datafile 10;
5> sql 'alter database datafile 10 online';
6> }
sql 语句: alter database datafile 10 offline
启动 restore 于 15-8月 -11
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复数据文件00010
输入数据文件副本 recid=84 stamp=759243181 文件名=/home/oracle/oradata/TS/app3_01
.dbf
数据文件 00010 的恢复目标: /home/oracle/oradata/app3_01.dbf
通道 ORA_DISK_1: 已复制数据文件 00010 的数据文件副本
输出文件名=/home/oracle/oradata/app3_01.dbf recid=85 stamp=759243404
完成 restore 于 15-8月 -11
启动 recover 于 15-8月 -11
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 4 已作为文件 /home/oracle/admin/TS/archdest/1_4_759233153.ar
c 存在于磁盘上
存档日志线程 1 序列 5 已作为文件 /home/oracle/admin/TS/archdest/1_5_759233153.ar
c 存在于磁盘上
存档日志线程 1 序列 6 已作为文件 /home/oracle/admin/TS/archdest/1_6_759233153.ar
c 存在于磁盘上
存档日志文件名 =/home/oracle/admin/TS/archdest/1_4_759233153.arc 线程 =1 序列 =4
介质恢复完成, 用时: 00:00:02
完成 recover 于 15-8月 -11
sql 语句: alter database datafile 10 online
RMAN>
十四、User-Managed Incomplete Recovery
1、Time-Based Recovery
Unitl Time Recovery
(1)shut down and backup
(2)Restore all datafiles
(3)Mount the database
(4)Archived log file
(5)Open with Resetlogs
(6)Backup the database
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 167773776 bytes
Database Buffers 113246208 bytes
Redo Buffers 2973696 bytes
数据库装载完毕。
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 5158908
2 5158908
3 5158908
4 5158908
5 5158908
6 5158908
7 5158908
8 5158908
9 5158908
已选择9行。
SQL> select file#,checkpoint_change# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 5158907
2 5158907
3 5158907
4 5158907
5 5158907
6 5158907
7 5158907
8 5158907
9 5158907
已选择9行。
SQL> recover database until time '2011-08-15:16:53:07';
完成介质恢复。
SQL> alter database open resetlogs;
数据库已更改。
SQL> select * from usr1.t2;
ID NAME
---------- --------------------
0 lin
1 sunlin
SQL>
2、Time-Based Recovery
创建controlfile脚本s1.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TS" RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/home/oracle/oradata/TS/redo01.log' SIZE 50M,
GROUP 2 '/home/oracle/oradata/TS/redo02.log' SIZE 50M,
GROUP 3 '/home/oracle/oradata/TS/redo03.log' SIZE 50M
DATAFILE
'/home/oracle/oradata/TS/system01.dbf',
'/home/oracle/oradata/TS/undotbs01.dbf',
'/home/oracle/oradata/TS/sysaux01.dbf',
'/home/oracle/oradata/TS/users01.dbf',
'/home/oracle/oradata/TS/example01.dbf',
'/home/oracle/oradata/TS/mytbs.dbf',
'/home/oracle/oradata/TS/autostrace01.dbf',
'/home/oracle/oradata/TS/app1_01.dbf',
'/home/oracle/oradata/TS/app02_01.dbf'
CHARACTER SET AL32UTF8
;
-- Configure RMAN configuration record 1
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP','ON');
-- Configure RMAN configuration record 2
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CHANNEL','DEVICE TYPE DISK FORMAT ''/u01/backup/md_%U''');
-- Configure RMAN configuration record 3
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE','DISK TO ''/u01/backup
/ctl_%F''');
-- Configure RMAN configuration record 4
VARIABLE RECNO NUMBER;
EXECUTE :RECNO := SYS.DBMS_BACKUP_RESTORE.SETCONFIG('DEVICE TYPE','DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET');
SQL>conn / as sysdba
Connected to an idle instance.
SQL> @/tmp/s1.sql
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 176162384 bytes
Database Buffers 104857600 bytes
Redo Buffers 2973696 bytes
Control file created.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
PL/SQL procedure successfully completed.
SQL> recover database using backup controlfile until cancel
ORA-00279: change 5175813 generated at 08/15/2011 19:20:49 needed for thread 1
ORA-00289: suggestion :
/home/oracle/flash_recovery_area/TS/archivelog/1_3_759258220.arc ----归档日志文件中有的
ORA-00280: change 5175813 for thread 1 is in sequence #3
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: change 5176755 generated at 08/15/2011 19:28:15 needed for thread 1
ORA-00289: suggestion :
/home/oracle/flash_recovery_area/TS/archivelog/1_4_759258220.arc ----归档日志文件中没有的
ORA-00280: change 5176755 for thread 1 is in sequence #4
ORA-00278: log file
'/home/oracle/flash_recovery_area/TS/archivelog/1_3_759258220.arc' no longer
needed for this recovery
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
SQL> alter database open resetlogs;
Database altered.
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/home/oracle/oradata/TS/temp01.dbf'
2 SIZE 25165824 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M;
Tablespace altered.
SQL> select * from usr1.t2;
ID NAME
---------- ----------
0 lin
1 sunlin
2 lin2
SQL>