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;

 

posted @ 2020-02-28 21:28  piaoyang  阅读(321)  评论(0)    收藏  举报