RMAN备份与恢复

原创 2011年01月18日 16:48:00

RMAN很灵活,备份和还原数据库的方法细节有很多,以下只记录比较基础的用rman进行数据库备份与恢复的步骤。

 

一、系统环境

 

操作系统:Solaris 10   SunOS 5.10

数据库:Oracle10g   Enterprise Edition Release 10.2.0.2.0

 

二、备份准备

1、启动归档模式

 

    启动归档模式不是必须的,但是如果不启动归档模式,在还恢复数据库的时候就只能恢复到备份点的数据,在备份点到数据库损坏时刻的数据将丢失。

    (归档模式的设置参考: http://blog.csdn.net/lezerger/archive/2011/01/13/6135364.aspx

 

2、进入RMAN

 

$rman target sys/sys@IRP_192.168.0.120

(未使用恢复目录)

 

3、配置RMAN参数

 

(1)配置备份保留时间,设置为基于时间:7天(周日执行0级备份,周三执行1级备份,其他时间执行2级备份)

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;

 

(2)配置IO设备类型,采用默认:磁盘(DISK)

RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;

 

(3)配置备份优化,采用默认:OFF

RMAN> CONFIGURE BACKUP OPTIMIZATION OFF;

 

(4)配置控制文件自动备份,采用默认:OFF

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP OFF;

 

(5)配置并行备份,采用默认:1

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 1;

 

三、备份数据库

 

1、对全库进行0级备份,存放路径为/oracle/backup/,文件名为IRP_0_YYYYMMDD_唯一号

 

RMAN> BACKUP INCREMENTAL LEVEL=0 DATABASE FORMAT '/oracle/backup/IRP_0_%T_%u';

 

2、备份控制文件,存放路径为/oracle/backup/,文件名为CTL_YYYYMMDD_唯一号

 

RMAN> BACKUP CURRENT CONTROLFILE FORMAT '/oracle/backup/CTL_%T_%u';

 

3、备份归档日志文件,备份完成后删除已备份的归档,存放路径为/oracle/backup/,文件名为ARC_YYYYMMDD_唯一号

 

RMAN> BACKUP ARCHIVELOG ALL DELETE ALL INPUT FORMAT '/oracle/backup/ARC_%T_%u';

 

4、对全库进行2级备份,存放路径为/oracle/backup/,文件名为IRP_2_YYYYMMDD_唯一号

 

RMAN> BACKUP INCREMENTAL LEVEL=2 DATABASE FORMAT '/oracle/backup/IRP_2_%T_%u';

 

5、对全库进行1级备份,存放路径为/oracle/backup/,文件名为IRP_1_YYYYMMDD_唯一号

 

RMAN> BACKUP INCREMENTAL LEVEL=1 DATABASE FORMAT '/oracle/backup/IRP_1_%T_%u';

 

四、查看备份信息

 

1、列出数据库中所有文件的备份信息

 

RMAN> LIST BACKUP OF DATABASE;

 

2、列出指定表空间的备份信息

 

RMAN> LIST COPY OF TABLESPACE 'SYSTEM';

 

3、列出指定数据文件的备份信息

 

RMAN> LIST BACKUP OF DATAFILE ‘/oracle/u02/oradata/GLOBAL_ONECARD.DAT’;

或者

RMAN> LIST BACKUP OF DATAFILE 5;

 

4、列出控制文件的备份信息

 

RMAN> LIST BACKUP OF CONTROLFILE;

 

5、列出归档日志文件的备份信息

 

RMAN> LIST BACKUP OF ARCHIVELOG ALL;

 

6、列出可废弃的备份

 

RMAN> REPORT OBSOLETE;

 

五、恢复数据库

 

1、对数据库进行完全介质恢复

 

(1)启动数据库到加载状态

RMAN> SHUTDOWN IMMEDIATE;

RMAN> STARTUP MOUNT;

 

(2)执行恢复操作

RMAN> RESTORE DATABASE SKIP TABLESPACE TEMP;

RMAN> RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;

 

注意:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的,作用如下:
DELETE ARCHIVELOGS:表示RMAN将在完成恢复过程后自动删除那些在恢复过程中修复的归档日志文件。
SKIP TABLESPACE:跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的。

(3)打开数据库,完成恢复

RMAN> ALTER DATABASE OPEN;

 

2、对指定数据文件进行恢复

 

(1)启动数据库到加载状态

RMAN> SHUTDOWN IMMEDIATE;

RMAN> STARTUP MOUNT;

 

(2)查询哪些数据文件需要恢复,FILE#即为文件编号

SQL> select * from v$recover_file;

 

FILE# ONLINE ERROR CHANGE# TIME
---------- ------- ------------------ ---------- -----------
5        ONLINE FILE NOT FOUND 0
6        ONLINE FILE NOT FOUND 0

 

(3)设置要恢复的文件为脱机

RMAN> SQL 'alter database datafile 5 offline drop';

RMAN> SQL 'alter database datafile 6 offline drop';

 

(4)执行恢复操作

RMAN> RESTORE DATAFILE 5;

RMAN> RESTORE DATAFILE 6;

 

RMAN> RECOVER DATAFILE 5;

RMAN> RECOVER DATAFILE 6;

 

(5)设置恢复的文件为联机

RMAN> SQL 'alter database datafile 5 online';

RMAN> SQL 'alter database datafile 6 online';

 

(6)打开数据库,完成恢复

RMAN> ALTER DATABASE OPEN;

 

注:以上(3)至(5)步骤也可放在run中达到批量执行的目的:

RMAN> run{

2> SQL 'alter database datafile 5 offline drop';

3> SQL 'alter database datafile 6 offline drop';

4> RESTORE DATAFILE 5;

5> RESTORE DATAFILE 6;

6> RECOVER DATAFILE 5;

7> RECOVER DATAFILE 6;

8> SQL 'alter database datafile 5 online';

9> SQL 'alter database datafile 6 online';

10>}

 

3、对归档文件进行恢复

 

(预留位置,待补)

 

4、对控制文件进行恢复

 

(预留位置,待补)

 

5、删除已过期备份

 

RMAN> DELETE OBSOLETE;

 

六、建立自动备份机制

 

1、制定自动备份策略

 

(1)备份时间为每天凌晨1点

(2)每周日对数据库进行0级(全库)备份、归档文件备份、控制文件备份,备份完成后删除过期备份

(3)每周一对数据库进行2级(增量)备份

(4)每周二对数据库进行2级(增量)备份

(5)每周三对数据库进行1级(累计)备份、归档文件备份、控制文件备份

(6)每周四对数据库进行2级(增量)备份

(7)每周五对数据库进行2级(增量)备份

(8)每周六对数据库进行2级(增量)备份

 

2、编写自动备份脚本

 

(1)编写周日备份脚本

 

$vi /oracle/BackupScript/SunDay

 

#connect database

#log of rman saved in '/oracle/BackupScript/logs/RMAN_yyyymmdd.txt'
connect target sys/sys@IRP_192.168.0.120
#start backup database in 0 level
run{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
BACKUP CURRENT CONTROLFILE FORMAT '/oracle/u01/app/oracle/flash_recovery_area/IRP/backupset/CTL_%T_%u';
BACKUP INCREMENTAL LEVEL=0 DATABASE FORMAT '/oracle/u01/app/oracle/flash_recovery_area/IRP/backupset/IRP_0_%T_%u';
sql 'alter system archive log current';
BACKUP ARCHIVELOG ALL DELETE ALL INPUT FORMAT '/oracle/u01/app/oracle/flash_recovery_area/IRP/backupset/ARC_%T_%u';
DELETE OBSOLETE;
}

 

(2)编写周三备份脚本

 

$vi /oracle/BackupScript/Wednesday

 

#connect database

#log of rman saved in '/oracle/BackupScript/logs/RMAN_yyyymmdd.txt'
connect target sys/sys@IRP_192.168.0.120
#start backup database in 1 level
run{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
BACKUP CURRENT CONTROLFILE FORMAT '/oracle/u01/app/oracle/flash_recovery_area/IRP/backupset/CTL_%T_%u';
BACKUP INCREMENTAL LEVEL=1 DATABASE FORMAT '/oracle/u01/app/oracle/flash_recovery_area/IRP/backupset/IRP_1_%T_%u';
sql 'alter system archive log current';
BACKUP ARCHIVELOG ALL DELETE ALL INPUT FORMAT '/oracle/u01/app/oracle/flash_recovery_area/IRP/backupset/ARC_%T_%u';
}

 

(3)编写平日(除周日、周三外)备份脚本

 

$vi /oracle/BackupScript/everyday

 

#connect database

#log of rman saved in '/oracle/BackupScript/logs/RMAN_yyyymmdd.txt'
connect target sys/sys@IRP_192.168.0.120

#start backup database in 2 level
run{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
BACKUP INCREMENTAL LEVEL=2 DATABASE FORMAT '/oracle/u01/app/oracle/flash_recovery_area/IRP/backupset/IRP_2_%T_%u';
}

 

(4)编写操作系统作业每天执行的脚本,此脚本根据当前日期自动判断该执行哪个备份脚本并执行

 

$vi /oracle/BackupScript/BackUp

 

#!/bin/bash
now=`date "+%w"`
if [ "$now" = 0 ]; then
su - oracle -c "rman cmdfile=/oracle/BackupScript/SunDay msglog=/oracle/BackupScript/logs/RMAN_`date "+%Y%m%d"`.txt"
elif [ "$now" = 3 ]; then
su - oracle -c "rman cmdfile=/oracle/BackupScript/Wednesday msglog=/oracle/BackupScript/logs/RMAN_`date "+%Y%m%d"`.txt"
else
su - oracle -c "rman cmdfile=/oracle/BackupScript/everyday msglog=/oracle/BackupScript/logs/RMAN_`date "+%Y%m%d"`.txt"
fi

 

(5)编译脚本,赋予可执行的权限

 

$ chmod +x /oracle/BackupScript/SunDay

$ chmod +x /oracle/BackupScript/Wednesday

$ chmod +x /oracle/BackupScript/everyday

$ chmod +x /oracle/BackupScript/BackUp

 

(6)为操作系统创建每天执行的任务计划

$ EDITOR=vi

$ export EDITOR

$ crontab -e

 

00 01 * * * /oracle/BackupScript/BackUp

 

保存退出后即完成。

Oracle数据库备份与恢复 - RMAN备份

如果要说DBA工作中最重要的职责(没有之一),那无疑就是保证客户数据的安全和完整,可以看到几乎任何一本Oracle DBA的技术书籍一定都会把大篇幅来介绍数据库的备份与恢复,从中也可以看到备份和恢复的...
  • pan_tian
  • pan_tian
  • 2015年07月05日 23:10
  • 4174

Oracle数据库备份与恢复 - RMAN恢复

RMAN恢复原理首先还是得理解Oracle数据库恢复的一个原理。数据库恢复是指将数据库恢复到一个一致性的状态,整个恢复操作可以分为两个步骤,数据库修复(RESTORE)和恢复(RECOVER)。Ora...
  • pan_tian
  • pan_tian
  • 2015年07月15日 17:16
  • 6902

ORACLE 11G 中采用rman备份异机恢复数据库详细过程

场景:        有一个生产库的用户下面所有的表都不见了,怀疑人为被删除了,现在需要用备份去恢复下,找出原来的表,线上是oracle dataguard环境,有全库备份文件,准备去测试库恢复一下。...
  • mchdba
  • mchdba
  • 2015年02月03日 16:29
  • 7433

oracle 10g rman 备份与恢复 之一

播布客海明老师第一讲和第二讲笔记 rman 10g备份与恢复 海明老实第一讲 一、recovery management(恢复管理器) rman可以连接数据库的类型 1、target dat...
  • yujin2010good
  • yujin2010good
  • 2013年04月20日 15:50
  • 1784

Oracle的rman备份与恢复

1、开启归档模式 查看是否处于归档模式 SQL> archive log list Database log mode             No Archive Mode Automatic ...
  • fly43108622
  • fly43108622
  • 2015年11月27日 16:03
  • 3928

RMAN异地恢复

源服务器和目标服务器的操作系统,oracle版本均为11.2.0.4.0 - 64bit 源服务器:192.168.1.9 目的服务器:192.168.1.10,只需要安装oracle软件即可,不需要...
  • tchic
  • tchic
  • 2016年09月23日 18:47
  • 1735

ORACLE11G RMAN备份恢复到异机数据库

orapwd file='/u01/app/oracle/product/11.2.0.4/db_1/dbs/orapwprb' password=oracle entries=10 force=y ...
  • xiegh2014
  • xiegh2014
  • 2016年08月17日 17:28
  • 1717

oracle rman 增量备份完整恢复测试

RMAN备份 sql*plus与操作系统命令行切换 linux:用!符号 window:sql>到c:>用host命令,c:>到sql>用exit。 RMAN备份模式:全备、增量备份、冷备、热备。 ...
  • cherish1forever
  • cherish1forever
  • 2013年09月07日 15:49
  • 4089

RMAN备份和恢复命令总结

RMAN备份和恢复命令总结: 备份: Backup 有增量,copy 没有增量。 0,所有的使用的数据块,是基石 1—4 增量级别,备份 1c---4c 累积增量,备份 通过增量的...
  • zhaoyangyao888
  • zhaoyangyao888
  • 2015年12月20日 11:47
  • 1500

12C CDB模式下RMAN备份与恢复

12C 的RMAN和Oracle Enterprise Manager Cloud Control工具支持多租户环境下的备份和恢复,RMAN可以连接到目标数据库、Data Guard、辅助实例或辅助...
  • wenzhongyan
  • wenzhongyan
  • 2016年07月12日 11:22
  • 2671
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:RMAN备份与恢复
举报原因:
原因补充:

(最多只允许输入30个字)