Oracle RMAN快速入门指南Word文档格式.docx
《Oracle RMAN快速入门指南Word文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle RMAN快速入门指南Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
增量备份是指备份一个或多个数据文件的自从上一次同一级别的或更低级别的备份以来被修改过的数据块。
与完全备份相同,增量备份也进行压缩。
2.6.Filemultiplexing
不同的多个数据文件的数据块可以混合备份在一个备份集中。
2.7.Recoverycatalogresyncing恢复目录同步
使用恢复管理器执行backup、copy、restore或者switch命令时,恢复目录自动进行更新,但是有关日志与归档日志信息没有自动记入恢复目录。
需要进行目录同步。
使用resynccatalog命令进行同步。
RMAN>
resynccatalog;
RMAN-03022:
正在编译命令:
resyncRMAN-03023:
正在执行命令:
resyncRMAN-08002:
正在启动全部恢复目录的resyncRMAN-08004:
完成全部resync
3.恢复目录
3.1.恢复目录的概念
恢复目录是由RMAN使用、维护的用来放置备份信息的仓库。
RMAN利用恢复目录记载的信息去判断如何执行需要的备份恢复操作。
恢复目录可以存在于ORACLE数据库的计划中。
虽然恢复目录可以用来备份多个数据库,建议为恢复目录数据库创建一个单独的数据库。
恢复目录数据库不能使用恢复目录备份自身。
3.2.建立恢复目录
第一步,在目录数据库中创建恢复目录所用表空间:
SQL>
createtablespacerman_tsdatafile"
d:
\oracle\oradata\rman\rman_ts.dbf"
size20M;
表空间已创建。
第二步,在目录数据库中创建RMAN用户并授权:
createuserrmanidentifiedbyrmandefaulttablespacerman_tstemporarytablespacetempquotaunlimitedonrman_ts;
用户已创建。
SQL>
grantrecovery_catalog_ownertorman;
授权成功。
grantconnect,resourcetorman;
第三步,在目录数据库中创建恢复目录
C:
\>
rmancatalogrman/rman恢复管理器:
版本8.1.6.0.0-ProductionRMAN-06008:
连接到恢复目录数据库RMAN-06428:
未安装恢复目录RMAN>
createcatalogtablespacerman_ts;
RMAN-06431:
恢复目录已创建
虽然使用RMAN不一定必需恢复目录,但是推荐使用。
因为恢复目录记载的信息大部分可以通过控制文件来记载,RMAN在恢复数据库时使用这些信息。
不使用恢复目录将会对备份恢复操作有限制。
3.3.使用恢复目录的优势
可以存储脚本;
记载较长时间的备份恢复操作;
4.启动RMAN
RMAN为交互式命令行处理界面,也可以从企业管理器中运行。
为了使用下面的实例,先检查环境符合:
thetargetdatabaseiscalled"
his"
andhasthesameTNSalias
userrmanhasbeengranted"
recovery_catalog_owner"
privileges
目标数据库的连接用户为internal帐号,或者以其他SYSDBA类型帐号连接
therecoverycatalogdatabaseiscalled"
rman"
theschemacontainingtherecoverycatalogis"
(samepassword)
在使用RMAN前,设置NLS_DATE_FORMAT和NLS_LANG环境变量,很多RMANLIST命令的输出结果是与日期时间相关的,这点在用户希望执行以时间为基准的恢复工作也很重要。
下例是环境变量的示范:
NLS_LANG=SIMPLIFIEDCHINESE_CHINA.ZHS16GBK
NLS_DATE_FORMAT=DD-MON-YYYYHH24:
MI:
SS
为了保证RMAN使用时能连接恢复目录,恢复目录数据库必须打开,目标数据库至少要STARTED(unmount),否则RMAN会返回一个错误,目标数据库必须置于归档模式下。
4.1.使用不带恢复目录的RMAN
设置目标数据库的ORACLE_SID,执行:
%rmannocatalogRMAN>
connecttargetRMAN>
connecttargetinternal/<
PASSWORD>
@his
4.2.使用带恢复目录的RMAN
%rmanrman_tsrman/rman@rmanRMAN>
connecttarget%rmanrman_tsrman/rman@rmantargetinternal/<
4.3.使用RMAN
一旦连接到目标数据库,可以通过交互界面或者事先存储的脚本执行指定RMAN命令,下面是一个使用RMAN交互界面的实例:
resynccatalog;
使用脚本的实例:
executescriptalloc_1_disk;
创建或者替代存储的脚本:
replacescriptalloc_1_disk{2>
allocatechanneld1typedisk;
3>
}
5.注册或者注销目标数据库
5.1.注册目标数据库
数据库状态:
恢复目录状态:
打开
目标数据库:
加载或者打开
目标数据库在第一次使用RMAN之前必须在恢复目录中注册:
第一步,启动恢复管理器,并且连接目标数据库:
rmantargetinternal/oracle@hiscatalogrman/rman@rman恢复管理器:
版本8.1.6.0.0-ProductionRMAN-06005:
连接到目标数据库:
HIS(DBID=3021445076)RMAN-06008:
连接到恢复目录数据库
第二步,注册数据库:
registerdatabase;
registerRMAN-03023:
registerRMAN-08006:
注册在恢复目录中的数据库RMAN-03023:
fullresyncRMAN-08002:
正在启动全部恢复目录的resyncRMAN-08004:
完成全部resync
5.2.注销目标数据库
RMAN提供了一个注销工具,叫DBMS_RCVCAT工具包,请注意一旦注销了该目标数据库,就不可以使用恢复目录中含有的备份集来恢复数据库了。
为了能注销数据库,需要获得数据库的标识码(DB_ID)和数据库键值(DB_KEY)。
其中连接目标数据库时将会获得DB_ID。
其中DBID=3021445076,利用DBID=3021445076查询数据库键值码,连接到目标数据库,查询db表:
select*fromdb;
DB_KEYDB_IDCURR_DBINC_KEY----------------------------------130214450762
获得DB_KEY=1,这样,该目标数据库DB_KEY=1,DBID=3021445076,利用两个值使用DBMS_RCVCAT工具包就可以注销数据库:
executedbms_rcvcat.unregisterdatabase(1,3021445076);
PL/SQL过程已成功完成。
至此,注销数据库操作完成。
6.操作已有的备份
6.1.加入目录数据库
恢复目录:
如果存在8.x版本以前创建的备份数据想注册到目标数据库,可以采用如下手工方式加入到恢复目录中
catalogdatafilecopy"
/oracle/..../system01.dbf"
;
使用如下命令显示恢复目录中包含的文件
listcopyofdatabase;
6.2.从目录数据库中删除
第一步:
查看备份信息:
listbackup;
list
备份集列表
关键字Recid标记LV集合标记集合计数完成时间-----------------------------------------------------------------------110425013644550501364446206-8月-03
备份段列表
关键字Pc#Cp#状态完成时间段名----------------------------------------------------------------------110611AVAILABLE06-8月-03D:
\ORACLE\ORA81\DATABASE\02EU4DMU_1_1
数据文件包括列表
文件名称LV类型检查点SCN检查点时间----------------------------------------------------------------------3D:
\ORACLE\ORADATA\HIS\USERS01.DBF0Full16005206-8月-03
备份集的关键字为1104。
第二步:
定义delete通道:
allocatechannelfordeletetypedisk;
allocateRMAN-03023:
allocateRMAN-08030:
分配的通道:
deleteRMAN-08500:
通道delete:
sid=19devtype=DISK
第三步:
删除backupset备份集
changebackupset1104delete;
changeRMAN-08073:
已删除备份段RMAN-08517:
备份段handle=D:
\ORACLE\ORA81\DATABASE\02EU4DMU_1_1recid=2stamp=501364447RMAN-03023:
partialresyncRMAN-08003:
启动部分恢复目录的resyncRMAN-08005:
完成部分resync
部分执行删除备份集、备份片或者维护恢复目录的命令,需要先指定通道,如:
RMAN>
allocatechannelformaintenancetypedisk;
7.在非归档模式下备份
例程启动或者数据库加载
恢复目录数据库需要打开,目标数据库必须启动(或者加载)。
因为目标数据库不在归档模式下,所以当进行备份恢复操作的时候数据库无法打开。
不可以将表空间置于热备份模式上进行等同于文件系统级的拷贝,如果在非归档模式,数据库打开的状态下不能进行数据文件的备份。
7.1.数据库完全备份
run{2>
#backupthecompletedatabasetodisk3>
allocatechanneldev1typedisk;
4>
backup5>
full6>
tagfull_db_backup7>
format"
/oracle/backups/db_t%t_s%s_p%p"
8>
(database);
9>
releasechanneldev1;
10>
行#
2:
表明该行为注释行(#是注释符)
3&
9:
Seesection15-Channels通道定义
5:
Fullbackup(defaultiffullorincrementalnotspecified)完全备份模式(缺省模式)
6:
Meaningfulstring(<
=30chars)(备份集标识,<
=30个字符)
7:
Filenametouseforbackuppieces,includingsubstitutionvariables.备份片使用的文件名,可以包含代替变量。
8:
Indicatesallfilesincludingcontrolfilesaretobebackedup表明备份所有数据文件包括控制文件
通过下面的命令显示恢复目录中记载的备份集信息:
listbackupsetofdatabase;
7.2.备份表空间
backup4>
tagtbs_users_read_only5>
/oracle/backups/tbs_users_t%t_s%s"
6>
(tablespaceusers)7>
使用下列命令来显示恢复目录中该表的备份信息:
listbackupsetoftablespaceusers;
假设USERS表空间在备份后被置为READONLY表空间,以后的全库备份就可以不用备份该表空间,为了达到这个目的,可以在以后的备份中指定"
skipreadonly"
。
注意,目标数据库不需要一定打开,只要加载就可以,因为表空间的信息存储在控制文件中。
7.3.备份单独数据文件
allocatechanneldev1type"
SBT_TAPE"
%d_%u"
5>
(datafile"
/oracle/dbs/sysbigdb.dbf"
);
7>
使用MML(mediamanagerlayer)分配磁带驱动器,必须指定类型为SBT_TAPE;
注意因为没有指定标识,所以标识为空;
使用下面的命令显示恢复目录中备份的表空间:
listbackupsetofdatafile1;
7.4.备份数据文件
copydatafile"
/oracle/dbs/temp.dbf"
to"
/oracle/backups/temp.dbf"
使用下面的命令显示恢复目录中的文件拷贝:
listcopyofdatafile"
拷贝数据文件和备份数据文件是不一样的,数据文件拷贝是一个该文件的镜像。
文件的备份产生一个备份集。
7.5.备份控制文件
cf_t%t_s%s_p%p"
tagcf_monday_night6>
(currentcontrolfile);
数据库完全备份将自动备份控制文件。
8.归档模式下的备份
例程启动,数据库加载或者打开
备份操作使用的命令与非归档模式下基本一样。
8.1.Backinguparchivedlogs备份归档日志
下面的脚本备份归档日志:
/oracle/backups/log_t%t_s%s_p%p"
(archivelogall)6>
下面的脚本归档日志从#90to100:
(archivelogfromlogseq=90untillogseq=100thread1);
下面的脚本备份在24小时内产生的归档日志,在备份完成后会自动删除归档日志。
如果备份失败,归档日志不会被删除。
(archivelogfromtime"
sysdate-1"
alldeleteinput);
使用下面的命令显示恢复目录中的归档日志:
listbackupsetofarchivelogall;
RMAN找到归档日志后会备份指定日志,如果无法找到日志,它也不会返回错误信息。
8.2.Backinguptheonlinelogs备份联机日志
联机日志不能用RMAN来备份,必须先将其归档。
为了实现这点,必须在RMAN中执行如下SQL语句:
sql"
altersystemarchivelogcurrent"
上面的脚本可以在执行完一个完整的联机数据库备份后执行,确保所有的重做日志可以将数据库恢复到一个一致性的状态。
不可以标识归档日志备份集。
9.增量备份
N级别增量备份备份从最近的N级别或者更小级别以来的所有更改过的数据块内容。
增量备份分为两种,一种是累积增量备份,一种是非累积增量备份。
累积增量备份包括自最后一次在更低级别进行备份以来所有改动过的数据块。
非累积增量备份包括自前一次在同级或者更低级别进行备份以来改动过的数据块。
9.1.Level0--增量备份策略的基础
Level0是增量备份策略的基础--thebasisoftheincrementalbackupstrategy
incrementallevel05>
filesperset46>
/oracle/backups/sunday_level0_%t"
Line#
4:
0级备份
定义每个backupset的最大文件数
使用LIST语句查看,数据库备份集的列表显示中,"
type"
将显示"
Incremental"
,"
LV"
列将显示"
0"
。
9.2.使用增量备份的案例
一个典型的增量备份案例如下:
星期天晚上-level0backupperformed
星期一晚上-level2backupperformed
星期二晚上-level2backupperformed
星期三晚上-level1backupperformed
星期四晚上-level2backupperformed
星期五晚上-level2backupper