|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
当然,或许这并不是我们拒绝MySQL的一个有说服力的MySQL学习教程,但是对于一些比较守旧的IT经理来说,在为一些关键业务选择平台的时候,平台的成熟性却是必须要考虑的一个因素,在这一点上,MySQL无疑毫无优势。oracle|疾速进门媒介
这篇文章次要先容RMAN的经常使用办法,个中包括了作者一些本人的履历,内里的实行也基础全在WIN2K和ORACLE8.1.6情况下测试乐成(由于这个情况对照简单完成)。
本文自创了网上一些妙手的相干文章,但愿年夜侠们不要见责,此处一并谢过。
这篇文章次要是在北京出差时代写的,回抵家后收拾修正了一下,工夫对照仓皇,同时由于篇幅无限,一些手艺细节不克不及逐一掩盖了,只但愿可以匡助老手进门的感化,想真正纯熟把握RMAN,必需经由较长工夫的理论检验才能够,特别必要在工程中取得可贵的妨碍办理履历。
1.甚么是RMAN
RMAN能够用来备份和复原数据库文件、回档日记和把持文件。它也能够用来实行完整或不完整的数据库恢复。
注重:RMAN不克不及用于备份初始化参数文件和口令文件。
RMAN启动数据库上的Oracle服务器历程来举行备份或复原。备份、复原、恢复是由这些历程驱动的。
RMAN能够由OEM的BackupManagerGUI来把持,但在本文章里不作重点会商。
2.Terminology专业辞汇注释2.1.Backupsets备份汇合
备份汇合有上面的特征:
包含一个或多个数据文件或回档日记
以oracle专有的格局保留
有一个完整的一切的备份片汇合组成
组成一个完整备份或增量备份
2.2.Backuppieces备份片
一个备份集由多少个备份片构成。每一个备份片是一个独自的输入文件。一个备份片的巨细是无限制的;假如没有巨细的限定,备份集就只由一个备份片组成。备份片的巨细不克不及年夜于利用的文件体系所撑持的文件长度的最年夜值。
2.3.Imagecopies镜像备份
镜像备份是自力文件(数据文件、回档日记、把持文件)的备份。它很相似操纵体系级的文件备份。它不是备份集或备份片,也没有被紧缩。
2.4.Fullbackupsets全备份汇合
全备份是一个或多个数据文件中利用过的数据块的的备份。没有利用过的数据块是不被备份的,也就是说,oracle举行备份汇合的紧缩。
2.5.Incrementalbackupsets增量备份汇合
增量备份是指备份一个或多个数据文件的自从上一次统一级其余或更初级其余备份以来被修正过的数据块。与完整备份不异,增量备份也举行紧缩。
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:oracleoradatamanman_ts.dbf"size20M;表空间已创立。
第二步,在目次数据库中创立RMAN用户并受权:
SQL>createuserrmanidentifiedbyrmandefaulttablespacerman_tstemporarytablespacetempquotaunlimitedonrman_ts;用户已创立。SQL>grantrecovery_catalog_ownertorman;受权乐成。SQL>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"andhasthesameTNSalias
theschemacontainingtherecoverycatalogis"rman"(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/<PASSWORD>@his
4.3.利用RMAN
一旦毗连到方针数据库,能够经由过程交互界面大概事前存储的剧本实行指定RMAN命令,上面是一个利用RMAN交互界面的实例:
RMAN>resynccatalog;RMAN-03022:正在编译命令:resyncRMAN-03023:正在实行命令:resyncRMAN-08002:正在启动全体恢复目次的resyncRMAN-08004:完玉成部resync
利用剧本的实例:
RMAN>executescriptalloc_1_disk;
创立大概替换存储的剧本:
RMAN>replacescriptalloc_1_disk{2>allocatechanneld1typedisk;3>}
5.注册大概刊出方针数据库
5.1.注册方针数据库
数据库形态:
恢复目次形态:翻开
方针数据库:加载大概翻开
方针数据库在第一次利用RMAN之前必需在恢复目次中注册:
第一步,启动恢复办理器,而且毗连方针数据库:
C:>rmantargetinternal/oracle@hiscatalogrman/rman@rman恢复办理器:版本8.1.6.0.0-ProductionRMAN-06005:毗连到方针数据库:HIS(DBID=3021445076)RMAN-06008:毗连到恢复目次数据库
第二步,注册数据库:
RMAN>registerdatabase;RMAN-03022:正在编译命令:registerRMAN-03023:正在实行命令:registerRMAN-08006:注册在恢复目次中的数据库RMAN-03023:正在实行命令:fullresyncRMAN-08002:正在启动全体恢复目次的resyncRMAN-08004:完玉成部resync
5.2.刊出方针数据库
RMAN供应了一个刊出工具,叫DBMS_RCVCAT工具包,请注重一旦刊出了该方针数据库,就不成以利用恢复目次中含有的备份集来恢单数据库了。
为了能刊出数据库,必要取得数据库的标识码(DB_ID)和数据库键值(DB_KEY)。个中毗连方针数据库时将会取得DB_ID。
C:>rmantargetinternal/oracle@hiscatalogrman/rman@rman恢复办理器:版本8.1.6.0.0-ProductionRMAN-06005:毗连到方针数据库:HIS(DBID=3021445076)RMAN-06008:毗连到恢复目次数据库
个中DBID=3021445076,使用DBID=3021445076查询数据库键值码,毗连到方针数据库,查询db表:
SQL>select*fromdb;DB_KEYDB_IDCURR_DBINC_KEY----------------------------------130214450762
取得DB_KEY=1,如许,该方针数据库DB_KEY=1,DBID=3021445076,使用两个值利用DBMS_RCVCAT工具包就能够刊出数据库:
SQL>executedbms_rcvcat.unregisterdatabase(1,3021445076);PL/SQL历程已乐成完成。
至此,刊出数据库操纵完成。
6.操纵已有的备份6.1.到场目次数据库
数据库形态:
恢复目次:翻开
方针数据库:加载大概翻开
假如存在8.x版本之前创立的备份数据想注册到方针数据库,能够接纳以下手工体例到场到恢复目次中
RMAN>catalogdatafilecopy"/oracle/..../system01.dbf";
利用以下命令显现恢复目次中包括的文件
RMAN>listcopyofdatabase;
6.2.从目次数据库中删除
第一步:检察备份信息:
RMAN>listbackup;RMAN-03022:正在编译命令:list
备份集列表
关头字Recid标志LV汇合标志汇合计数完成工夫-----------------------------------------------------------------------110425013644550501364446206-8月-03
备份段列表
关头字Pc#Cp#形态完成工夫段名----------------------------------------------------------------------110611AVAILABLE06-8月-03D:ORACLEORA81DATABASE 2EU4DMU_1_1
数据文件包含列表
文件称号LV范例反省点SCN反省点工夫----------------------------------------------------------------------3D:ORACLEORADATAHISUSERS01.DBF0Full16005206-8月-03
备份集的关头字为1104。
第二步:界说delete通道:
RMAN>allocatechannelfordeletetypedisk;RMAN-03022:正在编译命令:allocateRMAN-03023:正在实行命令:allocateRMAN-08030:分派的通道:deleteRMAN-08500:通道delete:sid=19devtype=DISK
第三步:删除backupset备份集
RMAN>changebackupset1104delete;RMAN-03022:正在编译命令:changeRMAN-08073:已删除备份段RMAN-08517:备份段handle=D:ORACLEORA81DATABASE 2EU4DMU_1_1recid=2stamp=501364447RMAN-03023:正在实行命令:partialresyncRMAN-08003:启动部分恢复目次的resyncRMAN-08005:完成部分resync
注重:部分实行删除备份集、备份片大概保护恢复目次的命令,必要先指定通道,如:
RMAN>allocatechannelfordeletetypedisk;RMAN>allocatechannelformaintenancetypedisk;
7.在非回档形式下备份
数据库形态:
恢复目次:翻开
方针数据库:例程启动大概数据库加载
恢复目次数据库必要翻开,方针数据库必需启动(大概加载)。由于方针数据库不在回档形式下,以是当举行备份恢复操纵的时分数据库没法翻开。不成以将表空间置于热备份形式长进行同等于文件体系级的拷贝,假如在非回档形式,数据库翻开的形态下不克不及举行数据文件的备份。
7.1.数据库完整备份
RMAN>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标明备份一切数据文件包含把持文件
经由过程上面的命令显现恢复目次中纪录的备份集信息:
RMAN>listbackupsetofdatabase;
7.2.备份表空间
RMAN>run{2>allocatechanneldev1typedisk;3>backup4>tagtbs_users_read_only5>format"/oracle/backups/tbs_users_t%t_s%s"6>(tablespaceusers)7>}
利用以下命令来显现恢复目次中该表的备份信息:
RMAN>listbackupsetoftablespaceusers;
假定USERS表空间在备份后被置为READONLY表空间,今后的全库备份就能够不必备份该表空间,为了到达这个目标,能够在今后的备份中指定"skipreadonly"。
注重,方针数据库不必要必定翻开,只需加载就能够,由于表空间的信息存储在把持文件中。
7.3.备份独自数据文件
RMAN>run{2>allocatechanneldev1type"SBT_TAPE";3>backup4>format"%d_%u"5>(datafile"/oracle/dbs/sysbigdb.dbf");6>releasechanneldev1;7>}
行#
2:利用MML(mediamanagerlayer)分派磁带驱动器,必需指定范例为SBT_TAPE;
注重由于没有指定标识,以是标识为空;
利用上面的命令显现恢复目次中备份的表空间:
RMAN>listbackupsetofdatafile1;
7.4.备份数据文件
RMAN>run{2>allocatechanneldev1type"SBT_TAPE";3>copydatafile"/oracle/dbs/temp.dbf"to"/oracle/backups/temp.dbf";4>releasechanneldev1;5>}
利用上面的命令显现恢复目次中的文件拷贝:
RMAN>listcopyofdatafile"/oracle/dbs/temp.dbf";
拷贝数据文件和备份数据文件是纷歧样的,数据文件拷贝是一个该文件的镜像。文件的备份发生一个备份集。
7.5.备份把持文件
RMAN>run{2>allocatechanneldev1type"SBT_TAPE";3>backup4>format"cf_t%t_s%s_p%p"5>tagcf_monday_night6>(currentcontrolfile);7>releasechanneldev1;8>}
注重:数据库完整备份将主动备份把持文件。
8.回档形式下的备份
数据库形态:
恢复目次:翻开
方针数据库:例程启动,数据库加载大概翻开
备份操纵利用的命令与非回档形式下基础一样。
8.1.Backinguparchivedlogs备份回档日记
上面的剧本备份回档日记:
RMAN>run{2>allocatechanneldev1typedisk;3>backup4>format"/oracle/backups/log_t%t_s%s_p%p"5>(archivelogall)6>releasechanneldev1;7>}
上面的剧本回档日记从#90to100:
RMAN>run{2>allocatechanneldev1typedisk;3>backup4>format"/oracle/backups/log_t%t_s%s_p%p"5>(archivelogfromlogseq=90untillogseq=100thread1);6>releasechanneldev1;7>}
上面的剧本备份在24小时内发生的回档日记,在备份完成后会主动删除回档日记。假如备份失利,回档日记不会被删除。
RMAN>run{2>allocatechanneldev1typedisk;3>backup4>format"/oracle/backups/log_t%t_s%s_p%p"5>(archivelogfromtime"sysdate-1"alldeleteinput);6>releasechanneldev1;7>}
利用上面的命令显现恢复目次中的回档日记:
RMAN>listbackupsetofarchivelogall;
注重:RMAN找到回档日记后会备份指定日记,假如没法找到日记,它也不会前往毛病信息。
8.2.Backinguptheonlinelogs备份联机日记
联机日记不克不及用RMAN来备份,必需先将其回档。
为了完成这点,必需在RMAN中实行以下SQL语句:
RMAN>run{2>allocatechanneldev1typedisk;3>sql"altersystemarchivelogcurrent";4>backup5>format"/oracle/backups/log_t%t_s%s_p%p"6>(archivelogfromtime"sysdate-1"alldeleteinput);7>releasechanneldev1;8>}
下面的剧本能够在实行完一个完全的联机数据库备份后实行,确保一切的重做日记能够将数据库恢复到一个分歧性的形态。
注重:不成以标识回档日记备份集。
9.增量备份
N级别增量备份备份从比来的N级别大概更小级别以来的一切变动过的数据块内容。增量备份分为两种,一种是积累增量备份,一种长短积累增量备份。
积累增量备份包含自最初一次在更初级别举行备份以来一切修改过的数据块。
非积累增量备份包含自前一次在同级大概更初级别举行备份以来修改过的数据块。
9.1.Level0--增量备份战略的基本
Level0是增量备份战略的基本--thebasisoftheincrementalbackupstrategy
RMAN>run{2>allocatechanneldev1typedisk;3>backup4>incrementallevel05>filesperset46>format"/oracle/backups/sunday_level0_%t"7>(database);8>releasechanneldev1;9>}
Line#
4:0级备份
5:界说每一个backupset的最年夜文件数
利用LIST语句检察,数据库备份集的列表显现中,"type"将显现"Incremental","LV"列将显现"0"。
9.2.利用增量备份的案例
一个典范的增量备份案比方下:
礼拜天早晨-level0backupperformed
礼拜一夜-level2backupperformed
礼拜二早晨-level2backupperformed
礼拜三早晨-level1backupperformed
木曜日早晨-level2backupperformed
礼拜五早晨-level2backupperformed
礼拜六早晨-level2backupperformed
礼拜天早晨-level0backupperformed
10.恢复
恢复案比方下:
10.1.Databaseopen,datafiledeleted数据库翻开时,文件被删除
数据文件在数据库翻开时被删除。有两种办法能够对翻开的数据库举行恢复:复原数据文件大概表空间。上面两个实例显现了该办法:
(a)Datafilerecovery数据文件恢复
RMAN>run{2>allocatechanneldev1typedisk;3>sql"altertablespaceusersofflineimmediate";4>restoredatafile4;5>recoverdatafile4;6>sql"altertablespaceusersonline";7>releasechanneldev1;8>}
(b)Tablespacerecovery表空间恢复
RMAN>run{2>allocatechanneldev1typedisk;3>sql"altertablespaceusersofflineimmediate";4>restoretablespaceusers;5>recovertablespaceusers;6>sql"altertablespaceusersonline";7>releasechanneldev1;8>}
注重:假如复原体系表空间文件,数据库必需封闭,由于体系表空间不成以脱机。
10.2.Completerestore(lostonlineredo)androllforward-databaseclosed完整复原(丧失联机日记)而且前滚-数据库封闭
RMAN>run{2>allocatechanneldev1typedisk;3>setuntillogseq=105thread=1;4>restorecontrolfileto"/oracle/dbs/ctrltargdb.ctl";5>replicatecontrolfilefrom"/oracle/dbs/ctrltargdb.ctl";6>restoredatabase;7>sql"alterdatabasemount";8>recoverdatabase;9>sql"alterdatabaseopenresetlogs";10>releasechanneldev1;11>}
Notes:
"setuntil"命令指明恢复到指定的日记文件。这一点在数据文件恢复时很主要,不然RMAN将试图恢复比来的数据文件,该数据文件大概在指定的日记之前。
"replicatecontrolfile"复制复原的把持文件到INIT.ORA指定的把持文件。
假如数据库利用WITHRESETLOGS翻开,则必要利用RESETDATABASE命令注册改动后的数据库。在利用RESETLOGS命令翻开数据库后激烈倡议做一个完整的数据库备份。
10.3.复原数据文件的子集,完整恢复
RMAN>run{2>allocatechanneldev1typedisk;3>sql"alterdatabasemount";4>restoredatafile2;5>restoredatafile3;6>restorearchivelogall;7>recoverdatabase;8>sql"alterdatabaseopen";9>releasechanneldev1;10>}
11.剧本
创立大概代替剧本:
RMAN>createscriptalloc_disk{2>#Allocatesonedisk3>allocatechanneldev1typedisk;4>setlimitchanneldev1kbytes2097150maxopenfiles32readrate200;5>}RMAN>replacescriptrel_disk{2>#releasesdisk3>releasechanneldev1;5>}RMAN>replacescriptbackup_db_full{2>#Performsacompletebackup3>executescriptalloc_disk;4>backup5>.....6>executescriptrel_disk;7>}
前两个剧本分离用来分派和接纳通道。
alloc_disk剧本还分外指定了备份片的最年夜兆字节数,备份时能够同时翻开的输出文件的最年夜数量,和每秒钟读每一个输出文件的数据缓冲区的最年夜数量。
第三个剧本挪用先前存储的两个剧本举行数据库备份。
运转存储剧本的树模:
RMAN>run{2>executescriptbackup_db_full;3>}
注重:存储的剧本必需在{....execute<script>;....}命令中挪用。
12.Corruptiondetection
RMAN能够备份包括破坏数据块的数据文件,查询视图V$BACK_CORRUPTION和V$COPY_CORRUPTION能够取得有关坏数据的信息。
经由过程设置setmaxcorrupt能够跳过指定个数的坏块来制止备份失利。
RMAN>replacescriptbackup_db_full{2>#Performsacompletebackup3>executescriptalloc_disk;4>setmaxcorruptfordatafile1to0;5>backup6>.....7>executescriptrel_disk;8>}
下面的剧本maxcorruptfordatafile1to0设置为0,以是假如有毛病数据块在数据文件1中发明,下面的剧本实行就会失利。
13.通道
一个通道是RMAN和方针数据库之间的一个毗连,"allocatechannel"命令在方针数据库启动一个服务器历程,同时必需界说服务器历程实行备份大概恢复操纵利用的I/O范例
通道把持命令能够用来:
把持RMAN利用的O/S资本
影响并行度
指定I/O带宽的限定值(设置limitreadrate参数)
界说备份片巨细的限定(设置limitkbytes)
指定以后翻开文件的限定值(设置limitmaxopenfiles)
14.Report&listcommands14.1.List
list命令查询恢复目次而且发生格局化的查询内容:
RMAN>listbackupsetofdatafile1;
KeyFileTypeLVCompletion_timeCkpSCNCkpTime
----------------------------------------------------------
1651 FullOct0311:2432022Oct0311:24
2081 FullOct2414:2752059Oct2414:26
2191 FullOct2414:3152061Oct2414:31
<<otherentrieshere>>
RMAN>listbackupsetofarchivelogall;
KeyThrdSeqCompletiontime
---------------------------------
179194Oct0311:26
179195Oct0311:26
<<otherentrieshere>>
14.2.Report
REPORT命令一样能够查询恢复目次,可是REPORT命令语法能够构建取得更加有效的信息的指令,REPORT命令输入能够保留到动静日记文件中,可是必需在毗连恢复目次时指定MSGLOG大概LOG选项。
能够列出一切数据库中不克不及恢复的文件列表:
RMAN>reportunrecoverabledatabase;
显现全体数据文件:
RMAN>reportschema;RMAN-03022:正在编译命令:report数据库形式报表文件千字节表空间RBsegs称号1121472SYSTEMYESD:ORACLEORADATAHISYSTEM01.DBF2327680RBSYESD:ORACLEORADATAHISRBS01.DBF3110592USERSNOD:ORACLEORADATAHISUSERS01.DBF473728TEMPNOD:ORACLEORADATAHISTEMP01.DBF512288TOOLSNOD:ORACLEORADATAHISTOOLS01.DBF659392INDXNOD:ORACLEORADATAHISINDX01.DBF
15.小提醒
常常同步恢复目次
确认删除不必要的回档日记
备份战略复杂准绳
据我的观察,现在有一个趋势,那些经过正式培训的数据库管理员DBA更倾向于选择一个专有关系数据库,例如Oracle。对于一些具有专门数据库管理员的比较大的环境来说,MySQL很难得到宠爱,这时候,关于MySQL是否真的具有良好的可扩展性的争论已经没有意义。 |
|