【IT168技术文档】RMAN是 ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、 归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。
RMAN可以由命令行接口或者 OEM的 Backup Manager GUI 来控制。
4.1 基本知识
4.1.1 RMAN的组件、概念
1. RMAN 主要包括以下组件:
Target Database: (目标数据库)
就是需要 RMAN 对其进行备份与恢复的数据库,RMAN 可以备份数据文件,控制文
件,归档日志,spfile。(注意:RMAN不能用于备份联机日志、初始化参数文件和口令文件)
Server Session: (服务器会话)
RMAN启动数据库上的 Oracle服务器进程,将建立一个与目标数据库的会话。由目标
数据库上的服务器进程进行备份、还原、恢复的实际操作。
服务器进程
RMAN 的服务进程是一个后台进程,用于与 RMAN工具与数据库之间的通信,也用于 RMAN 工具与磁盘/磁带等 I/O 设置之间的通信,服务进程负责备份与恢复的所有工作, 在如下情况将产生一个服务进程:
当连接到目标数据库
分配一个新的通道
Channel: (通道)
一个通道是 RMAN和目标数据库之间的一个连接,"allocate channel"命令在目标数据库
启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的 I/O类型。
通道控制命令可以用来:
? 控制 RMAN使用的 O/S资源,影响并行度
? 指定 I/O带宽的限制值(设置 limit read rate 参数)
? 定义备份片大小的限制(设置 limit kbytes)
? 指定当前打开文件的限制值(设置 limit maxopenfiles)
recovery catalog: (恢复目录)
用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。RMAN 利用恢 复目录记载的信息去判断如何执行需要的备份恢复操作。
如果不采用恢复目录,备份信息可以存在于目标数据库的 control file 中。
如果存放在目标数据库的 control file 中,控件文件会不断增长,不能保存 RMAN 的
Script。
CONTROL_FILE_RECORD_KEEP_TIME (default=7):控件文件中 RMAN 信息保存的
最短时间。
使用恢复目录的优势: 可以存储脚本,记载较长时间的备份恢复操作。
RMAN Repository: (RMAN 恢复目录数据库)
存放 recovery catalog(恢复目录)的数据库。建议为恢复目录数据库创建一个单独的数据
库。
MML: (媒体管理库)
Media Management Layer (MML)是第三方工具或软件,用于管理对磁带的读写与文件的 跟踪管理。如果你想直接通过 RMAN 备份到磁带上,就必须配置媒体管理层,媒体管理层 的工具如备份软件可以调用 RMAN来进行备份与恢复。
2.概念述语
Backup Sets (备份集合)
备份集合的特性:包括一个或多个数据文件或归档日志,以 oracle专有的格式保存,有 一个完全的所有的备份片集合构成,构成一个完全备份或增量备份。
Backup Pieces (备份片)
一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大 小是有限制的;如果没有大小的限制, 备份集就只由一个备份片构成。备份片的大小不能 大于使用的文件系统所支持的文件长度的最大值。
Image Copies 镜像备份
镜像备份是独立文件(数据文件、归档日志、控制文件)的备份。它很类似操作系统级 的文件备份。它不是备份集或备份片,也没有被压缩。
Full backup Sets 全备份集合
全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被
备份的,也就是说,oracle 进行备份集合的压缩。
Incremental backup sets 增量备份集合
增量备份是指备份一个或多个数据文件的自从上一次同一级别的或更低级别的备份以
来被修改过的数据块。 与完全备份相同,增量备份也进行压缩。
File multiplexing
多个数据文件可以在一个备份集中。
Recovery catalog resyncing 恢复目录同步
使用恢复管理器执行 backup、copy、restore 或者 switch 命令时,恢复目录自动进行更 新,但是有关日志与归档日志信息没有自动记入恢复目录。需要进行目录同步。使用 resync catalog命令进行同步。
RMAN> resync catalog;
Incarnation 对应物
在不完全恢复完成之后,通常需要使用 resetlogs 选项来打开数据库。resetlogs 表示一个 数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始。数据库的逻辑生存期也被称为 一个对应物(incarnation)。每次使用 resetlogs 选项来打开数据库后都会创建一个新的数据库 对应物。
4.1.2 RMAN的使用:命令行接口与脚本
数据库状态:
RMAN恢复目录数据库: 必须OPEN
目标数据库: 根据不同情况,必须MOUNT或OPEN
1. 使用不带恢复目录的 RMAN
设置目标数据库的 ORACLE_SID ,执行:
$ rman nocatalog
RMAN> connect target
RMAN> connect target user/pwd>@db
2. 使用带恢复目录的RMAN
$ rman catalogrman/rman
RMAN> connecttarget //连接本地数据库作为目标数据库
RMAN> connecttarget user/pwd>@db //连接远程数据库
或
$ rman catalogrman/rman targetuser/pwd>@db
3. 命令行接口
1、单个执行
RMAN> backup database;
2、运行一个命令块
RMAN> RUN {
2> copy datafile 10 to
3> '/oracle/prod/backup/prod_10.dbf';
4> }
3、运行存储在恢复目录中的脚本:
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
4、运行外部脚本:
$ rman catalog rman/rman target / @backup_db.rman
$ rman cmdfile=backup.rman msglog=backup.log
RMAN> @backup_db.rman
RMAN> RUN { @backup_db.rman }
如果在 cron 中执行,注意在脚本中设置正确的环境变量,例:
#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 rman cmdfile=backup_db.rman
4. 使用脚本
创建或者取代脚本:
RMAN> create script alloc_disk {
2> # Allocates one disk
3> allocate channel dev1 type disk;
4> setlimit channel dev1 kbytes 2097150 maxopenfiles 32 readrate 200;
5> }
RMAN> replace script rel_disk {
2> # releases disk
3> release channel dev1;
5> }
删除脚本:
RMAN> DELETE SCRIPT Level0Backup;
查看脚本:
RMAN> PRINT SCRIPT Level0Backup;
运行脚本:
RMAN> RUN { EXECUTE SCRIPT backup_whole_db };
5. 运行OS命令
RMAN支持通过执行 host命令暂时退出 RMAN的命令提示符而进入到操作系统的命令
环境。
6. 执行SQL语句
在 RMAN 的命令提示符后输入 SQL 命令,然后在一对单引号(双引号亦可)中输入要
执行的 SQL 语句,例如:
RMAN> SQL 'ALTER SYSTEM CHECKPOINT';
对于 SELECT语句,无法得到结果。可以先执行 host再用 SQLPLUS。