分类: Oracle
2011-01-05 17:13:08
一、RMAN的概念与体系结构
Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover)数据库的 Oracle 工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN也允许您进行增量数据块级别的备份,增量RMAN备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过RMAN提供的接口,第三方的备份与恢复软件如veritas将提供更强大的备份与恢复的管理功能。
通过RMAN,也提供了其它更多功能,如数据库的克隆、采用RMAN建立备用数据库、利用RMAN备份与移动裸设备(RAW)上的文件等工作将变得更方便简单。9i的RMAN通过增强的自动配置与管理功能,以及特有的块级别的恢复,将使备份与恢复工作变得更加快捷与完美。
9i的RMAN有如下特征特性:
·
· ·自动的备份与恢复
· ·方便的备份归档日志
· ·自动检测新的数据文件
· ·支持增量备份
· ·最大限度的减少备份与恢复的错误
· ·减少恢复的时间
· ·在热备份中不会产生额外的redo日志
· ·损坏数据块的自动检测
· ·并行的备份与恢复操作
· ·在线备份时,表空间不用置于备份模式
可以看到,在以上的一些特性中,显示了RMAN强大的功能与好处,以上功能的实现,是因为RMAN是块级别的备份与恢复,备份与恢复发生在数据库块级别,可以通过比较数据块而获得一致性的数据块,可以避免备份没有用过的块,可以检验块是否损坏等块级别的问题。
对于组成以上RMAN 的结构,说明如下:
1、RMAN 工具
也就是RMAN 命令,起源于Oracle 版本8,一般位于$ORACLE_HOME/bin 目录下,可以通过运行rman这个命令来启动RMAN 工具,用于备份与恢复的接口。
2、服务进程
RMAN 的服务进程是一个后台进程,用于与RMAN工具与数据库之间的通信,也用于RMAN 工具与磁盘/磁带等I/O 设置之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程:
·
· ·当连接到目标数据库
· ·分配一个新的通道
3、通道
通道是服务进程与I/O 设备之前读写的途径,一个通道将对应一个服务进程,在分配通道时,需要考虑I/O 设备的类型,I/O 并发处理的能力,I/O 设备能创建的文件的大小,数据库文件最大的读速率,最大的打开文件数目等因素
4、目标数据库
就是RMAN 进行备份与恢复的数据库,RMAN 可以备份除了联机日志,pfile,密码文件之外的数据文件,控制文件,归档日志,spfile
5、恢复目录
用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上,利用恢复目录可以同时管理多个目标数据库,存储更多的备份信息,可以存储备份脚本。如果不采用恢复目录,可以采用控制文件来代替恢复目录,oracle 9i因为控制文件自动备份的功能,利用控制文件很大程度上可以取代恢复目录。
6、媒体管理层
Media Management Layer (MML)是第三方工具或软件,用于管理对磁带的读写与文件的跟踪管理。如果你想直接通过RMAN 备份到磁带上,就必须配置媒体管理层,媒体管理层的工具如备份软件可以调用RMAN 来进行备份与恢复。
7、备份,备份集与备份片
当发出backup命令的时候,RMAN 将创建一个完成的备份,包含一个到多个备份集,备份集是一个逻辑结构,包含一组的物理文件。这些物理文件就是对应的备份片。备份片是最基本的物理结构,可以产生在磁盘或者磁带上,可以包含目标数据库的数据文件,控制文件,归档日志与spfile文件。
备份集与备份片有如下规定:
一个数据文件不能跨越一个备份集,但是能跨越备份片
数据文件,控制文件能保存在同样的备份集上,但是不能与归档日志保存在同样的备份集上
二、启动与运行RMAN
运行要求
1、进程与内存要求
更多的进程的需要
大池的分配
2、基本环境变量需求
ORACLE_SID, ORACLE_HOME, PATH, NLS_LANG, 如果用到了基于时间的备份与恢复,需要另外设置NLS_DATE_FORMAT
3、权限要求
需要SYSDBA系统权限
如果是本地,可以采用OS认证,远程需要采用密码文件认证
4、版本要求
RMAN 工具版本与目标数据库必须是同一个版本,如果使用了恢复目录,还需要注意
·创建RMAN 恢复目录的脚本版本必须等于或大于恢复目录所在数据库的版本
·创建RMAN 恢复目录的脚本版本必须等于或大于目标数据库的版本
基本运行方法
9i默认是nocatalog,不使用恢复目录,使用命令rman即可进入RMAN 的命令行界面,如
[oracle@db oracle]$ $ORACLE_HOME/bin/rman
Recovery Manager: Release 9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
RMAN>
连接目标数据库,可以用如下类似命令
RMAN>Connect target /
如何运行RMAN 命令
1、单个执行
RMAN>backup database;
2、运行一个命令块
RMAN> run {
2> copy datafile 10 to
3> '/oracle/prod/backup/prod_10.dbf';
4> }
3、运行脚本
$ rman TARGET / @backup_db.rman
RMAN> @backup_db.rman
RMAN> RUN { @backup_db.rman }
运行存储在恢复目录中的脚本
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
4、SHELL脚本,如果在cron中执行,注意设置正确的环境变量在脚本中
[oracle@db worksh]$ more rmanback.sh
#!/bin/ksh
#set env
export ORACLE_HOME=/opt/oracle/product/9.2
export ORACLE_SID=test
export NLS_LANG="AMERICAN_AMERICA.zhs16gbk"
export PATH=$PATH:$ORACLE_HOME/bin
echo "-----------------------------start-----------------------------";date
#backup start
$ORACLE_HOME/bin/rman < connect target
delete noprompt obsolete;
backup database format '/netappdata1/rmanback/tbdb2/%U_%s.bak' filesperset = 2;
exit;
EOF
echo "------------------------------end------------------------------";date
三、RMAN的自动配置
Oracle 9i可以配置一些参数如通道,备份保持策略等信息,通过一次设定可以多次使用,而且,设置中的信息不影响脚本中的重新设置。RMAN 默认的配置参数,通过show all 就可以看出来。
RMAN> show all;
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE BACKUP OPTIMIZATION OFF;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP OFF;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR TYPE DISK TO '%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
CONFIGURE MAXSETSIZE TO UNLIMITED;
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/9.0.2/dbs/snapcf_U02.f';
1 备份策略保持
分为两个保持策略,一个是时间策略,决定至少有一个备份能恢复到指定的日期,一个
冗余策略,规定至少有几个冗余的备份。
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO NONE;
在第一个策略中,是保证至少有一个备份能恢复到Sysdate-5 的时间点上,之前的备份将标记为Obsolete。第二个策略中说明至少需要有三个冗余的备份存在,如果多余三个备份以上的备份将标记为冗余。NONE 可以把使备份保持策略失效,Clear 将恢复默认的保持策略。
2通道配置与自动通道分配
通过CONFIGURE 配置自动分配的通道,而且可以通过数字来指定不同的通道分配情况。
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/U01/ORACLE/BACKUP/%U'
CONFIGURE CHANNEL n DEVICE TYPE DISK FORMAT '/U01/ORACLE/BACKUP/%U'
当然,也可以在运行块中,手工指定通道分配,这样的话,将取代默认的通道分配。
Run{
allocate channel cq type disk format='/u01/backup/%u.bak'
......
}
以下是通道的一些特性
读的速率限制
Allocate channel ...... rate = integer
最大备份片大小限制
Allocate channel ...... maxpiecesize = integer
最大并发打开文件数(默认16)
Allocate channel ...... maxopenfile = integer
3控制文件自动备份
从9i开始,可以配置控制文件的自动备份,但是这个设置在备用数据库上是失效的。通过如下的命令,可以设置控制文件的自动备份
CONFIGURE CONTROLFILE AUTOBACKUP ON;
对于没有恢复目录的备份策略来说,这个特性是特别有效的,控制文件的自动备份发生在任何backup或者copy命令之后,或者任何数据库的结构改变之后。
可以用如下的配置指定控制文件的备份路径与格式
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR TYPE DISK TO '%F';
在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以通过如下配置
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/9.0.2/dbs/snapcf_U02.f';
4设置并行备份
RMAN支持并行备份与恢复,也可以在配置中指定默认的并行程度。如
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
指定在以后的备份与恢复中,将采用并行度为4,同时开启4个通道进行备份与恢复,当然也可以在run的运行块中指定通道来决定备份与恢复的并行程度。
并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。
5 配置默认IO 设备类型
IO 设备类型可以是磁盘或者磁带,在默认的情况下是磁盘,可以通过如下的命令进行重新配置。
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE DEFAULT DEVICE TYPE TO SBT;
注意,如果换了一种IO设备,相应的配置也需要做修改,如
RMAN> CONFIGURE DEVICE TYPE SBT PARALLELISM 2;
6配置多个备份的拷贝数目
如果觉得单个备份集不放心,可以设置多个备份集的拷贝,如
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
如果指定了多个拷贝,可以在通道配置或者备份配置中指定多个拷贝地点
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/%U', '/u02/backup/%U';
RMAN>backup datafile n format '/u01/backup/%U', '/u02/backup/%U';
3.7备份优化
可以在配置中设置备份的优化,如
CONFIGURE BACKUP OPTIMIZATION ON;
如果优化设置打开,将对备份的数据文件、归档日志或备份集运行一个优化算法。
同样的DBID,检查点SCN,ResetlogSCN 与时间
正常离线,只读或正常关闭的文件
归档日志
同样的线程,序列号RESETLOG SCN 与时间
3.8备份文件的格式
备份文件可以自定义各种各样的格式,如下
%c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,
其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序
列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1 开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)
chinaunix网友2011-01-06 14:58:45
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com