这篇资料主要讲到了如下内容:
1.Rman的维护
2.恢复目录的维护
3.备份恢复目录
4.RMAN存储脚本
5.删除数据库
一.RMAN的维护
1.1交叉效验RMAN备份
在RMAN目录和物理备份目的地不同步的情况下,我们可以使用crosscheck命令来效验控制文件或恢复目录中的RMAN信息是否与备份介质上的实际物理备份集片相同。
使用crosscheck命令时,我们关心每个备份集或者副本的状态。如果使用控制文件,用于备份集片的v$backup_set视图和用于副本的v$databfile_copy视图中的status列列出了每个备份集或副本的状态码;如果使用恢复目录,则在备份集片的RC_BACKUP_SET和副本的RC_DATAFILE_COPY中列出了每个备份集或副本的状态码。在不同的备份状态码中,我们关心以下两种状态:
(1)A(Available:可用):RMAN认定该项存在于备份介质上
(2)X(Expired:不可用):这个备份集片或副本上存储的RMAN目录(即控制文件或恢复目录)中,但是并没有物理存在于备份介质上。
使用crosscheck命令的目的是将RMAN目录的状态设置为AVAILABLE或者EXPIRED。执行crosscheck时,RMAN检查目录中列出的每个备份集或副本并且判断他们是否存在与备份介质上。如果备份集或副本不存在与备份介质上,它就会被标记为expired,并且不能用于任何还原操作;如果备份集或副本存在与备份介质上,它就会维持available状态。如果以前被标记为expired的备份集或副本再次存在于备份介质上,crosscheck命令就会将它标记回available。
RMAN>crosscheckbackup;
使用目标数据库控制文件替代恢复目录
分配的通道:ORA_DISK_1
通道ORA_DISK_1:SID=25设备类型=DISK
交叉校验备份片段:找到为'AVAILABLE'
备份片段句柄=F:/BACKUP/BL_01LI7BSC_1_1.BAKRECID=1STAMP=723758988
交叉校验备份片段:找到为'AVAILABLE'
备份片段句柄=F:/BACKUP/BL_02LI7BSK_1_1.BAKRECID=2STAMP=723758997
交叉校验备份片段:找到为'AVAILABLE'
备份片段句柄=F:/BACKUP/BL_03LI7BVK_1_1.BAKRECID=3STAMP=723759093
可以交叉效验数据文件备份,表空间备份,控制文件备份以及服务器参数文件备份。此外,可以通过识别与备份相关联的标记来选择要交叉效验和特定的备份。基于使用的设备或者基于一个时间周期,我们甚至可以交叉效验所有的备份。如:
Crosscheckbackupofdatafile1;
Crosscheckbackupoftablespaceusers;
Crosscheckbackupofcontrolfile;
Crosscheckbackupofspfile;
Crosscheckbackuptag='TEST';
Crosscheckbackupcompletedafter'sysdate-2';
Crosscheckbackupcompletedbetween'sysdate-5'and'sysdate-2';
Crosscheckbackupdevicetypedisk;
交叉验证归档日志示例:
RMAN>crosscheckarchivelogall;
使用目标数据库控制文件替代恢复目录
分配的通道:ORA_DISK_1
通道ORA_DISK_1:SID=24设备类型=DISK
对归档日志的验证成功
归档日志文件名=D:/ARCHIVELOG/BL_ARC0000000005_0723658881.0001RECID=1STAMP=723756640
对归档日志的验证成功
归档日志文件名=D:/ARCHIVELOG/BL_ARC0000000006_0723658881.0001RECID=2STAMP=723758988
对归档日志的验证成功
归档日志文件名=D:/ARCHIVELOG/BL_ARC0000000007_0723658881.0001RECID=3STAMP=723759092
我们可以基于一个号码或标准(包括时间,具体的或指定范围的SCN或日志序列号)来交叉效验归档的重做日志备份,甚至还可以使用like参数与通配符来交叉效验特定的归档日志备份。如:
Crosscheckarchiveloglike'ARC001.log';
Crosscheckarchivelog'D:/archivelog/arc023.log';
Crosscheckarchiveloglike'%ARC00012.LOG';
Crosscheckarchivelogfromtime"to_date('2010-7-10','yyyy-mm-dd')";
Crosscheckarchiveloguntiltime"to_date('2010-7-10','yyyy-mm-dd')";
Crosscheckarchivelogfromsequence12;
Crosscheckarchiveloguntilsequence522;
使用crosscheckcopy命令还可以交叉效验副本。包括数据文件副本,控制文件副本,归档重做日志副本以及磁盘上的归档的重做日志。如:
Crosscheckcopyofdatafile5;
Crosscheckdatafilecopy'D:/APP/ADMINISTRATOR/ORADATA/BL/BL01.DBF';
1.2RMAN备份的验证
RMAN提供的validate命令允许查看给定的备份集和进行验证以确保这个备份集能够被还原。注意,validate命令必须要获得主键ID。这个可以用listbackupsummary命令获取。
RMAN>listbackupsummary;
备份列表
===============
关键字TYLVS设备类型完成时间段数副本数压缩标记
------------------------------------------------------------
1BAADISK07-7月-1011NOTAG20100707T200948
2BFADISK07-7月-1011NOTAG20100707T200956
3BAADISK07-7月-1011NOTAG20100707T201132
RMAN>validatebackupset1;
启动validate于10-7月-10
使用通道ORA_DISK_1
通道ORA_DISK_1:正在开始验证归档日志备份集
通道ORA_DISK_1:正在读取备份片段F:/BACKUP/BL_01LI7BSC_1_1.BAK
通道ORA_DISK_1:段句柄=F:/BACKUP/BL_01LI7BSC_1_1.BAK标记=TAG20100707T200948
通道ORA_DISK_1:已还原备份片段1
通道ORA_DISK_1:验证完成,用时:00:00:03
完成validate于10-7月-10
1.3备份保存策略
保存策略(retentionpolicy)是管理备份和副本以及指定他们在备份介质上保存时间的一种方法。我们可以定义两种基本的保存策略:恢复窗口保存策略(recoverywindowbackupretentionpolicy)和备份冗余备份保存策略(backupredundancybackupretentionpolicy)。
每个冗余策略将一直保持知道被修改或者删除(或者直到使用createcontrolfile命令重新构建控制文件的时候)。两个冗余策略是相互排斥的。此外,即使使用了冗余策略,也只能在使用带obsolete参数的delete命令的时候才能删除物理备份片。
1.3.1恢复窗口备份保存策略
这种保存策略是基于想要数据库恢复到的最近日期定制的。如:
Configureretentionpolicytorecoverywindow7days;
在这个示例中,我们保存近7天的备份是有效的,超过7天的备份会被丢弃。
1.3.2备份冗余备份保存策略
这种备份策略RMAN会从最新备份开始保留n个数据库备份。如:
Configureretentionpolicytoredundancy3;
这个示例中,我们保存最后3份有效的备份。
1.3.3保存策略的维护
当一个给定的备份或者副本由于备份保存策略的标准而被丢弃时,RMAN不会自动删除这个备份或副本,而只是标记为OBSOLETE.我们可以使用reportobsolete命令查看被RMAN标记为obsolete的备份。
RMAN>reportobsolete;
RMAN保留策略将应用于该命令
将RMAN保留策略设置为冗余1
已废弃的备份和副本报表
类型关键字完成时间文件名/句柄
----------------------------------------------------------------
存档日志107-7月-10D:/ARCHIVELOG/BL_ARC0000000005_0723658881.0001
存档日志207-7月-10D:/ARCHIVELOG/BL_ARC0000000006_0723658881.0001
备份集107-7月-10
备份片段107-7月-10F:/BACKUP/BL_01LI7BSC_1_1.BAK
当然,我们也可以使用带有keep参数的change命令修改需要保留的已经被丢弃备份的状态。使用这个命令时,其状态被修改的备份或副本被认为是一个长期备份(long-termbackup),并且不受相应的保存策略的影响。
可以使用change命令将一个备份修改为永久备份,也可以为这个备份或副本定义丢弃的日志。此外,还可以定义与这个备份关联的所有日志都应当被保留,以保证总是能将该备份恢复到当前时间。我们还可以使用changenokeep命令来手工丢弃一个备份。示例:
RMAN>listbackup;
备份集列表
===================
BS关键字大小设备类型占用时间完成时间
--------------------------------------------------
152.15MDISK00:00:0407-7月-10
BP关键字:1状态:AVAILABLE已压缩:NO标记:TAG20100707T200948
段名:F:/BACKUP/BL_01LI7BSC_1_1.BAK
备份集1中的已存档日志列表
线程序列低SCN时间下限下一个SCN下一次
--------------------------------------------------
1598634006-7月-10100659007-7月-10
16100659007-7月-10100850107-7月-10
BS关键字类型LV大小设备类型经过时间完成时间
--------------------------------------------------------
2Full974.46MDISK00:01:3307-7月-10
BP关键字:2状态:AVAILABLE已压缩:NO标记:TAG20100707T200956
段名:F:/BACKUP/BL_02LI7BSK_1_1.BAK
备份集2中的数据文件列表
文件LV类型CkpSCNCkp时间名称
----------------------------------
1Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/SYSTEM01.DBF
2Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/SYSAUX01.DBF
3Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/UNDOTBS01.DBF
4Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/USERS01.DBF
5Full100851007-7月-10
修改一个备份或副本时,必须引用与这个备份关联的备份集关键字。
另外,keepforever选项有两个重要的限制:
(1)只有在使用恢复目录时,才可以使用该选项
(2)如果使用FRA,则不能使用该选项
修改备份为永久保存并将以及该备份的相关的日志保存下来,保证总能将备份恢复到当前时间点
changebackupset31keepforeverlogs;
设置备份丢弃的新日期,将备份在多保存7天,7天后将删除
changebackupset32keepuntiltime'sysdata+7'logs;
检查完报告后,可以使用带有obsolete参数的delete命令指示Oracle删除要丢弃的备份,如:
Deleteobsolete;
如果要使一个备份不受所选冗余策略的影响,可以使用backup命令的keep参数来为这个备份指定另一个保存标准。如:
Backupdatabasekeepforever;
Backupdatabasekeepuntiltime"to_date('2010-7-10','yyyy-mm-dd')";
Backupdatabasekeep5days;
1.4change命令
Change命令允许用户修改备份的状态。我们可能会遇到备份介质设备在某个时间爱你段中无效的情况(如突然断电)。这时,我们就可以使用change命令来指示这个设备上的备份是不可用的。
解决硬件故障和修复磁盘后,额可以再次执行change命令,将备份改为可用的状态。也可以将备份修改为不可用的状态。在还原和恢复操作期间,不会考虑哪些不可用的备份,但在执行deleteexpired命令期间这些备份记录不会被删除。相关示例:
Changebackupofdatabasetag='TEST'unavailable;
Changebackupofdatabaselike'%TEST%'unavailable;
Changebackupset33unavailable;
Changebackupset33available;
Changearchivelog'd:/archivelog/arc0001.log'unavailable;
可以使用change命令修改归档的重做日志备份的状态。如:将已经备份了指定次数的所有归档的重做日志备份修改为不可用的状态,也可以修改特定设备上的所有备份的状态。
Changearchivelogallbackedup5timestodevicetypediskunavailable;
Changebackupofdatabasedevicetypediskunavailable;
可是使用带有delete参数的change命令删除备份集,即在备份介质上的物理删除,并且从控制文件和恢复目录中删除。前提是要知道备份集关键字,可以使用listbackup或listcopy命令查看。
RMAN>listbackup;
备份集列表
===================
BS关键字大小设备类型占用时间完成时间
--------------------------------------------------
152.15MDISK00:00:0407-7月-10
BP关键字:1状态:AVAILABLE已压缩:NO标记:TAG20100707T200948
段名:F:/BACKUP/BL_01LI7BSC_1_1.BAK
备份集1中的已存档日志列表
线程序列低SCN时间下限下一个SCN下一次
--------------------------------------------------
1598634006-7月-10100659007-7月-10
16100659007-7月-10100850107-7月-10
BS关键字类型LV大小设备类型经过时间完成时间
--------------------------------------------------------
2Full974.46MDISK00:01:3307-7月-10
BP关键字:2状态:AVAILABLE已压缩:NO标记:TAG20100707T200956
段名:F:/BACKUP/BL_02LI7BSK_1_1.BAK
备份集2中的数据文件列表
文件LV类型CkpSCNCkp时间名称
----------------------------------
1Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/SYSTEM01.DBF
2Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/SYSAUX01.DBF
3Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/UNDOTBS01.DBF
4Full100851007-7月-10D:/APP/ADMINISTRATOR/ORADATA/BL/USERS01.DBF
5Full100851007-7月-10
删除备份集1:
RMAN>changebackupset1delete;
使用通道ORA_DISK_1
备份片段列表
BP关键字BS关键字Pc#Cp#状态设备类型段名称
----------------------------------------------------
1111AVAILABLEDISKF:/BACKUP/BL_01LI7BSC_1_1.BAK
是否确定要删除以上对象(输入YES或NO)?yes
已删除备份片段
备份片段句柄=F:/BACKUP/BL_01LI7BSC_1_1.BAKRECID=1STAMP=723758988
1对象已删除
在上面的这个示例中,我们删除了备份集和它关联的备份片。也可以删除一些备份片。通过listbackup命令我们可以看到备份片的名称,比如:段名:F:/BACKUP/BL_01LI7BSC_1_1.BAK。
我们也可以查看备份片的号码,用catalog用户连接数据库后,查看rc_backup_piece表,SQL如下:
SQL>selectbs_key,bp_key,piece#,handlefromrc_backup_piece;
BS_KEYBP_KEYPIECE#HANDLE
-----------------------------------------------------------------------------
52551D:/BACKUP/ORCL_02LI47UA_1_1
53561D:/BACKUP/ORCL_03LI47UF_1_1
75821D:/BACKUP/ORCL_04LI4816_1_1
删除备份片,我们可以用BP_KEY,也可以直接用段名(handle),如:
RMAN>Changebackuppiece'F:/BACKUP/BL_02LI7BSK_1_1.BAK'delete;
使用通道ORA_DISK_1
备份片段列表
BP关键字BS关键字Pc#Cp#状态设备类型段名称
----------------------------------------------------
2211AVAILABLEDISKF:/BACKUP/BL_02LI7BSK_1_1.BAK
是否确定要删除以上对象(输入YES或NO)?yes
已删除备份片段
备份片段句柄=F:/BACKUP/BL_02LI7BSK_1_1.BAKRECID=2STAMP=723758997
1对象已删除
使用备份集片,如:
Changebackuppiece622delete;
Changearchiveloguntillogseq=54delete;
最后,可以使用changebackuppieceuncataog命令从目录中删除备份集片。如果删除最后剩余的备份集片,那么它也将删除备份集记录。如:
Changebackuppiece'F:/BACKUP/BL_02LI7BSK_1_1.BAK'uncatalog;
1.5delete命令
备份集不是永远存在的。我们可以使用保存策略标记备份有效性和生存期的结束。但是,备份策略的实施不会从RMAN目录中删除备份,而只是将这些备份标记为丢弃状态。
Delete命令对备份和副本的影响很大。通过delete命令,可以删除基于保存标准被标记为丢弃的任何备份,还可以将恢复目录或控制文件中的备份从expired状态变为deleted状态。如:
Deleteexpired;
Deleteobsolete;
执行delete命令时,RMAN会请求用户确认这个删除命令,如果确认了这个删除命令,RMAN就会完成delete操作。
注意:如果一个备份被标记为deleted状态,就不能恢复这个备份。如果该备份物理可用,我们仍然可以使用dbms_backup_restore过程来恢复这个备份。
1.6在RMAN中为其他备份编写目录
使用catalog命令可以在RMAN中记录数据文件备份,归档日志备份和控制文件备份,随后还能使用这些备份来还原和恢复数据库。Oracle10g允许使用catalog命令来为控制文件中已有的备份集片编写目录。当使用一个不包含最新的RMAN信息的较早备份控制文件还原数据库时,则可以很方便得使用该功能来完成。
示例:
我们先备份一个表空间,归档文件,控制文件。然后通过catalog把这些信息添加到恢复目录里。
SQL>conn/@blassysdba;
已连接。
SQL>altertablespaceusersbeginbackup;
表空间已更改。
SQL>selectfile_namefromdba_data_files;
FILE_NAME
------------------------------------------------------------------------------
D:/APP/ADMINISTRATOR/ORADATA/BL/USERS01.DBF
D:/APP/ADMINISTRATOR/ORADATA/BL/UNDOTBS01.DBF
D:/APP/ADMINISTRATOR/ORADATA/BL/SYSAUX01.DBF
D:/APP/ADMINISTRATOR/ORADATA/BL/SYSTEM01.DBF
D:/APP/ADMINISTRATOR/ORADATA/BL/BL01.DBF
SQL>hostcopyD:/APP/ADMINISTRATOR/ORADATA/BL/USERS01.DBFF:/backup;
已复制1个文件。
SQL>altertablespaceusersendbackup;
表空间已更改。
SQL>altersystemarchivelogcurrent;
系统已更改。
SQL>hostcopyd:/archivelog/BL_ARC0000000017_0723658881.0001F:/backup
已复制1个文件。
SQL>alterdatabasebackupcontrolfileto'F:/backup/bl-2010-7-11.ctl';
数据库已更改。
现在在RMAN中将上面的备份信息写入catalog
C:/Users/Administrator.DavidDai>rmantarget/@bl;
恢复管理器:Release11.2.0.1.0-Productionon星期日7月1108:51:502010
Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.
连接到目标数据库:BL(DBID=680066685)
RMAN>catalogdatafilecopy'F:/backup/users01.dbf';
已将数据文件副本列入目录
数据文件副本文件名=F:/BACKUP/USERS01.DBFRECID=3STAMP=724063951
RMAN>catalogarchivelog'f:/backup/BL_ARC0000000017_0723658881.0001';
已编目的归档日志
归档日志文件名=F:/BACKUP/BL_ARC0000000017_0723658881.0001RECID=14STAMP=724063994
RMAN>catalogcontrolfilecopy'f:/backup/BL-2010-7-11.CTL';
已列入目录的控制文件副本
控制文件副本文件名=F:/BACKUP/BL-2010-7-11.CTLRECID=4STAMP=724064022
Catalog命令允许将与新的备份集相关的信息输入到控制文件或恢复目录中。RMAN将重写与编写目录的信息冲突的已存在的目录信息。如果需要移动备份集片的位置,也可以使用该命令。
查看备份集信息
RMAN>listbackup;
备份集列表
===================
BS关键字大小设备类型占用时间完成时间
--------------------------------------------------
37.50KDISK00:00:0107-7月-10
BP关键字:3状态:AVAILABLE已压缩:NO标记:TAG20100707T201132
段名:F:/BACKUP/BL_03LI7BVK_1_1.BAK
将备份集移到其他位置,然后用catalog修改控制文件中每个移动的备份片的正确位置:
RMAN>catalogbackuppiece'f:/BL_03LI7BVK_1_1.BAK';
已将备份片段列入目录
备份片段句柄=F:/BL_03LI7BVK_1_1.BAKRECID=12STAMP=724064512
也可以使用带有startwith选项的catalog命令,该命令允许定义包含将要编写目录的RMAN备份集片的目录,RMAN然后对该目录中的所有备份集片编写目录。
RMAN>catalogstartwith'f:/backup';
该命令会提示编写目录的文件列表,并询问是否希望对所列出的文件编写目录,如果确定编写目录,RMAN就会对列出的所有备份集片编写目录。该命令也允许对一些具有类似名称的备份集片编写目录。
当使用catalogstartwith命令时,不会局限与特定的文件编写目录;该命令将尝试对符合参数列表的所有文件编写目录。然后,在执行catalog过程中,非备份集片的文件将会使编写目录的过程失败,并且产生一个错误,如果作为备份集片文件被成功编写目录,则不管是否会产生其他错误。
二.恢复目录的维护
使用恢复目录时会涉及到其他一些维护活动,比如在数据库升级或迁移期间升级恢复目录,手工配置数据库对应物以及在某些数据库操作后在同步恢复目录。
2.1在RMAN中取消注册数据库
在Oracle10g之前,从恢复目录中取消注册数据库是一个手工操作的过程。在10g中,从恢复目录中删除数据库只需要执行unregisterdatabase。如:
RMAN>unregisterdatabaseorcl;
注意的是:该命令不会删除该数据库的备份文件,而只是删除这些备份文件的恢复目录引用。同样需要注意的是,只需要连接恢复目录就可以执行该命令。
2.2数据库的迁移和升级问题
升级数据库时,必须同事升级恢复目录,因为数据库版本,RMAN版本和恢复目录版本之间存在严格的格则。
用恢复目录用户连接数据库,然后查询rcver表,就可以看到恢复目录的版本:
SQL>connrman/rman@orcl;
已连接。
SQL>selectversionfromrcver;
VERSION
------------
11.02.00.01
只要恢复目录的版本不低于数据库的版本,就能够执行各种操作。因此,如果在同一个恢复目录中存储多个数据库,只要升级这个恢复目录中的一个数据库。
升级恢复目录很简单,只需要在RMAN里执行upgradecatalog命令即可。RMAN会提示用户再次输入upgradecatalog命令,随后将升级恢复目录。
C:/Users/Administrator.DavidDai>rmantarget/@blcatalogrman/rman@orcl;
恢复管理器:Release11.2.0.1.0-Productionon星期日7月1110:16:202010
Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.
连接到目标数据库:BL(DBID=680066685)
连接到恢复目录数据库
RMAN>upgradecatalog;
恢复目录所有者是RMAN
再输入一次UPGRADECATALOG命令来确认目录升级
RMAN>upgradecatalog;
恢复目录已升级到版本11.02.00.01
DBMS_RCVMAN程序包升级为11.02.00.01版
DBMS_RCVCAT程序包升级为11.02.00.01版
2.3手工重置数据库对应物(resetcatalog)
在打开数据库时,如果使用resetlogs参数,就会创建一个新对应物。如果这个操作是在RMAN中进行,则会正确的更新恢复目录,但是,如果手工执行resetlogs命令(比如:sqlplus),就必须在恢复目录中重置数据库对应物。
Rman>resetdatabasetoincarnation5;
2.4手工再同步恢复目录(resynccatalog)
RMAN使用恢复目录时,它会使用在同步进程来确保恢复目录和目标数据库的控制文件一致。通常,Oracle在RMAN操作(备份和恢复)后会再同步数据库,这样就不必经常再同步恢复目录。需要再同步恢复目录的一个实例是有时使用恢复目录,有时不使用恢复目录,此时,可以使用resynccatalog命令手工使Oracle再同步恢复目录。
Rman>resynccatalog;
Oracle同步恢复目录时,它首先会创建一个快照控制文件,并比较这个文件和恢复目录。完成比较后,Oracle更新恢复目录,是恢复目录与数据库控制文件同步。
2.5恢复目录记录的删除
只有很少的记录会从恢复目录中被删除,如果不加以维护,状态为deleted的就备份会一直驻留在恢复目录中。为了解决这个问题,Oracle提供了$ORACLE_HOME/rdbms/admin/prgmanc.sql脚本来删除恢复目录中状态为deleted的所有记录。建议定期执行这个脚本,以控制文件恢复目录的大小。
如果要从恢复目录中删除旧的对应物记录,就必须从DBINC表中删除这些对应物。可以使用RC_DATABASE_INCARNATION视图来确定要删除的对应物,记录想删除的每个对应物的DBINC_KEY值。然后在sqlplus中执行delete命令,如:
SQL>select*fromrc_database_incarnation;
DB_KEYDBIDDBINC_KEYNAMERESETLOGS_CHANGE#RESETLOGS_TIMECURP
-------------------------------------------------------------------------
212473957434ORCL94097621-5月-10NO0
2124739574321ORCL102-4月-10NO
21247395743787ORCL855496806-7月-10YES2
SQL>deletefromdbincwheredbinc_key=4;
已删除1行。
三.备份恢复目录
我们可以使用RMAN来备份数据库,同样可以用RMAN来备份恢复目录数据库。只要确保设置了合理的恢复策略,就能够很快的还原恢复目录。
丢失恢复目录并不可怕,即使使用了恢复目录,在以后也可以不使用恢复目录就能够恢复数据库。关键的是,我们需要数据库控制文件的备份。
四.RMAN存储的脚本
在RMAN中,我们可以创建一个命令文件,里面包含rman命令,然后在RMAN的中调用这个文件。如:
Rmantargetusr/pwdcmdfile=backup.cmd
或者,也可以直接在RMAN中直接运行
@@backup.cmd
此外,RMAN还提供了恢复目录中的存储脚本,这些操作必须使用恢复目录。
4.1创建存储的脚本
使用createscriptRMAN命令可以在恢复目录中存储脚本。创建每个存储的脚本时,都要为脚本指定一个名称。可以创建执行数据库备份,恢复和维护操作的脚本。在脚本中,RMAN允许使用comment参数存储与存储脚本相关的注释。注意:必须连接到恢复目录。如:
RMAN>createscriptmy_backup_script
2>comment'dave'
3>{
4>backupdatabaseplusarchivelog;
5>}
已创建脚本my_backup_script
4.2修改存储脚本
使用replacescript命令可以替换恢复目录中的存储脚本。
RMAN>replacescriptmy_backup_script
2>comment'bl'
3>{
4>backupdatabaseplusarchivelogdeleteinput;
5>}
已替换脚本my_backup_script
4.3删除存储脚本
使用deletescript命令可以删除一个存储脚本。
RMAN>Deletescriptmy_backup_script;
已删除脚本:my_backup_script
4.4使用存储脚本
创建一些存储过程脚本后,可以执行executescript命令来使用这些脚本。如:
Run{executescriptmy_backup_script;}
4.5打印存储的脚本
RMAN>Printscriptmy_backup_script;
正在打印存储的脚本:my_backup_script
{backupdatabaseplusarchivelog;}
还可以使用RC_STORED_SCRIPT_LINE恢复目录视图来显示存储的脚本的内容,如:
SQL>selectscript_name,textfromrc_stored_script_lineorderbyscript_name,line;
SCRIPT_NAMETEXT
-------------------------------------------------------------------------------
my_backup_script{
my_backup_scriptbackupdatabaseplusarchivelogdeleteinput;
my_backup_script}
五.删除数据库
如果无法采取其他方法来处理数据库的问题,则可以使用RMAN的dropdatabase。只需要将数据库置于受限制的会话模式,在使用RMAN连接到目标数据库,执行dropdatabase命令,就可以安静的删除数据库。如果添加inculdingbackups参数,则在删除同时删除RMAN相关的备份。执行该命令时,RMAN首先会确认操作,然后继续删除数据库。如果希望不回显提示,可以使用noprompt参数。示例:
DROPDATABASE;
DROPDATABASENOPROMPT;
DROPDATABASEINCLUDINGBACKUPS;
DROPDATABASEINCLUDINGBACKUPSNOPROMPT;
The“DROPDATABASE”commanddeletesthe
Datafiles
Logfiles
Controlfiles
Spfile
The”DROPDATABASEINCLUDINGBACKUPS”commandinadditiontotheabovefilesalsoremoves
Archivelogs
BackuppiecesgeneratedbyRMAN
SQL>startupmount;
ORACLE例程已经启动。
TotalSystemGlobalArea636100608bytes
FixedSize1376464bytes
VariableSize457183024bytes
DatabaseBuffers171966464bytes
RedoBuffers5574656bytes
数据库装载完毕。
SQL>altersystemenablerestrictedsession;
系统已更改。
altersystemdisablerestrictedsession.
C:/Users/Administrator.DavidDai>rmantarget/;
恢复管理器:Release11.2.0.1.0-Productionon星期日7月1114:23:482010
Copyright(c)1982,2009,Oracleand/oritsaffiliates.Allrightsreserved.
已连接到目标数据库:BL(DBID=680066685,未打开)
RMAN>DROPDATABASEINCLUDINGBACKUPS;
数据库名为"BL"且DBID为680066685
是否确实要删除所有备份和数据库(输入YES或NO)?yes
使用目标数据库控制文件替代恢复目录
分配的通道:ORA_DISK_1
通道ORA_DISK_1:SID=10设备类型=DISK
......
补充一点,windows下,不会删除服务,要删除服务,需要手工的运行ormdim命令。如:
C:/Users/Administrator.DavidDai>oradim-delete-sidbl
Unabletostopservice,OSError=1062
实例已删除。
整理自《Oracle10gRMAN备份与恢复》
------------------------------------------------------------------------------
Blog:http://blog.csdn.net/tianlesoftware
网上资源:http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1群:62697716(满);DBA2群:62697977
DBA3群:63306533;聊天群:40132017