RMAN简明教程之四——RMAN备份详解

简介:        RMAN可以用来备份主备用数据库,如表空间、数据文件、归档日志、控制文件、服务器文件与备份集,下面我们分情况进行试验。

       RMAN可以用来备份主备用数据库,如表空间、数据文件、归档日志、控制文件、服务器文件与备份集,下面我们分情况进行试验。

一、文件拷贝
      原始文件的拷贝,有点类似于OS热备份,可以拷贝整个数据文件到另外一个地点,但是结果仅仅只能写入到硬盘,而且单独的文件是分开的。
数据文件拷贝实例:
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
copy # first
datafile 1 to '$HOME/prd1.dbf',
datafile 2 to '$HOME/prd2.dbf';
copy # second
datafile 3 to '$HOME/prd3.dbf';
sql 'alter system archive log current';
}
二、备份与备份集 
       RMAN 的常规备份是产生只有 RMAN 才能识别的备份集,所以,除了 copy 命令之外的其他备份,都是RMAN 产生的备份集以及对应的备份片。
如下是备份数据库的实例,它开启两个通道,将数据库备份到磁带:
run {
allocate channel t1 type 'SBT_TAPE';
allocate channel t2 type 'SBT_TAPE';
backup
filesperset 2
format 'df_%t_%s_%p'
database;
}
      RMAN 也可以实现多个镜相的备份:
Run{
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
SET BACKUP COPIES 3;
BACKUP DATAFILE 7 FORMAT '/tmp/%U','?/oradata/%U','?/%U';
};
      以下是常见的备份归档的例子:

RMAN>sql ‘alter system archive log current’;
RMAN>backup archivelog all delete input;
RMAN> backup archivelog from time '01-jan-00' until time '30-jun-00';
RMAN> backup archivelog like 'oracle/arc/dest/log%';   10
RMAN> backup archivelog all;
RMAN> backup archivelog from logseq 20 until logseq 50 thread 1;
RMAN> backup archivelog from scn 1 until scn 9999;
       在RAC环境中,因为数据库是共享的,所以可以连接到一个实例就可以备份整个数据库,但是,因为归档日志可以备份在本地,所以 RAC归档日志的备份就变的复杂一些,我们可以通过连接到两个实例的通道来备份两个实例的归档日志。
run{
ALLOCATE CHANNEL node_c1 DEVICE TYPE DISK CONNECT
'sys/pass@dbin1';
ALLOCATE CHANNEL node_c2 DEVICE TYPE DISK CONNECT
'sys/pass@dbin2';
sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
backup archivelog all delete input format '/u01/dbbak/%U_%s.bak' filesperset = 5;
}
三、常见备份参数
1、Keep参数可以长期的保持特殊的备份或者拷贝,让它们不受默认备份保持策略的影响,如
RMAN> BACKUP DATABASE KEEP UNTIL TIME
2> "to_date('31-MAR-2002','DD_MM_YYYY)" nologs;
RMAN> BACKUP TABLESPACE SAMPLE KEEP FOREVER NOLOGS;
其中 NOLOGS 表示可以不保留该备份以来的归档日志,默认是 LOGS,表示保留该备份以来的参数,如果想让该备份永久有效,可以使用 FOREVER参数。
2、Tag参数指明了备份集的标志,可以达到 30 个字符长度,如
RMAN> BACKUP DEVICE TYPE DISK DATAFILE 1 TAG
2> "wkly_bkup";
在 Oracle  92 版本以后,RMAN 自动提供一个 TAG,格式为 TAGYYYYMMDDTHHMMSS如TAG20020208T133437,通过备份标志 TAG,也可以很方便的从备份集进行恢复,如Restore database from tag=’tag name’
四、增量备份
       在说明增量备份之前, 首先要理解差异增量与累计增量备份,以及增量备份的备份与恢复原理。差异增量,是默认的增量备份方式。 
差异增量是备份上级或同级备份以来变化的块,累计增量是备份上级备份以来变化的块。累计增量增加了备份的时间,但是因为恢复的时候,需要从更少的备份集中恢复数据,所以,为了减少恢复的时候,累计增量备份将比差异增量备份更有效。 
       不管怎么样增量备份,在 Oracle 版本 9 中,还是需要比较数据库中全部的数据块,这个过程其实也是一个漫长的过程,而且由于增量备份形成多个不同的备份集,使得恢复变的更加不可靠而且速度慢,所以增量备份在版本 9 中仍然是鸡肋,除非是很大型的数据仓库系统,没有必要选择增量备份。
       Oracle 版本10在增量备份上做了很大的改进,可以使增量备份变成真正意义的增量,因为通过特有的增量日志,使得 RMAN 没有必要去比较数据库的每一个数据块,当然,代价就是日志的IO 与磁盘空间付出,完全还是不适合OLTP系统。另外,版本10 通过备份的合并,使增量备份的结果可以合并在一起,而完全的减少了恢复时间。
