4.2.3 脱机备份恢复
数据库处于关闭状态时进行的备份操作被称为脱机备份。DM使用DMRMAN(DM recovery manager)工具进行脱机备份,并且支持对异常关闭的数据库进行脱机库备份。对备份异常关闭的数据库,配置了本地归档,如果本地归档不完整,则需要先修复本地归档,再进行备份。
脱机还原是指数据库处于关闭状态时执行的还原操作,脱机还原通过DMRMAN工具进行。库备份、表空间备份和归档备份,可以执行脱机还原。脱机还原操作的目标库必须处于关闭状态。在DM8中,库还原和表空间还原必须脱机执行。
4.2.3.1 DMRMAN工具
DMRMAN是DM自带的脱机备份还原管理工具,在DM_HOME/bin目录下。
在使用DMRMAN工具时需要注意以下3个条件。
(1)DmAPService服务是正常运行的。
(2)在DM_HOME/bin目录下执行dmrman命令。
(3)备份的实例必须处于关闭状态。
如果不满足这3个条件,执行会报错。DMRMAN的使用帮助如下:
DMRMAN工具支持以如下方式输入命令进行备份。
在DMRMAN控制台输入命令:
DMRMAN工具也可以配置环境变量,包括存储介质类型、备份集搜集目录、归档日志搜集目录、跟踪日志文件等。
环境变量的配置语法如下:
参数说明如下。
(1)CONFIGURE:查看设置的默认值。
(2)CLEAR:清除参数值。
(3)DEVICE TYPE:存储备份集的介质类型,支持DISK和TAPE,默认介质类型为DISK。
(4)PARMS:介质参数,供第三方存储介质(TAPE)管理使用。
(5)BACKUPDIR:默认搜集备份的目录。
(6)ARCHIVEDIR:默认搜集归档的目录。
(7)ADD:添加默认基备份搜索目录或归档日志目录,若已经存在,则替换原来的。
(8)DELETE:删除指定默认基备份搜索目录或归档日志目录。
进入DMRMAN工具:
查看DMRMAN配置:
设置默认的备份目录:
添加备份目录:
删除备份目录:
添加归档目录:
清除单项配置值:
清除所有配置值:
4.2.3.2 数据库备份
DMRMAN是脱机备份还原管理工具,在执行备份之前,必须关闭实例。
DMRMAN备份数据库的语法如下:
上述语法和联机备份的类似,这里只描述一个参数DATABASE后面的‘<INI文件路径>’。因为联机备份是在DISQL工具中执行的,在执行之前已经确认了实例信息,而DMRMAN是脱机备份还原管理工具,所以在DATABASE选项之后必须加上dm.ini参数的绝对路径,以确定备份的数据库。其他参数说明可以参考联机物理备份还原实战部分。
示例1 完全备份数据库:
示例2 增量备份数据库:
注意:增量备份和完全备份之间必须有事务操作,否则备份会报错。
4.2.3.3 数据库还原恢复
1.数据库还原恢复介绍
数据库还原是指根据库备份集中记录的文件信息重新创建数据库文件,并将数据页重新复制到目标数据库的过程。此阶段包含3个动作:还原(RESTORE)、恢复(RECOVER)、数据库更新(UPDATE DB_MAGIC)。
RESTORE命令从备份集中还原对象(配置文件和数据文件等),备份集可以是脱机库级备份集,也可以是联机库级备份集。还原语法如下:
参数说明如下。
DATABASE:指定还原库目标的dm.ini文件路径。
BACKUPSET:指定用于还原目标数据库的备份集目录。若指定为相对路径,会在默认备份目录下搜索备份集。
DEVICE TYPE:指定存储备份集的介质类型,支持DISK和TAPE,默认介质类型为DISK。
PARMS:表示介质参数,供第三方存储介质(TAPE)管理使用。
IDENTIFIED BY:指定备份时使用的加密密码,供还原过程解密使用。
ENCRYPT WITH:指定备份时使用的加密算法,供还原过程解密使用,若未指定,则使用默认算法。
WITH BACKUPDIR:指定基备份集搜索目录。
MAPPED FILE:指定存放还原目标路径的文件。
TASK THREAD:指定还原过程中用于处理解压缩和解密任务的线程个数。若未指定,则默认为4;若指定为0,则调整为1;若指定超过当前系统主机核数,则调整为主机核数。
RENAME TO:指定还原数据库后是否更改库的名称,指定时将还原后的库改为指定的数据库名,默认使用备份集中的db_name作为还原后库的名称。
OVERWRITE:还原数据库时,若存在重名的数据文件,指定是否覆盖重建,不指定时默认报错。
RECOVER命令是在RESTORE之后继续完成数据库恢复工作。RECOVER命令可以基于备份集,也可以基于本地的归档日志,主要利用日志来恢复数据的一致性。
数据库恢复有两种方式:
(1)从备份集恢复,即重做备份集中的REDO日志;
(2)从归档恢复,即重做归档中的REDO日志。
基于归档日志的RECOVER命令语法如下:
基于备份集的RECOVER命令语法如下:
这里注意以下两个参数。
(1)WITH ARCHIVEDIR:指定本地归档日志搜索目录,若未指定,则仅使用目标库配置本地归档目录,DSC环境还会取REMOTE归档目录。
(2)USE DB_MAGIC:指定本地归档日志对应数据库的DB_MAGIC,若不指定,则默认使用目标恢复数据库的DB_MAGIC。DB_MAGIC是一个唯一值,每个实例都不一样。
数据库更新(UPDATE DB_MAGIC)也是利用RECOVER命令实现的。在数据库执行RECOVER命令后,需要执行更新操作(UPDATE MAGIC),数据库调整为可正常工作的库才算完成。如果数据库在执行完RESTORE之后就已经处于一致性的状态(如脱机备份的恢复),可以不用执行RECOVER操作,直接执行UPDATE DB_MAGIC操作。
数据库更新的语法如下:
2.从备份集还原恢复
在数据库比较大,或者事务比较多的情况下,备份过程中生成的日志也会存储到备份集中,如联机备份(SQL语句备份),在这种情况下,执行数据库还原操作后,还需要重做备份集中备份的日志,以将数据库恢复到备份时的一致状态,即从备份集恢复。
(1)SQL联机备份数据库:
(2)停止实例:
(3)还原数据库:
(4)从备份集恢复数据库:
(5)更新数据库:
如果没有进行RECOVER而直接进行UPDATE DB_MAGIC,在条件不满足的情况下,数据库系统会报如下错误:
4.2.3.4 表空间还原
在DMRMAN中也可以利用RESTORE命令进行表空间的脱机还原和恢复,这里的备份集可以是联机的,也可以是脱机的。如果是脱机备份,不需要单独对表空间进行备份,可以直接利用数据库的脱机备份集来进行表空间的恢复。并且不需要将表空间设置为OFFLINE状态,也可以对SYSTEM和ROLL表空间进行还原。
由于表空间的数据库对象等字典信息保存在数据库的SYSTEM表空间中,为保证还原后表空间与当前库保持一致状态,缺省会基于当前日志将表空间数据恢复到最新状态。RESTORE的语法如下:
查看表空间和数据文件信息:
(1)联机备份表空间TEST:
(2)停库:
(3)物理删除数据文件:
(4)还原表空间(使用DMRMAN工具):
(5)删除这个数据文件:
(6)直接恢复数据文件,之前查询该数据文件对应编号是1,所以还原如下:
(7)起库,查看数据和表空间信息: