Oracle数据库RMAN使用方法简介

一、配置RMAN
1、配置归档(ARCHIVELOG)模式
数据库在装载(MOUNT)模式下执行下列操作开启归档模式
SQL> ALTER DATABASE ARCHIVELOG;
将数据库置于归档模式可防止重做日志在归档之前被覆盖。
如果处于非归档(NOARCHIVELOG)模式,数据库只能恢复到上一次备份的时间,到当前时间的之间的数据变更都会丢失。

不用进sqlplus,直接运行rman命令就可以
通过rman连接本地数据库非常简单,以windows平台为例,进入到命令提示符界面:
C:\Documents and Settings\Administrator>set oracle_sid=jssweb
C:\Documents and Settings\Administrator>rman target / nocatalog
恢复管理器: Release 11.2.0.1.0 – Production
Copyright (c) 1982, 2009, Oracle Corporation. All rights reserved.
连接到目标数据库: JSSWEB (DBID=3391142503)
RMAN>
注:如果本地库只有一个实例,则不需要指定oracle_sid。Rman会自动连接到默认实例。
当然,也可以先启动rman,然后再通过connect来连接目标数据库,如下:
C:\Documents and Settings\Administrator>set oracle_sid=jssweb
C:\Documents and Settings\Administrator>rman
恢复管理器: Release 11.2.0.1.0 – Production
Copyright (c) 1982, 2009, Oracle Corporation. All rights reserved.
RMAN> connect target / nocatalog
连接到目标数据库: JSSWEB (DBID=3391142503)
RMAN>
如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名,同时本地的tnsname.ora文件中也必须已经建立了该网络服务名的正确配置。示例如下:
C:\Documents and Settings\Administrator>rman target sys/change@testdb
恢复管理器: Release 11.2.0.1.0 – Production
Copyright (c) 1982, 2009, Oracle Corporation. All rights reserved.
连接到目标数据库: TESTDB (DBID=2220262593)
RMAN>
当然,在这里你也可以同样先启动rman,再通过connect创建连接。具体示例与上类似

2、配置控制文件自动备份
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN的相关信息保存在控制文件中(非CATALOG模式),如果控制文件丢失而又没有备份的话,会给数据库的恢复造成很大困难

3、配置控制文件记录保持时间
SQL> ALTER SYSTEM SET CONTROL_FILE_RECORD_KEEP_TIME=45;
设置RMAN备份信息保存在控制文件中的时间,要大于等于保留策略的恢复窗口。

4、配置保留策略的恢复窗口
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 31 DAYS;
备份文件超过这个日期时RMAN会标记为已不用(OBSOLETE):
RMAN> REPORT OBSOLETE;
数据库中的文件超过这个日期时RMAN会报告需要备份:
RMAN> REPORT NEED BACKUP;

5、设定默认保存备份文件的路径
RMAN> CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT ‘D: /BACKUP/%U’

6、启用快速增量备份
在9i中,RMAN进行增量备份要扫描所有数据文件,找出发生变更的数据块,然后进行备份。
在10g中,增加了一个新特性—块更改跟踪(Block Change Tracking),会把发生变更的数据块记录在一个跟踪文件内,这样就避免了增量备份时对数据库的全面扫描。
SQL> ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE ‘D:/BACKUP/BLOCK_CHANGE_TRACKING.TRC’;

7、配置RMAN使用优化(OPTIMIZATION)模式
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
开启优化模式RMAN会自动跳过满足某些条件的文件,实验表明,优化模式可以提高10%左右的性能

8,配置RMAN使用压缩备份集
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET PARALLELISM 1;
在10g中RMAN增加了一个新特性—压缩备份集,能够使备份集减少到原来的1/5或1/6,代价是增加10%左右的CPU消耗,可以根据实际情况选择使用。
条件允许的话(多物理硬盘、多CPU)还可以用上面命令设定并行备份

二、管理RMAN

通过RMAN的REPORT,LIST,CROSSCHECK,DELETE命令可以对RMAN进行管理。
1,如果手动删除了备份文件的话,需要执行交叉检验让RMAN进行同步。
RMAN> CROSSCHECK BACKUP;
RMAN> CROSSCHECK ARCHIVELOG ALL;
交叉检验后RMAN会把已经被手动删除的备份文件的状态设置为过期(EXPIRED)。

2,报告已不用(OBSOLETE)和过期(EXPIRED)的备份文件。
RMAN> REPORT OBSOLETE;
RMAN> LIST EXPIRED BACKUP;

