oracle RMAN备份还原
A机:
操作系统:Windows 10
ORACLE安装目录:C:\app\admin\product\11.2.0
日志归档模式:非归档
B机:
操作系统:Windows 2016
ORACLE安装目录:C:\app\admin\product\11.2.0
日志归档模式:非归档
A机备份
1.Log into RMAN
cd C:\app\admin\product\11.2.0\dbhome_1\BIN
C:\app\admin\product\11.2.0\dbhome_1\BIN>rman target /
2.Shutdown immediate from RMAN。非归档模式备份,需要把数据库切换到mount状态
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP FORCE DBA;
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
3.backup database。全库备份到目录D:\share\oracle_backup\
RMAN> backup database format 'D:\share\oracle_backup\whole_%d_%U';
备份文件如下
大的是数据文件
小的是参数文件和控制文件

4.alter database open。打开数据库
RMAN> ALTER DATABASE OPEN;
B机恢复
数据库在nomount状态下恢复
1.创建口令文件
C:\app\admin\product\11.2.0\dbhome_1\BIN>orapwd file=C:\app\admin\product\11.2.0\dbhome_1\dbs\orapworcl password=oracle
2.恢复参数文件(参数文件在whole文件下)
在rman下把数据库切换到nomount状态
C:\app\admin\product\11.2.0\dbhome_1\BIN>rman target /
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP FORCE DBA;
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP NOMOUNT;
RMAN> restore spfile from 'C:\oracle_backup\WHOLE_ORCL_04UPLVEA_1_1';
出现如下问题

出现RMAN-06564错误码,说明数据库已经使用SPFILE启动,在恢复SPFILE时就不能恢复到默认位置,因此rman要求通过to语句指定到其他位置,故解决办法如下
RMAN> restore spfile to 'C:\app\admin\product\11.2.0\dbhome_1\dbs\SPFILE0001.ORA' from 'C:\oracle_backup\WHOLE_ORCL_04UPLVEA_1_1';

mv C:\app\admin\product\11.2.0\dbhome_1\dbs\SPFILE0001.ORA C:\app\admin\product\11.2.0\dbhome_1\dbs\SPFILEORCL.ORA
恢复完参数文件后,要用刚恢复的参数文件启动数据库,因为默认之前是有一个参数文件启动数据库的,所以现在要切换过来
RMAN> SHUTDOWN IMMEDIATE;
sqlplus / as sysdba
startup nomount
3.恢复控制文件
C:\app\admin\product\11.2.0\dbhome_1\BIN>rman target /
RMAN> restore controlfile from 'C:\oracle_backup\WHOLE_ORCL_04UPLVEA_1_1';

4.数据库启动到mount状态
RMAN> alter database mount;
5.还原数据库
查看备份集是否存在
RMAN> list backup of database;

备份集存在:
RMAN> restore database;
备份集不存在,或者路径不正确,重新指定备份文件目录:
RMAN> catalog start with 'C:\oracle_backup';
RMAN> list backup of database;

把旧路径的内容删除。crosscheck命令:路径移动时,让oracle检查下,如果原有路径不存在,则置为过期
RMAN> crosscheck backup;
RMAN> delete expired backup;

查看新的路径是否正确

RMAN> restore database;
6.还原完成后,打开数据库
RMAN> alter database open resetlogs;

至此还原成功。
归档模式下的备份还原(以下未测试):
1.rman target /
2.全库备份
backup database format 'D:\share\oracle_backup\whole_%d_%U';
3.备份归档日志
alter system switch logfile;
backup archivelog all format 'D:\share\oracle_backup\arch_%d_%U';
4.备份控制文件
backup current controlfile format='D:\share\oracle_backup\ctl_%U_%T';
恢复
数据库在nomount状态下恢复
1.创建口令文件
orapwd file=C:\app\admin\product\11.2.0\dbhome_1\dbs\orapworcl password=oracle
2.恢复参数文件(参数文件在whole文件下)
在rman下把数据库切换到nomount状态
rman target /
startup nomount
restore spfile from '.../oracle_backup/whole_ORCL...';
恢复完参数文件后,要用刚恢复的参数文件启动数据库,因为默认之前是有一个参数文件启动数据库的,所以现在要切换过来
RMAN> SHUTDOWN IMMEDIATE;
sqlplus / as sysdba
startup nomount
3.恢复控制文件
restore controlfile from '.../whole_ORCL...';
4.数据库启动到mount状态
alter database mount
5.还原数据库
RMAN> list backup of database;
查看备份集是否存在,并加载进来
备份集存在:
RMAN> restore database;
备份集不存在,重新指定备份文件目录:
RMAN> catalog start with 'C:\oracle_backup';
RMAN> list backup of database;
RMAN> restore database;
6.恢复归档日志
查看归档日志备份集
RMAN> list backup of archivelog all;
RMAN> recover database;

浙公网安备 33010602011771号