使用RMAN进行
数据库全库备份
一.在rman下备份数据库的相关操作:
1.可以在rman下执行对DB的关闭、开启、执行从非归档到归档的转换以及数据库的打开
RMAN> shutdown immediate;
RMAN> startup mount;
RMAN> run(sql 'alter database noarchivelog';}
RMAN> run{sql 'alter database open';}
二.当数据库在非归档模式下的备份与恢复如下:
1.RMAN> backup database format 'e:\rmanbackup\%U.bak';执行对DB的全备
启动 backup 于 04-12月-07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
输入数据文件 fno=00001 name=E:\ORACLE\ORADATA\OIC\SYSTEM01.DBF
输入数据文件 fno=00002 name=E:\ORACLE\ORADATA\OIC\UNDOTBS01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\OIC\EXAMPLE01.DBF
输入数据文件 fno=00010 name=E:\ORACLE\ORADATA\OIC\XDB01.DBF
输入数据文件 fno=00006 name=E:\ORACLE\ORADATA\OIC\INDX01.DBF
输入数据文件 fno=00009 name=E:\ORACLE\ORADATA\OIC\USERS01.DBF
输入数据文件 fno=00003 name=E:\ORACLE\ORADATA\OIC\CWMLITE01.DBF
输入数据文件 fno=00004 name=E:\ORACLE\ORADATA\OIC\DRSYS01.DBF
输入数据文件 fno=00007 name=E:\ORACLE\ORADATA\OIC\ODM01.DBF
输入数据文件 fno=00008 name=E:\ORACLE\ORADATA\OIC\TOOLS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 04-12月-07
通道 ORA_DISK_1: 已完成段 1 于 04-12月-07
段 handle=E:\RMANBACKUP\01J2P2D8_1_1.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:01:17
完成 backup 于 04-12月-07
2.然后删除掉INDX01.DBF文件,启动数据库这时会提示错误,信息如下:
RMAN> startup执行完成后DB已处于mount状态下
Oracle
例程已启动
数据库已加载
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of startup command at 12/04/2007 15:56:43
ORA-01157: 无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 6: 'E:\ORACLE\ORADATA\OIC\INDX01.DBF'
3.执行restore database命令
RMAN> restore database;执行该语句是对整个数据库进行修复
启动 restore 于 04-12月-07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
正在略过数据文件 1; 已恢复到文件 E:\ORACLE\ORADATA\OIC\SYSTEM01.DBF
正在略过数据文件 2; 已恢复到文件 E:\ORACLE\ORADATA\OIC\UNDOTBS01.DBF
正在略过数据文件 3; 已恢复到文件 E:\ORACLE\ORADATA\OIC\CWMLITE01.DBF
正在略过数据文件 4; 已恢复到文件 E:\ORACLE\ORADATA\OIC\DRSYS01.DBF
正在略过数据文件 5; 已恢复到文件 E:\ORACLE\ORADATA\OIC\EXAMPLE01.DBF
正在略过数据文件 7; 已恢复到文件 E:\ORACLE\ORADATA\OIC\ODM01.DBF
正在略过数据文件 8; 已恢复到文件 E:\ORACLE\ORADATA\OIC\TOOLS01.DBF
正在略过数据文件 9; 已恢复到文件 E:\ORACLE\ORADATA\OIC\USERS01.DBF
正在略过数据文件 10; 已恢复到文件 E:\ORACLE\ORADATA\OIC\XDB01.DBF
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00006恢复到E:\ORACLE\ORADATA\OIC\INDX01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=E:\RMANBACKUP\01J2P2D8_1_1.BAK tag=TAG20071204T153712 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 04-12月-07
4.执行recover database命令
RMAN> recover database;
启动 recover 于 04-12月-07
使用通道 ORA_DISK_1
正在开始介质的恢复
完成介质的恢复
完成 recover 于 04-12月-07
5.启动DB
RMAN> run {sql 'alter database open';}
三.在非归档模式下要注意的几点:
1.DB应该是在mount状态下,否则会出现如下的错误信息
RMAN> backup database format 'e:\';
启动 backup 于 04-12月-07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 12/04/2007 15:11:32
ORA-19602: 无法按 NOARCHIVELOG 模式备份或复制活动文件
四.在归档模式下的整个数据库的备份与恢复
1.RMAN> backup database format 'e:\rmanbackup\%u.bak';在执行时DB为mount状态
启动 backup 于 04-12月-07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在启动 full 数据文件备份集
通道 ORA_DISK_1: 正在指定备份集中的数据文件
在备份集中包含当前的 SPFILE
备份集中包括当前控制文件
输入数据文件 fno=00001 name=E:\ORACLE\ORADATA\OIC\SYSTEM01.DBF
输入数据文件 fno=00002 name=E:\ORACLE\ORADATA\OIC\UNDOTBS01.DBF
输入数据文件 fno=00005 name=E:\ORACLE\ORADATA\OIC\EXAMPLE01.DBF
输入数据文件 fno=00010 name=E:\ORACLE\ORADATA\OIC\XDB01.DBF
输入数据文件 fno=00006 name=E:\ORACLE\ORADATA\OIC\INDX01.DBF
输入数据文件 fno=00009 name=E:\ORACLE\ORADATA\OIC\USERS01.DBF
输入数据文件 fno=00003 name=E:\ORACLE\ORADATA\OIC\CWMLITE01.DBF
输入数据文件 fno=00004 name=E:\ORACLE\ORADATA\OIC\DRSYS01.DBF
输入数据文件 fno=00007 name=E:\ORACLE\ORADATA\OIC\ODM01.DBF
输入数据文件 fno=00008 name=E:\ORACLE\ORADATA\OIC\TOOLS01.DBF
通道 ORA_DISK_1: 正在启动段 1 于 04-12月-07
通道 ORA_DISK_1: 已完成段 1 于 04-12月-07
段 handle=E:\RMANBACKUP\02J2P7EN.BAK comment=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:57
完成 backup 于 04-12月-07
2.删除所有的数据文件
3.启动DB到mount状态
RMAN> startup mount
已连接到目标数据库 (未启动)
Oracle 例程已启动
数据库已加载
系统全局区域总计 135338868 字节
Fixed Size 453492 字节
Variable Size 109051904 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
4.执行restore database;执行完成后可以看到删除的数据文件又生成了
RMAN> restore database;
启动 restore 于 04-12月-07
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=13 devtype=DISK
通道 ORA_DISK_1: 正在开始恢复数据文件备份集
通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
正将数据文件00001恢复到E:\ORACLE\ORADATA\OIC\SYSTEM01.DBF
正将数据文件00002恢复到E:\ORACLE\ORADATA\OIC\UNDOTBS01.DBF
正将数据文件00003恢复到E:\ORACLE\ORADATA\OIC\CWMLITE01.DBF
正将数据文件00004恢复到E:\ORACLE\ORADATA\OIC\DRSYS01.DBF
正将数据文件00005恢复到E:\ORACLE\ORADATA\OIC\EXAMPLE01.DBF
正将数据文件00006恢复到E:\ORACLE\ORADATA\OIC\INDX01.DBF
正将数据文件00007恢复到E:\ORACLE\ORADATA\OIC\ODM01.DBF
正将数据文件00008恢复到E:\ORACLE\ORADATA\OIC\TOOLS01.DBF
正将数据文件00009恢复到E:\ORACLE\ORADATA\OIC\USERS01.DBF
正将数据文件00010恢复到E:\ORACLE\ORADATA\OIC\XDB01.DBF
通道 ORA_DISK_1: 已恢复备份段 1
段 handle=E:\RMANBACKUP\02J2P7EN.BAK tag=TAG20071204T170319 params=NULL
通道 ORA_DISK_1: 恢复完成
完成 restore 于 04-12月-07
5.recover database
RMAN> recover database;
启动 recover 于 04-12月-07
使用通道 ORA_DISK_1
正在开始介质的恢复
完成介质的恢复
完成 recover 于 04-12月-07
6.打开DB
RMAN> run{sql 'alter database open';}
sql 语句: alter database open
五.在归档模式下对表空间一级的恢复(在做恢复前已对整个数据库进行了全备)
1.关闭DB,删除user01数据文件
2.执行表空间的恢复,执行完毕后可以在E:\oracle\oradata\下看到恢复的数据文件
RMAN> run{
2> allocate channel d1 type disk;
3> set newname for datafile 'E:\oracle\oradata\OIC\USERS01.DBF' to 'E:\oracle\oradata\USERS01.DBF';
4> restore tablespace users;
5> switch datafile 9;
6> recover tablespace users;
7> alter database open;
8> release channel d1;
}
分配的通道: d1
通道 d1: sid=13 devtype=DISK
正在执行命令: SET NEWNAME
启动 restore 于 04-12月-07
通道 d1: 正在开始恢复数据文件备份集
通道 d1: 正在指定从备份集恢复的数据文件
正将数据文件00009恢复到E:\ORACLE\ORADATA\USERS01.DBF
通道 d1: 已恢复备份段 1
段 handle=E:\RMANBACKUP\02J2P7EN.BAK tag=TAG20071204T170319 params=NULL
通道 d1: 恢复完成
完成 restore 于 04-12月-07
数据文件 9 已转换成数据文件副本
输入数据文件副本 recid=33 stamp=640459891 文件名=E:\ORACLE\ORADATA\USERS01.DBF
启动 recover 于 04-12月-07
正在开始介质的恢复
完成介质的恢复
完成 recover 于 04-12月-07
数据库已打开
释放的通道: d1