3,删除已不用(OBSOLETE)和过期(EXPIRED)的备份文件。
RMAN> DELETE OBSOLETE;
RMAN> DELETE EXPIRED BACKUP;

三、使用RMAN进行恢复

?? RMAN 的整个恢复过程可以分为还原(RESTORE)与恢复(RECOVER),他们在含义上是有很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复。
?? 数据库的的恢复比较复杂,有许多不同的情况,必须在了解ORACLE数据库结构的条件下用不同的方法进行处理。下面只列出最普通的恢复情况。恢复整个数据库之前必须让数据库处于(MOUNT)状态。
SQL> STARTUP MOUNT;
然后执行RMAN命令进行还原和恢复。
1,完全恢复
1.1,恢复整个数据库
RMAN>RUN {
ALLOCATE CHANNEL ‘DEV1’ TYPE DISK;
ALLOCATE CHANNEL ‘DEV2’ TYPE DISK;
ALLOCATE CHANNEL ‘DEV3’ TYPE DISK;
RESTORE DATABASE;
RECOVER DATABASE;
RELEASE CHANNEL DEV1;
RELEASE CHANNEL DEV2;
RELEASE CHANNEL DEV3;
}

1.2,恢复指定表空间或数据文件
在恢复该表空间之前让该表空间处于脱机的状态(OFFLINE状态)。
SQL> ALTER TABLESPACE TBS OFFLINE;
然后通过RMAN进行恢复。
RMAN> RUN {
ALLOCATE CHANNEL ‘DEV1’ TYPE DISK ;
ALLOCATE CHANNEL ‘DEV2’ TYPE DISK ;
ALLOCATE CHANNEL ‘DEV3’ TYPE DISK ;
RESTORE TABLESPACE TBS ;
RECOVER TABLESPACE TBS ;
RELEASE CHANNEL DEV1 ;
RELEASE CHANNEL DEV2 ;
RELEASE CHANNEL DEV3 ;
}

2,不完全恢复
不完全恢复情况比较复杂,大致分一下四类。
1,基于时间的恢复(Time-based recovery)
2,基于撤销的恢复(Cancel-based recovery)
3,基于改变的恢复(Change-based recovery)
4,日志序列恢复(Log sequence recovery)

3,块级别的恢复
RMAN可以在线对逻辑损坏的数据块进行恢复而不影响数据库的运行。
RMAN> BLOCKRECOVER DATAFILE 6 BLOCK 3;

四、使用FLASHBACK进行快速恢复
发生以下类型的错误时,通常需要使用备份执行恢复:
1.介质故障:因数据库文件的物理问题而导致无法读写该文件
2.用户错误:数据库中的数据被误更改或误删除
使用RMAN进行介质故障恢复,使用FLASHBACK进行用户错误恢复。

1,9i中的FLASHBACK:
查询数据库的SCN变化情况
SQL> SELECT NAME,FIRST_CHANGE# FSCN,NEXT_CHANGE# NSCN,FIRST_TIME FROM V$ARCHIVED_LOG;
获得当前SCN
SQL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FSCN FROM DUAL;
创建恢复表,选择恢复到合适的SCN
SQL> INSERT INTO TB_RECOVER SELECT * FROM TB AS OF SCN 1999999999;

2,10g中的FLASHBACK:
10g的FLASHBACK进行了增强和修改,通过回闪,用户可以完成许多不可能恢复的工作,目前10g的回闪包括以下特性;
1,oracle falshback Database.
该特性允许 oracle 通过 Flashback database 语句,将数据库会滚到前一个时间点或者scn上,而不需要作时间点的恢复工作!
2,oracle falshback table.
该特性允许 oracle通过 flashback table 语句,将表会滚到前一个时间点或者scn上。
3,oracle falshback drop.
该特性允许oracle恢复drop掉的table或者索引。
4,oracle falshback version query.
该特性可以得到特定的表在某一个时间段内的任何修改记录!
5,oracle falshback transaction query
该特性可以限制用户在某一个事务级别上检查数据库的修改操作,适用于诊断问题、分析性能、审计事务。

RMAN快速入门指南

控制文件丢失或损坏利用RMAN来恢复数据库



无觅相关文章插件,快速提升流量

“Oracle数据库RMAN使用方法简介”2 条评论

commenter

2012-01-17增加如何进入RMAN的命令方法。

commenter

2012-01-18增加《RMAN快速入门指南》和《控制文件丢失或损坏利用RMAN来恢复数据库》的下载链接