增量备份都需要一个基础,比如0 级备份就是所有增量的基础备份,0级备份与全备份的不同就是0级备份可以作为其它增量备份的基础备份而全备份是不可以的, 是否选择增量备份作为你的备份策略,最终,需要你自己有一个清醒的认识。
以下是零级备份的例子
backup incremental level 0 database;
一级差异增量例子
backup incremental level 1 database;
一级累计增量例子
backup incremental level 1 cumulative database;   12
五、备份检查
      我们可以通过Validate命令来检查是否能备份,如数据文件是否存在,是否存在坏块不能被备份,如:
BACKUP VALIDATE DATABASE;
BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
六、重新启动备份
       对于异常结束了的备份,很多人可能不想再重新开始备份了吧,特别是备份到 90%以上,因为异常原因终止了该备份,那怎么办呢?RMAN 提供一个重新开始备份的方法,通过简单的命令,你就可以只备份那不到10%的数据了。
RMAN> BACKUP NOT BACKED UP SINCE TIME 'SYSDATE-14'
2> DATABASE PLUS ARCHIVELOG;
七、RMAN 动态性能视图
以下是与 RMAN 备份有关系的一些动态性能视图,信息是从控制文件中获取的。
V$ARCHIVED_LOG
V$BACKUP_CORRUPTION
V$COPY_CORRUPTION
V$BACKUP_DATAFILE
V$BACKUP_REDOLOG
V$BACKUP_SET
V$BACKUP_PIECE
V$BACKUP_DEVICE
V$CONTROLFILE_RECORD_SECTION
这里还有一个视图,可以大致的监控到 RMAN备份进行的程度。如通过如下的 SQL脚本,
将获得备份的进度。
SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
3 FROM V$SESSION_LONGOPS
4 WHERE OPNAME LIKE 'RMAN%'
5 AND OPNAME NOT LIKE '%aggregate%'
6 AND TOTALWORK != 0
7 AND SOFAR <> TOTALWORK;
SID SERIAL# CONTEXT SOFAR    TOTAL   WORK %_COMPLETE
---    -------      -------        -------     ---------    ----------
13   75          1           9470      15360    61.65
12   81          1           15871    28160    56.36 
 Oracle社区PDM中文网:http://www.pdmcn.com/bbs

 Oracle 专家QQ群:60632593、60618621

 Oracle技术资料:《Oracle 9i RMAN参考使用手册》、《ORACLE10G备份与恢复》、《Oracle Database 10gRMAN备份与恢复

 

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
11月前
|
SQL 存储 Oracle
1、RMAN基本概念和命令
1、RMAN基本概念和命令
173 0
|
Oracle 关系型数据库
oracle学习50-rman备份脚本
oracle学习50-rman备份脚本
145 0
oracle学习50-rman备份脚本
|
Oracle 关系型数据库
|
SQL Oracle 网络协议
【RMAN】RMAN恢复各类错误解决总结
【RMAN】RMAN恢复各类错误解决总结 第一章 RMAN恢复错误 1.1  不完全恢复错误 1.
2812 0
|
存储 Oracle 关系型数据库
RMAN_学习笔记1_RMAN Structure概述和体系结构
2014-12-23 Created By BaoXinjian 一、摘要 是一种用于集备份(backup)、还原(restore)和恢复(recover)数据库于一体的Oracle 工具,支持命令行及图形界面操作 能够备份整个数据库、表空间、数据文件、控制文件、归档文件以及Spfile参数文件。
1112 0
|
存储 Oracle 关系型数据库
Oracle的奇葩设置之非归档模式与RMAN备份
    数据库归档模式与RMAN备份策略是保障数据库数据安全的基本手段,对于ORACLE数据库DBA来说,很清楚ORACLE的RMAN备份是基于数据库的归档模式,但对于主机维护人员及开发人员,他们可能很不清楚。
1063 0
|
Oracle 关系型数据库 数据库
RMAN_学习实验1_RMAN备份标准过程(案例)
2014-12-23 Created By BaoXinjian 一、摘要 RMAN是Oracle提供的恢复和备份工具,是随Oracle服务器软件一同安装的工具软件,它可以用来备份和恢复数据库文件、归档日志和控制文件,用来执行完全或不完全的数据库恢复。
683 0