RMAN(备份与恢复管理器)基本知识RMAN是ORACLE提供的一个备份与恢复的工具,可以用来备份和还原数据库文件、归档日志和控制文件。它也可以用来执行完全或不完全的数据库恢复。RMAN可以由命令行接口或者OEM的BackupManagerGUI来控制。4.1基本知识4.1.1RMAN的组件、概念1.RMAN主要包括以下组件:TargetDatabase:(目标数据库)就是需要RMAN对其进行备份与恢复的数据库,RMAN可以备份数据文件,控制文件,归档日志,spfile。(注意:RMAN不能用于备份联机日志、初始化参数文件和口令文件)ServerSession:(服务器会话)RMAN启动数据库上的Oracle服务器进程,将建立一个与目标数据库的会话。由目标数据库上的服务器进程进行备份、还原、恢复的实际操作。服务器进程RMAN的服务进程是一个后台进程,用于与RMAN工具与数据库之间的通信,也用于RMAN工具与磁盘/磁带等I/O设置之间的通信,服务进程负责备份与恢复的所有工作,在如下情况将产生一个服务进程:当连接到目标数据库分配一个新的通道Channel:(通道)一个通道是RMAN和目标数据库之间的一个连接,allocatechannel命令在目标数据库启动一个服务器进程,同时必须定义服务器进程执行备份或者恢复操作使用的I/O类型。通道控制命令可以用来:?控制RMAN使用的O/S资源,影响并行度?指定I/O带宽的限制值(设置limitreadrate参数)?定义备份片大小的限制(设置limitkbytes)?指定当前打开文件的限制值(设置limitmaxopenfiles)recoverycatalog:(恢复目录)用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上。RMAN利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。如果不采用恢复目录,备份信息可以存在于目标数据库的controlfile中。如果存放在目标数据库的controlfile中,控件文件会不断增长,不能保存RMAN的Script。CONTROL_FILE_RECORD_KEEP_TIME(default=7):控件文件中RMAN信息保存最短时间。使用恢复目录的优势:可以存储脚本,记载较长时间的备份恢复操作。RMANRepository:(RMAN恢复目录数据库)存放recoverycatalog(恢复目录)的数据库。建议为恢复目录数据库创建一个单独的数据库。MML:(媒体管理库)MediaManagementLayer(MML)是第三方工具或软件,用于管理对磁带的读写与文件的跟踪管理。如果你想直接通过RMAN备份到磁带上,就必须配置媒体管理层,媒体管理层的工具如备份软件可以调用RMAN来进行备份与恢复。2.概念述语BackupSets(备份集合)备份集合的特性:包括一个或多个数据文件或归档日志,以oracle专有的格式保存,有一个完全的所有的备份片集合构成,构成一个完全备份或增量备份。BackupPieces(备份片)一个备份集由若干个备份片组成。每个备份片是一个单独的输出文件。一个备份片的大小是有限制的;如果没有大小的限制,备份集就只由一个备份片构成。备份片的大小不能大于使用的文件系统所支持的文件长度的最大值。ImageCopies镜像备份镜像备份是独立文件(数据文件、归档日志、控制文件)的备份。它很类似操作系统级的文件备份。它不是备份集或备份片,也没有被压缩。FullbackupSets全备份集合全备份是一个或多个数据文件中使用过的数据块的的备份。没有使用过的数据块是不被备份的,也就是说,oracle进行备份集合的压缩。Incrementalbackupsets增量备份集合增量备份是指备份一个或多个数据文件的自从上一次同一级别的或更低级别的备份以来被修改过的数据块。与完全备份相同,增量备份也进行压缩。Filemultiplexing多个数据文件可以在一个备份集中。Recoverycatalogresyncing恢复目录同步使用恢复管理器执行backup、copy、restore或者switch命令时,恢复目录自动进行更新,但是有关日志与归档日志信息没有自动记入恢复目录。需要进行目录同步。使用resynccatalog命令进行同步。RMANresynccatalog;Incarnation对应物在不完全恢复完成之后,通常需要使用resetlogs选项来打开数据库。resetlogs表示一个数据库逻辑生存期的结束和另一个数据库逻辑生存期的开始。数据库的逻辑生存期也被称为一个对应物(incarnation)。每次使用resetlogs选项来打开数据库后都会创建一个新的数据库对应物。4.1.2RMAN的使用:命令行接口与脚本数据库状态:RMAN恢复目录数据库:必须OPEN目标数据库:根据不同情况,必须MOUNT或OPEN1.使用不带恢复目录的RMAN设置目标数据库的ORACLE_SID,执行:$rmannocatalogRMANconnecttargetRMANconnecttargetuser/pwd@db2.使用带恢复目录的RMAN$rmancatalogrman/rmanRMANconnecttarget//连接本地数据库作为目标数据库RMANconnecttargetuser/pwd@db//连接远程数据库或$rmancatalogrman/rmantargetuser/pwd@db3.命令行接口1、单个执行RMANbackupdatabase;2、运行一个命令块RMANRUN{2copydatafile10to3'/oracle/prod/backup/prod_10.dbf';4}3、运行存储在恢复目录中的脚本:RMANRUN{EXECUTESCRIPTbackup_whole_db};4、运行外部脚本:$rmancatalogrman/rmantarget/@backup_db.rman$rmancmdfile=backup.rmanmsglog=backup.logRMAN@backup_db.rmanRMANRUN{@backup_db.rman}如果在cron中执行,注意在脚本中设置正确的环境变量,例:#setenvexportORACLE_HOME=/opt/oracle/product/9.2exportORACLE_SID=testexportNLS_LANG=AMERICAN_AMERICA.zhs16gbkexportPATH=$PATH:$ORACLE_HOME/binrmancmdfile=backup_db.rman4.使用脚本创建或者取代脚本:RMANcreatescriptalloc_disk{2#Allocatesonedisk3allocatechanneldev1typedisk;4setlimitchanneldev1kbytes2097150maxopenfiles32readrate200;5}RMANreplacescriptrel_disk{2#releasesdisk3releasechanneldev1;5}删除脚本:RMANDELETESCRIPTLevel0Backup;查看脚本:RMANPRINTSCRIPTLevel0Backup;运行脚本:RMANRUN{EXECUTESCRIPTbackup_whole_db};5.运行OS命令RMAN支持通过执行host命令暂时退出RMAN的命令提示符而进入到操作系统的命令环境。6.执行SQL语句在RMAN的命令提示符后输入SQL命令,然后在一对单引号(双引号亦可)中输入要执行的SQL语句,例如:RMANSQL'ALTERSYSTEMCHECKPOINT';对于SELECT语句,无法得到结果。可以先执行host再用SQLPLUSRMAN的配置4.2RMAN的配置4.2.1建立RecoveryCatalog恢复目录(1)在目录数据库中创建恢复目录所用表空间:SQLcreatetablespacerman_tsdatafile'/xxx/rman_ts.dbf'size20M;(2)在目录数据库中创建RMAN用户并授权:SQLcreateuserrmanidentifiedbyrmandefaulttablespacerman_tstemporarytablespacetempquotaunlimitedonrman_ts;SQLgrantconnect,resource,recovery_catalog_ownertorman;(3)在目录数据库中创建恢复目录$rmancatalogrman/rmanRMANcreatecatalogtablespacerman_ts;(4)登记目标数据库:一个恢复目录可以注册多个目标数据库,注册目标数据库的命令为:$RMANcatalogrman/rmantargetuser/pwd@rcdb;RMANregisterdatabase;4.2.2查看RMAN的默认设置SHOW命令必须连接目标数据库RMANshowallRMANshowchannel;//通道分配RMANshowdevicetype;//IO设备类型RMANshowretentionpolicy;//保存策略RMANshowdatafilebackupcopies;//多个备份的拷贝数目RMANshowmaxsetsize;//备份集大小的最大值RMANshowexclude;//不必备份的表空间RMANshowbackupoptimization;//备份的优化4.2.3配置RMAN的默认设置1.配置备份集文件的格式(format)RMANconfigurechanneldevicetypediskformat'/u05/oracle/rmanback/%U';备份文件可以自定义各种各样的格式,如下%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)2.配置默认IO设备类型(devicetype)IO设备类型可以是磁盘或者磁带,在默认的情况下是磁盘,可以通过如下的命令进行重新配置。RMANconfiguredefaultdevicetypetodisk;RMANconfiguredefaultdevicetypetosbt;注意,如果换了一种IO设备,相应的配置也需要做修改,如RMANconfiguredevicetypesbtparallelism2;3.配置自动分配的通道(Chanel)RMANconfigurechanneldevicetypediskformat'/U01/ORACLE/BACKUP/%U在运行块中,手工指定通道分配,这样的话,将取代默认的通道分配。RMANRun{allocatechannelcqtypediskformat='/u01/backup/%u.bak';…}通道的一些特性:读的速率限制Allocatechannel……rate=integer最大备份片大小限制Allocatechannel……maxpiecesize=integer最大并发打开文件数(默认16)Allocatechannel……maxopenfile=integer4.配置默认的保存策略(RetentionPolicy)保存策略是管理备份与副本有效期或者是否有效的一种方