使用DMRMAN执行表空间还原
介绍表空间的脱机还原。表空间的脱机还原除了支持联机还原的所有功能外,也放开了SYSTEM和ROLL表空间还原操作。与联机表空间还原不同的是,脱机表空间还原不需要事先置目标表空间为OFFLINE状态。语法如下:
RESTORE DATABASE '' TABLESPACE < 表空间名> [DATAFILE< <文件编号> {,< 文件编号>} | '< 文件路径>' {,'< 文件路径>'}>] FROM BACKUPSET '< 备份集目录>' [DEVICE TYPE DISK|TAPE[PARMS '< 介质参数>']] [IDENTIFIED BY < 密码> [ENCRYPT WITH < 加密算法>]] [WITH BACKUPDIR '< 基备份集搜索目录>'{,'< 基备份集搜索目录>'}] [ ] [MAPPED FILE '< 映射文件>'][TASK THREAD < 任务线程数>] [NOT PARALLEL] [UNTIL TIME '< 时间串>'] [UNTIL LSN ]; ::= WITH ARCHIVEDIR '< 归档日志目录>'{,'< 归档日志目录>'}
DATABASE:指定还原库目标的dm.ini文件路径。
TABLESPACE:指定还原的表空间,可以是用户表空间,也可以是SYSTEM系统表空间和ROLL回滚表空间。
DATAFILE:还原指定的数据文件。可以指定数据文件编号或数据文件路径。文件编号,对应动态视图V$DATAFILE中ID列的值;文件路径,对应动态视图V$DATAFILE中PATH或者MIRROR_PATH列的值,也可以仅指定数据文件名称(相对路径),与表空间中数据文件匹配时,会使用SYSTEM目录补齐。
BACKUPSET:指定用于还原目标数据库的备份集目录。若指定为相对路径,会在默认备份目录下搜索备份集。
DEVICE TYPE:指存储备份集的介质类型,支持DISK和TAPE,默认为DISK。DISK表示备份集存储介质为磁盘,TAPE表示存储介质为磁带。
PARMS:介质参数,供第三方存储介质(TAPE类型)管理使用。
IDENTIFIED BY:指定备份时使用的加密密码,供还原过程解密使用。
ENCRYPT WITH:指定备份时使用的加密算法,供还原过程解密使用,若未指定,则使用默认算法。
WITH BACKUPDIR:指定备份集搜索目录。
MAPPED FILE:指定存放还原目标路径的文件,参见3.3.5.2.1 数据库还原。当< 备份集目录>和< 映射文件>指定的路径不一致时,以< 映射文件>指定的路径为主
TASK THREAD:指定还原过程中用于处理解压缩和解密任务的线程个数。若未指定,则默认为4;若指定为0,调整为1;若指定超过当前系统主机核数,则调整为当前核数。
NOT PARALLEL:指定并行备份集使用非并行方式还原。对于非并行备份集,不论是否指定该关键字,均采用非并行还原。
WITH ARCHIVEDIR:本地归档日志搜索目录,若未指定,则仅使用目标库配置的第一个本地归档。
UNTIL TIME:恢复数据库到指定的时间点。
UNTIL LSN:恢复数据库到指定的LSN。
使用说明:
1. 表空间还原不能是TEMP表空间,指定文件还原也不能为TEMP表空间中文件。
2. 表空间还原要求还原目标库与备份库为同一个库,且若还原目标库中SYSTEM表空间没有故障且还原目标表空间不是SYSTEM表空间的话,则要求目标库校验通过,比如加密校验和日志校验等;否则将使用备份集中信息与当前的进行校验。
3. 还原目标库不能为已经执行过restore,但是未指定过recover的库。
4. SYSTEM表空间和ROLL表空间不允许指定UNTIL LSN或者UNTIL TIME还原;其他用户表空间可以。若未指定UNTIL TIME或者UNTIL LSN,则均还原到最新状态。使用UNTIL TIME(或者UNTIL LSN)的同时不能指定DATAFILE还原,否则报语法错误。
5. 处于RES_OFFLINE或CORRUPT状态的表空间不允许指定表空间中数据文件还原。
6. 整个还原过程中不会修改数据库本身状态或者调整CKPT_LSN。
7. 不管是RAC环境,还是单机环境,若异常退出,需手动指定各节点归档修复后,使用各节点完整的归档日志执行还原恢复;否则,将可能无法恢复到最新。
8. 异常退出库指定UNTIL TIME或者UNTIL LSN还原失效,因为库故障重启时会执行故障修复,UNTIL失效,表空间仍会恢复到最新状态。
9. 若目标库中SYSTEM表空间故障,则必须优先还原SYSTEM表空间。在DMRAC环境中进行表空间还原,需要先确保所有节点实例都已退出,此时在任一节点上使用该节点的备份集均可进行表空间还原操作,且只要在一个节点上执行目标表空间还原即可。对于两节点RAC01、RAC02,表空间的还原操作如下:
RMAN>backup database '/home/DMDBMS/rac/dm01.ini' backupset '/home/DMDBMS/bak/rman_dm01_01'; RMAN>restore database'/home/DMDBMS/rac/dm01.ini' tablespace main from backupset '/home/DMDBMS/bak/rman_dm01_01' with archivedir'/home/DMDBMS/rac/arch_dest1';
10. 如果SYSTEM表空间处于ONLINE/OFFLINE状态且文件丢失,则必须要通过库还原修复,不支持对其执行表空间还原。
下面的例子将对RAC环境中的TS_FOR_DBF表空间执行还原
1.对数据库执行备份
SQL> backup database full backupset '/dm7/backup/db_bak_for_tbs'; executed successfully used time: 00:00:01.217. Execute id is 11.
2.在DMRAC环境中进行表空间还原,需要先确保所有节点实例都已退出,此时在任一节点上使用该节点的备份集均可进行表空间还原操作,且只要在一个节点上执行目标表空间还原即可。对于两节点RAC01、RAC02,表空间的还原操作如下:
[root@dmrac1 backup]# service DmServicerac1 stop Stopping DmServicerac1: [ OK ] [root@dmrac2 rac1_config]# service DmServicerac2 stop Stopping DmServicerac2: [ OK ] RMAN> restore database 'dm7/data/rac0_config/dm.ini' tablespace ts_for_dbf from backupset '/dm7/backup/db_bak_for_tbs' with archivedir '/dm7/data/rac0_arch','/dm7/data/rac1_arch' until; restore database '/dm7/data/rac0_config/dm.ini' tablespace ts_for_dbf from backupset '/dm7/backup/db_bak_for_tbs' with archivedir '/dm7/data/rac0_arch' , '/dm7/data/rac1_arch' ; file dm.key not found, use default license! checking if the RAC database under system path [+DMDATA/data/rac] is running.... EP [0] is checking.... EP [1] is checking.... RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini] CHECK...... EP[0] max_lsn: 92312 RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini], dbf collect...... RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini], ts status and dbf refresh ...... RESTORE BACKUPSET [/dm7/backup/db_bak_for_tbs] START...... total 2 packages processed... RESTORE TABLESPACE[ts_for_dbf] IN DB[/dm7/data/rac0_config/dm.ini], UPDATE ctl file...... EP 0's ckpt_lsn = 90803 min_ckpt_lsn = 90803 The RAC redo archive log 1 ptx The RAC redo archive log 2 ptx The RAC redo archive log 3 ptx The RAC redo archive log 4 ptx The RAC redo archive log 5 ptx The RAC redo archive log 6 ptx The RAC redo archive log 7 ptx The RAC redo archive log 8 ptx The RAC redo archive log 9 ptx The RAC redo archive log 10 ptx The RAC redo archive log 11 ptx The RAC redo archive log 12 ptx The RAC redo archive log 13 ptx The RAC redo archive log 14 ptx The RAC redo archive log 15 ptx The RAC redo archive log 16 ptx The RAC redo archive log 17 ptx The RAC redo archive log 18 ptx The RAC recover total redo 18 ptx EP[0] Recover LSN from 90803 to 92307. EP[1] Recover LSN from 92310 to 92309. Recover from archive log finished, time used:0.004s. total 6 packages processed! CMD END.CODE:[0] restore successfully. time used: 4423.437(ms)
3.启动RAC实例
[root@dmrac1 data]# service DmServicerac1 start Starting DmServicerac1: [ OK ] [root@dmrac2 rac1_config]# service DmServicerac2 start Starting DmServicerac2: [ OK ]