联机备份
对联机备份的支持与限制:
联机还原
仅支持表级还原,对联机还原的支持与限制:
MPP 和分布式数据库不支持;
PRIMARY 支持;
SUSPEND 状态所有还原均不支持;
OPEN/NORMAL 支持。
脱机备份
脱机备份支持库级和归档备份。
脱机还原
脱机还原跟目标库所处的模式、状态以及集群环境(MPP 和 DSC)无关,允许库级、表空间级和归档还原。
DM 的 dmarch.ini 可以进行归档配置,dmarch.ini 生效的前提是 dm.ini 中的参数 ARCH_INI 置为 1。
联机备份(含数据库、表空间)必须配置归档,因需备份事务活动期的REDO日志保障一致性;
联机配置归档的步骤如下:
手动配置归档即在数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。
本地归档
远程归档
DM 支持通过联机执行 SQL 语句方式对数据库执行备份还原操作。
1.2.2.1.1 概述
在 DIsql 工具中使用 BACKUP 语句你可以备份整个数据库
执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录
1.2.2.1.2 设置备份选项
设置联机数据库备份集路径
例 指定备份集路径为“/home/dm_bak/db_bak_3_01”。
例 数据库名称为 DAMENG,在 2025 年 6 月 23 日执行一次数据库备份,指定备份集格式串为“/home/dm_bak/%R_%d_%T”。
设置备份名
例 创建备份集,备份名设置为“WEEKLY_FULL_BAK”。
增量备份指定基备份集路径
下面以增量备份用户 MAIN 表空间为例,指定 BASE ON BACKUPSET 参数执行增量备份:
添加备份描述
例 创建备份为备份集添加描述信息为“完全备份”。
限制备份片大小
例 创建备份限制备份片大小为 128MB
备份压缩
例 执行备份压缩,压缩级别设置为 5,对照组不做压缩
并行备份
例 7 创建并行备份,指定并行数为 8
1.2.2.1.3 备份数据库
完全备份和增量备份是数据库备份的最常用策略。
完全备份
数据库完全备份中包含了指定库的全部有效数据页。
归档模式下 Disql
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
增量备份
增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。
归档模式下 Disql
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
1.2.2.1.4 DSC 环境使用说明
1.2.2.2.1 概述
在 DIsql 工具中使用 BACKUP 语句也可以备份单个表空间。
1.2.2.2.2 设置备份选项
表空间备份也可指定备份集路径、介质类型、备份名等备份选项。
增量备份指定基备份集路径
1.2.2.1.2 设置备份选项
中已演示
1.2.2.2.3 备份表空间
同数据库备份一样,表空间备份也可分为完全备份和增量备份。
完全备份
完全备份一个表空间步骤如下:
归档模式下 Disql
BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';
增量备份
增量备份表空间步骤如下:
归档模式下 Disql
BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak'BACKUPSET
'/home/dm_bak/ts_increment_bak_02';
1.2.2.3.1 概述
与备份数据库与表空间不同,备份表不需要服务器配置归档,DIsql 中输入以下即可备份用户表:
1.2.2.3.2 设置备份选项
表备份常用的备份选项有设置备份名、设置备份集路径、指定介质参数、添加备份描述等,设置方式同数据库备份相同。
1.2.2.3.3 表备份
完整的备份表步骤如下:
保证数据库处于 OPEN 状态;
创建待备份的表 TAB_01:
CREATE TABLE TAB_01(C1 INT);
DIsql 中输入备份表语句,简单的备份语句如下:
BACKUP TABLE TAB_01 BACKUPSET '/home/dm_bak/tab_bak_01';
1.2.2.4.1 概述
在 DIsql 工具中使用 BACKUP 语句可以备份归档日志。
DIsql 中输入以下即可备份归档:
1.2.2.4.2 设置备份选项
归档备份常用的备份选项有设置备份名、设置备份集路径、指定介质参数、添加备份描述等,设置方式与数据库备份相同。
1.2.2.4.3 备份归档
完整的备份归档步骤如下:
配置归档;
保证数据库处于 OPEN 或者 MOUNT 状态;
DIsql 中输入备份数据库语句。
例 备份归档日志,通过 LSN BETWEEN … AND …来指定起始和截至 LSN。
首先,确定 LSN 范围。
select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;
查询结果如下:
//通过查询结果选出备份的起始LSN和截至LSN。比如59153 59156
其次,备份归档。
加密备份
DM 提供加密备份的方式保护用户的备份集,没有权限的用户无法访问加密的备份集。
例如,以下两种加密备份语句都是合法的:
若指定了加密密码,但加密类型 WITH ENCRYPTION 指定为 0,则为非加密备份,如下所示:
下面以数据库完全备份为例,创建加密密码为“Cdb546789”,加密算法为“rc4”的复杂类型数据库加密备份,完整步骤如下:
设置 SBT 接口跟踪日志文件
DM 备份时支持设置 SBT 接口跟踪日志文件,日志记录了 SBT 接口的调用过程,用户通过查看日志可跟踪备份还原过程。
指定参数 TRACE FILE 但 TRACE LEVEL 值设置为 1 即不启用 TRACE 功能。如下所示:
TRACE LEVEL 值设置为 2 即启用 TRACE 功能,但若 TRACE FILE 没有指定,则系统默认在执行码路径的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件。如下所示:
以数据库完全备份为例,为备份设置跟踪日志文件的操作步骤如下:
备份管理相关系统过程与函数总结如下:
备份管理相关动态视图总结如下:
1.2.4.2.1 基备份集搜索目录
使用BASE ON BACKUPSET
(指定基备份集目录)或WITH BACKUPDIR
(指定搜索目录列表)
1.2.4.2.2 动态视图备份集搜索目录
1.2.4.3 备份集校验与删除
V$BACKUPSET
显示备份集的基本信息。
V$BACKUPSET_DBINFO
显示备份集的数据库相关信息。
V$BACKUPSET_DBF
显示备份集中数据文件的相关信息,表备份时无效。
V$BACKUPSET_ARCH
显示备份集中归档文件的信息,且仅归档备份才会有数据。
V$BACKUPSET_BKP
显示备份集的备份片信息。
V$BACKUPSET_SEARCH_DIRS
显示动态视图备份集搜索目录。记录了默认备份目录(即 BAK_PATH 配置的路径)和通过存储函数 SF_BAKSET_BACKUP_DIR_ADD 添加的备份目录。
V$BACKUPSET_TABLE
显示表备份集中备份表信息,仅表备份有效。
V$BACKUPSET_SUBS
显示并行备份中生成的子备份集信息。
V$BACKUP_MONITOR
显示当前备份任务实时监控信息。
V$BACKUP_FILES
显示当前备份任务待备份数据文件列表。
V$BACKUP_HISTORY
显示最近 100 条备份监控信息。
DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。
1.2.5.1.1 概述
表还原之后不需要恢复操作。DIsql 中输入以下简单的 RESTORE 语句就可还原表:
RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
1.2.5.1.2 表还原
执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表还原。
举例如下:
指定还原时不重建索引
表备份时会默认备份表中的索引,还原时使用 RESTORE TABLE…WITHOUT INDEX…语句可选择不还原索引。完整示例如下:
指定还原时不重建约束
表备份时会默认备份表中的约束定义,还原时使用 RESTORE TABLE…WITHOUT CONSTRAINT…语句可选择还原时不重建约束。要求还原表上不能存在任何约束,否则执行还原时将报错。
完整示例如下:
DMRMAN(DM恢复管理器)是DM的脱机备份还原管理工具,负责库级脱机备份、还原、恢复等操作,支持命令行参数和控制台交互执行,降低操作难度。执行脱机操作时仅使用目标库(通过DATABASE
指定)的本地归档配置,不校验其他类型归档配置(如REALTIME、MARCH等)。
安装 DM 数据库后,DMRMAN 可执行程序与数据库其他可执行程序一样位于安装路径的执行码目录下。
若配置了环境变量 DM_HOME,可直接命令行执行:
./dmrman
启动后控制台中输入 exit 命令即可退出 DMRMAN 环境:
RMAN>exit
DMRMAN 控制台输入命令
输入以下用于执行的 DMRMAN 命令:
RMAN>HELP
RMAN>BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';
DMRMAN 控制台还可以执行脚本。如首先创建一个名为 cmd_file.txt 的文件,文件中包含“BACKUP DATABASE’/opt/dmdbms/data/DAMENG/dm.ini’”命令,保存到/home/dm_cmd 目录下,则该文件的执行方式如下:
RMAN>`/home/dm_cmd/cmd_file.txt
DMRMAN 命令行设置参数执行
DMRMAN 命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。
命令行指定脚本执行,要求我们先创建一个包含 DMRMAN 命令的文件,然后设置 CTLFILE 参数,参数后面指定文件的路径。例如,创建一个名为 cmd_rman.txt 的文件,保存到/home/dm_cmd 目录下,文件中包含一行如下所示的 DMRMAN 命令:
BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';
设置 CTLFILE 参数启动 DMRMAN 工具,指定脚本文件中的命令将被执行:
./dmrman CTLFILE=/home/dm_cmd/cmd_rman.txt
命令执行完后 DMRMAN 工具会自动退出。
命令行执行语句执行,是 DMRMAN 工具设置 CTLSTMT 参数,参数后面执行需要执行的 DMRMAN 命令,使用方法如下所示:
./dmrman CTLSTMT="BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';"
使用 CONFIGURE 命令进行 DMRMAN 的默认参数配置,配置默认的存储介质类型、跟踪日志文件、备份集搜索目录、归档日志搜索目录。
显示和清除所有默认配置项
配置存储介质类型:DISK 或 TAPE
配置跟踪日志文件
跟踪日志文件记录了 SBT 接口的调用过程,用户通过查看日志可跟踪备份还原过程。
配置备份集搜索目录
配置归档日志搜索目录
1.3.1.1.1 概述
在 DMRMAN 工具中使用 BACKUP 命令可以备份整个数据库。使用 DMRMAN 脱机备份数据库需要关闭数据库实例。若是正常退出的数据库,则脱机备份前不需要配置归档;若是故障退出的数据库,则备份前,需先进行归档修复。在 DMRMAN 中输入以下命令即可备份数据库:
RMAN>BACKUP DATABASE '/dmdata/data/DMTEST/dm.ini';
1.3.1.1.2 备份数据库
设置备份选项
备份命令如果仅指定了必选参数如“BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini'”,那么 DMRMAN 会根据配置的环境及内置的参数默认值自动指定备份介质类型、备份路径、备份片大小等参数。
创建完全备份
执行数据库备份要求数据库处于脱机状态。
步骤如下:
1.保证数据库处于脱机状态;
2.启动 DMRMAN 命令行工具;
3.DMRMAN 中输入以下命令:
RMAN>BACKUP DATABASE '/dmdata/data/DATEST/dm.ini' FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
命令中的 FULL 参数表示执行的备份为完全备份,也可以不指定该参数,DMRMAN 默认执行的备份类型为完全备份。
创建增量备份
增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。
增量备份示例如下:
1) 保证数据库处于脱机状态;
2) 启动 DMRMAN 命令行工具;
3) DMRMAN 中输入以下命令:
RMAN>BACKUP DATABASE '/dmdata/data/DMTEST/dm.ini' INCREMENT WITH BACKUPDIR '/home/dm_bak'BACKUPSET '/home/dm_bak/db_increment_bak_02';
命令中的 INCREMENT 参数表示执行的备份为增量备份,增量备份时该参数不可省略。
1.3.1.2.1 概述
在 DMRMAN 工具中使用 BACKUP 命令可以备份库的归档。
RMAN>BACKUP ARCHIVE LOG DATABASE '/dmdata/data/DMTEST/dm.ini';
1.3.1.2.2 备份归档
设置备份选项
备份命令如果仅指定了必选参数如“BACKUP ARCHIVE LOG DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'”,那么 DMRMAN 会根据配置的环境及内置的参数默认值自动指定备份介质类型、备份路径、备份片大小等参数。
创建归档备份
执行归档备份要求数据库处于脱机状态。与联机归档备份一样,脱机归档备份需要配置归档。一个完整的创建脱机归档备份的示例如下:
1.配置归档;
2.保证数据库处于脱机状态;
3.启动 DMRMAN 命令行工具;
4.DMRMAN 中输入以下命令:
RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/dmdata/data/DMTEST/dm.ini' BACKUPSET '/home/dm_bak/arch_all_bak_01';
命令中的 ALL 参数表示执行的备份为备份所有的归档,也可以不指定该参数,DMRMAN 默认执行的备份类型为 ALL 类型归档备份。
创建设置条件的归档备份
命令中的 LSN BETWEEN start AND end 表示备份 LSN 值在 start 与 end 之间的归档,也可以设置 FROM LSN(TIME)或 UNTIL LSN(TIME)。
加密备份
DMRMAN 同 DIsql 工具一样可使用加密的方式备份数据库,没有权限的用户无法访问加密的备份集。
下面以数据库完全备份为例,创建加密密码为“Cdb546789”,加密算法为“rc4”的复杂加密类型的数据库加密备份
保证数据库处于关闭状态;
备份数据库。启动 DMRMAN 工具并输入以下命令:
RMAN> BACKUP DATABASE '/dmdata/data/DMTEST/dm.ini' BACKUPSET '/home/dm_bak/db_bak_for_encrypt_04' IDENTIFIED BY "Cdb546789" WITH ENCRYPTION 1 ENCRYPT WITH RC4;
设置跟踪日志文件
TRACE LEVEL 值设置为 2 即启用 TRACE 功能,但若 TRACE FILE 没有指定,则系统默认在执行码路径的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件。
管理备份一个重要的目的是删除不再需要的备份。DMRMAN 工具提供 SHOW、CHECK、REMOVE、LOAD 等命令分别用来查看、校验、删除和导出备份集。
1.1.4.2.1 概述
DMRMAN 中使用 SHOW 命令可以查看备份集的信息,若指定具体备份集目录,则会生成相应的备份集链表信息。
1.1.4.2.2 备份集信息介绍
备份集的数据库信息以“<DB INFO>”开头,记录了备份集源库的相关属性信息,如下所示:
备份集的元信息
备份集的元信息以“<META INFO>”开头,记录了备份集的相关属性信息,如下所示:
另外,备份集的元信息中还包含了各节点的 LSN 信息,以“<EP INFO>”开头,如下所示:
EP[n] 节点号
begin_pkg_seq begin_lsn 对应的包序号
begin_lsn 备份开始时检查点 LSN
end_pkg_seq end_lsn 对应包序号
end_lsn 备份结束时最大已刷盘日志 LSN
备份集的文件信息
备份集的文件信息以“<FILE INFO>”开头,记录了备份集相关文件的属性信息。其中,备份集相关文件的统计信息如下所示:
backupset directory 备份集路径
backupset name 备份片名
backup data file num 数据文件个数
backup piece num 备份片个数
backup huge file num HUGE 数据文件个数
备份集所属的备份片信息以“<backup_piece_list>”开头,如下所示:
备份集中包含的数据文件信息以“<data_file_list>”开头,如下所示:
备份集中包含的归档文件信息以“<arch_file_list>”开头,如下所示:
备份集中包含的 HUGE 数据文件信息以“<huge_file_list>”开头,如下所示:
备份集的表空间信息以“<TABLESPACE INFO>”开头,记录了备份集中表空间的相关属性信息,如下所示:
备份集的表信息(仅对表备份集有效)
备份集的表信息以“<TABLE INFO>”开头,记录了备份集中表的相关属性信息,如下所示:
1.1.4.2.3 备份集信息查看
查看单个备份集信息
SHOW BACKUPSET…命令用于查看单个备份集信息。
批量显示备份集信息
SHOW BACKUPSETS…命令用于批量显示指定搜索目录下的备份集信息。
查看指定数据库所有备份集的信息
指定显示部分备份集信息
SHOW BACKUPSET … INFO … 命令可以显示部分备份集信息,例如 SHOW BACKUPSET…INFO META 命令可以查看备份集的元数据信息。
以 xml 格式输出备份信息到文件
DMRMAN 中使用 CHECK 命令对备份集进行校验,校验备份集是否存在及合法。
语法如下:
删除特定备份集
批量删除备份集
批量删除指定时间之前的备份集
1.1.4.5.1 概述
DMRMAN 中使用 LOAD 命令导出备份集。
1.1.4.5.2 导出备份集
例 导出磁带/dev/nst0 上所有备份集的 meta 文件到目录/mnt/hgfs/dmsrc/bak_ dir 中。直接输入导出语句将报错,如下所示:
1.1.4.6.1 概述
DMRMAN 中使用 DUMP 命令导出映射文件。不支持导出到 DMASM 文件系统中。
1.1.4.6.2 导出备份集映射文件
导出原始路径
导出备份集中数据文件的原始路径:
RMAN>DUMP BACKUPSET'/mnt/dmsrc/db_bak' DEVICE TYPE DISK MAPPED FILE '/mnt/dmsrc/db_bak_mapped.txt';
导出指定 ini_path 调整后的路径
指定 ini_path,导出调整后的数据文件路径到映射文件:
RMAN>DUMP BACKUPSET'/mnt/dmsrc/db_bak' DEVICE TYPE DISK DATABASE '/dmdata/data/DMTEST/dm.ini'MAPPED FILE '/mnt/dmsrc/db_bak_mapped.txt';
1.3.5.1.1 数据库还原
使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。
使用说明:
1.联机备份数据库,保证数据库运行在归档模式及 OPEN 状态;
SQL>BACKUP DATABASE BACKUPNAME DB_FULL_BAK_01 BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
2.准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。如下所示:
./dminit path=/dmdata/data db_name=DAMENG_FOR_RESTORE sysdba_pwd=DMdba_123 sysauditor_pwd=DMauditor_123
3.校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;
RMAN>CHECK BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
4.还原数据库。
可以直接指定还原目标库的 dm.ini 进行数据库还原,如下所示:
RMAN>RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
也可指定 REUSE DMINI 子句进行数据库还原,此时会将备份集中备份的 dm.ini 中除路径相关的 INI 参数外,均拷贝到当前 dm.ini 上。如下所示:
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' REUSE DMINI FROM BACKUPSET '/home/dm_bak/db_full_bak_for_restore';
还可以指定备份名进行数据库还原,如下所示:
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPNAME DB_FULL_BAK_01;
1.3.5.1.2 数据库恢复
1.3.5.1.2.1 恢复一致性
使用 RECOVER 命令完成数据库恢复工作,可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。
如果还原后,不需要重做日志,数据就已经处于一致性状态了(例如正常关闭库的脱机备份还原),则可以跳过这一步,直接进入数据库更新阶段。
从备份集恢复
1.启动 DIsql 联机备份数据库;
2.准备目标库,可以使用备份库,也可以重新生成库;
3.启动 RMAN,校验备份;
4.还原数据库;
5.恢复数据库
1.3.5.1.2.2 更新 DB_MAGIC
数据库更新是指更新数据库的 DB_MAGIC,并将数据库调整为可正常工作状态,与数据库恢复一样使用 RECOVER 命令完成。数据库更新发生在重做 REDO 日志恢复数据库后,或者目标库不需要执行重做日志已经处于一致状态的情况。
语法如下:
RECOVER DATABASE '<ini_path>' UPDATE DB_MAGIC;
DATABASE:指定还原目标库的 dm.ini 文件路径。
1.3.5.2.1 数据库还原
1.3.5.2.1.1 指定映射文件还原
映射文件(mappedfile)用于存放还原目标路径,即备份集里面的数据文件的路径。可以手动修改自动生成的映射文件。当参数 BACKUPSET 指定的路径和 MAPPED FILE 中指定的路径不一致时,以 MAPPED FILE 中指定的路径为主。映射文件可用于库级脱机还原和表空间还原。
下面以脱机备份还原为例说明使用映射文件还原的具体步骤。
启动 DMRMAN,脱机备份数据库;
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET'/home/dm_bak/db_bak_for_map_01';
生成映射文件 map_file_01.txt 至/home/dm_mapfile 目录。指定 DATABASE 后,生成映射文件中的数据文件路径与数据库/dmdata/data/DAMENG_FOR_RESTORE 中的数据文件路径一致。若不指定 DATABASE,则生成映射文件中的数据文件路径与备份集中的源数据库的数据文件路径一致;
RMAN> DUMP BACKUPSET'/home/dm_bak/db_bak_for_map_01' DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' MAPPED FILE'/home/dm_mapfile/map_file_01.txt';
生成的映射文件内容如下:
/**************************************************************/
/*** Delete the unnecessary modified groups **/
/*** Modify the data_path or mirror_path only in one group **/
/**************************************************************/
/**=============================================================**/
/*[DMTEST_SYSTEM_FIL_0]*/
fil_id = 0
ts_id = 0
ts_name = "SYSTEM"
data_path = "/dmdata/data/DAMENG_FOR_RESTORE/SYSTEM.DBF"
mirror_path =
data_mirror = 1
data_striping = 0
/********************************** END **********************************/
如果需要恢复数据文件或镜像文件到指定路径,可手动编辑映射文件中表空间对应的 data_path 属性。例如,要还原 MAIN 表空间中的数据文件 MAIN.DBF 到/home/dm_dbf 目录下,则需要修改组 DAMENG_MAIN_FIL_0 的内容如下:
/*[DAMENG_MAIN_FIL_0]*/
fil_id = 0
ts_id = 4
ts_name = MAIN
data_path = /home/dm_dbf/MAIN.DBF
指定映射文件还原。还原前可选择对备份文件进行校验。
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_bak_for_map_01' MAPPED FILE '/home/dm_mapfile/map_file_01.txt';
1.3.5.2.1.2 使用增量备份集还原
● 指定 INCREMENT FROM LSN 语法项生成增量备份集
● 利用增量备份集修复备库,包括还原、恢复和更新步骤
1.获取待同步数据的起始 LSN。
连接备库查询动态视图 V$RAPPLY_LSN_INFO,获取备库已重演日志信息。
2.生成增量备份集。
连接主库执行增量备份,LSN 值小于等于步骤(1)查询的 APPLY_LSN,该增量备份集包含了备库缺失的所有数据。
3.正常退出备库。
修复备库。
将步骤 2 中生成的增量备份集传输到备库所在机器,正常执行还原恢复流程。
RMAN> MERGE DATABASE '/dmdata/db_standby/dm.ini' FROM BACKUPSET '/dmdata/bak/bak_inc_lsn'
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
merge successfully.
time used: 00:00:02.857
4.执行恢复操作,重演备份过程中生成的归档日志,将数据修复为一致性状态。
RMAN> RECOVER DATABASE '/dmdata/db_standby/dm.ini' FROM BACKUPSET '/dmdata/bak/bak_inc_lsn'
[Percent:100.00%][Speed:0.00PKG/s][Cost:00:00:00][Remaining:00:00:00]
recover successfully!
time used: 00:00:05.080
5.更新数据库DB_MAGIC,标识目标库还原恢复完成。
RMAN> RECOVER DATABASE '/dmdata/db_standby/dm.ini' UPDATE DB_MAGIC
recover successfully!
time used: 00:00:01.209
重新启动备库。
还原恢复操作完成后,备库数据已同步到最新的状态,启动后即可重新加入主备集群。
1.3.5.2.2 数据库恢复
1.3.5.2.2.1 恢复数据库到指定时间点/LSN
恢复数据库到指定时间点/LSN 是从归档恢复的一种方式,也称为不完全恢复。
例 1.准备数据
2.备份数据库;
3.正确操作数据库,产生一些归档;
4.误操作数据库。此步骤误删除了表 TAB_FOR_RECOVER_01 中数据;
5.还原数据库。步骤 4)为误操作,因此我们需要将数据库恢复到步骤 3)的状态。首先需要关闭数据库实例,然后利用 DMRMAN 工具还原数据库:
6.恢复数据库到指定时间点/LSN。还原后数据库的数据与备份时一致,如果要恢复数据库至步骤 3)的状态可以指定 UNTIL TIME 或 UNTIL LSN 参数重做部分归档。
使用 RECOVER DATABASE…UNTIL TIME 命令恢复到指定的时间:
7.验证数据
1.3.5.2.2.2 主备环境下指定 DB_MAGIC 收集归档
搭建主备环境并备份任意节点;
RMAN>BACKUP DATABASE '/dmdata/data0/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/db_full_bak';
启动主备,登录主节点插入部分数据后退出,然后删除该节点下所有归档日志;
指定备份集还原到主节点;
RMAN>RESTORE DATABASE '/dmdata/data0/DAMENG/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak';
指定 DB_MAGIC,使用备库归档进行恢复。由于该节点下所有归档已被删除,无法恢复到最新状态,此时需要借助备库存在的归档。
RMAN>RECOVER DATABASE '/dmdata/data0/DAMENG/dm.ini' WITH ARCHIVEDIR '/dmdata/arch' USE DB_MAGIC 1447060264;
1.3.5.2.2.3 DMDSC 环境下的数据库恢复
DMDSC 的备份恢复与普通的单机不同的是,它包含多个节点.
搭建 DMDSC 环境,每个节点都需要配置双向的远程归档。归档配置示例如下:
DSC0 实例的 dmarch.ini 配置:
A[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/dameng/arch_dsc1
DSC1 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST =+DMDATA/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH =+DMDATA/dameng/arch_dsc0
启动 DIsql,联机备份数据库。备份其中任意一个节点即可备份整个 DMDSC 环境;
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_full_bak_for_dsc';
还原数据库。还原数据库之前可选择对备份文件进行校验。需要注意的是,待还原的目标库可以是单机库,也可以是 DMDSC 库,且节点个数允许不同;
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/home/dm_bak/db_full_bak_for_dsc';
恢复数据库。DMDSC 库恢复要求各节点归档完整性由用户保证,即各节点的本地归档都能够访问到;
RMAN>RECOVER DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' WITH ARCHIVEDIR'+DMDATA/dameng/arch_dsc0','+DMDATA/dameng/arch_dsc1';
数据库更新。
RMAN>RECOVER DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' UPDATE DB_MAGIC;
1.3.5.2.2.4 多次故障恢复后使用不同数据库归档恢复
归档连续,需注意DB_MAIGC的替换。
1.3.5.2.3 增量合并
运维过程中,可使用 MERGE 命令定期合并增量备份集到备用库,当数据库崩溃时只需要重演最后一个时间窗口内的日志,即可恢复数据到最新,方便快速恢复数据服务。
除了分批合并增量备份集外,MERGE 命令还用于还原指定 FROM LSN 生成的库备份集。
当使用指定 FROM LSN 生成的库备份集进行数据库还原时,存在以下限制:
还原目标库必须为正常退出的数据库。
在集群环境下,源库和目标库必须从属于同一集群,且目标库必须为集群中的备库。
备份时指定的 FROM LSN 必须小于等于目标库最小的 APPLY_LSN。
备份集的 END_LSN(即备份结束时系统的 CUR_LSN)必须大于等于目标库最大的 APPLY_LSN。
备份时指定的 FROM LSN 必须小于等于目标库检查点 LSN。
1.3.6.1.1 表空间还原
使用RESTORE命令可完成表空间脱机还原,支持联机/脱机生成的库备份集或联机生成的表空间备份集作为还原源。脱机还原仅涉及数据文件重建及数据页拷贝,无需提前将目标表空间置为OFFLINE。还原后表空间状态置为RES_OFFLINE,并设置数据标记FIL_TS_RECV_STATE_RESTORED(标识已还原但数据不完整)。
以联机表空间备份集为例,展示 DMRMAN 如何完成表空间的还原:
1) 联机备份表空间,保证数据库运行在归档模式及 OPEN 状态;
BACKUP TABLESPACE MAIN BACKUPNAME TEST BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';
2) 校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;
RMAN>CHECK BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';
3) 还原表空间。需要注意,表空间还原的目标库只能是备份集产生的源库,否则将报错。
可以指定备份集路径进行还原:
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_full_bak_for_restore';
也可以指定备份名称进行还原:
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPNAME TEST;
1.3.6.1.2 表空间恢复
表空间恢复通过重做REDO日志使数据达一致状态:修改的数据页先存入缓冲区,再分批写入磁盘;若过程中断,缓冲区数据可能未写入磁盘,导致数据不一致及数据库启动校验失败,故恢复过程禁止异常中断。恢复完成后,表空间状态置为ONLINE,设置数据标记FIL_TS_RECV_STAT_RECOVERED,标识数据已达一致状态。
以联机表空间备份为例,展示 DMRMAN 如何完成表空间的恢复:
1) 联机备份表空间,保证数据库运行在归档模式及 OPEN 状态;
BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_full_bak_for_recover';
2) 校验备份,校验待还原备份集的合法性,此处使用脱机校验;
RMAN>CHECK BACKUPSET '/home/dm_bak/ts_full_bak_for_recover';
3) 还原表空间。启动 DMRMAN,输入以下命令:
RMAN>RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_full_bak_for_recover';
4) 恢复表空间。启动 DMRMAN,输入以下命令:
RMAN>RECOVER DATABASE '/dmdata/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE MAIN;
1.3.6.2.1 表空间还原
还原表空间中指定的数据文件
DM支持从数据库备份、表空间备份还原表空间,及表空间内特定数据文件(表空间未损坏时)。数据库备份还原与表空间备份操作类似(区别在于RESTORE指定数据库备份集),下面以表空间备份为例说明数据文件还原步骤。
校验备份。此步骤为可选;
RMAN>CHECK BACKUPSET '/home/dm_bak/ts_bak_for_dbf';
通过文件编号还原表空间 TS_FOR_RES_01 中的数据文件 ts_for_res_01_02.dbf 和 ts_for_res_01_03.dbf;
RMAN>RESTORE DATABASE '/home/xm/DAMENG/dm.ini' TABLESPACE TS_FOR_RES_01 DATAFILE 1, 2 FROM BACKUPSET '/home/dm_bak/ts_bak_for_dbf';
如果不想使用文件编号还原,使用指定数据文件路径还原数据文件的语句如下:
RMAN>RESTORE DATABASE '/home/xm/DAMENG/dm.ini' TABLESPACE TS_FOR_RES_01 DATAFILE '/home/xm/DAMENG/ts_for_res_01_02.dbf', '/home/xm/DAMENG/ts_for_res_01_03.dbf' FROM BACKUPSET '/home/dm_bak/ts_bak_for_dbf';
指定映射文件还原
映射文件用于存放还原目标路径,即备份集里面的数据文件路径。指定映射文件还原可以重新指定备份集中数据文件的路径。下面以 MAIN 表空间为例说明如何使用映射文件还原。
1.生成映射文件的命令如下:
RMAN>DUMP BACKUPSET '/home/dm_bak/ts_bak_for_map' MAPPED FILE '/home/dm_mappedfile/map_file.txt';
2.映射文件的内容如下:
/**=============================================================**/
/*[DAMENG_MAIN_FIL_0]*/
fil_id = 0
ts_id = 4
ts_name = MAIN
data_path = /home/dm_dbf/MAIN.DBF
mirror_path =
/*********************************** END***************************/
3.还原 MAIN 表空间
RESTORE DATABASE '/home/xm/DAMENG/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_bak_for_map' MAPPED FILE '/home/dm_mappedfile/map_file.txt';
1.3.6.2.2 表空间恢复
指定归档目录恢复
由于磁盘空间的影响,数据库归档可能出现分布在多个目录的情况。出现这种情况时就需要指定归档目录恢复。表空间恢复时指定多个归档目录的操作步骤如下:
备份用户表空间 MAIN;
BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_bak_for_arch';
校验备份。此步骤可选;
RMAN>CHECK BACKUPSET '/home/dm_bak/ts_bak_for_arch';
还原用户表空间 MAIN;
RMAN>RESTORE DATABASE '/home/xm/DAMENG/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_bak_for_arch';
恢复用户表空间 MAIN。假设归档日志分布在/home/dm_arch1 和/home/dm_arch2 两个目录下。
RMAN>RECOVER DATABASE '/home/xm/DAMENG/dm.ini' TABLESPACE MAIN WITH ARCHIVEDIR '/home/dm_arch1', '/home/dm_arch2';
主备环境下指定 DB_MAGIC 收集归档
主备环境下,当前节点归档缺失时,使用归档恢复会因日志不连续报错,无法恢复至最新状态;若另一节点有该部分日志,可用其恢复。默认恢复仅收集与待恢复库DB_MAGIC、PERMANENT_MAGIC一致的归档,主备环境中PERMANENT_MAGIC一致,故指定DB_MAGIC可跳过此限制。
搭建主备环境并登录任意节点进行备份;
BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_bak_for_arch';
登录主节点插入部分数据后退出,然后删除该节点下所有归档日志;
从备份集还原表空间 MAIN 到主节点;
RMAN>RESTORE DATABASE '/dmdata/DAMENG/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/home/dm_bak/ts_bak_for_arch';
指定 DB_MAGIC,使用备库归档进行恢复。由于主节点下所有归档已被删除,无法恢复到最新状态,此时需要借助备库存在的归档进行恢复。
RMAN>RECOVER DATABASE '/dmdata/DAMENG/dm.ini' TABLESPACE MAIN WITH ARCHIVEDIR '/home/dm_arch2' USE DB_MAGIC 18446520;
使用 RESTORE 命令完成脱机还原归档操作,在还原语句中指定归档备份集。备份集可以是脱机归档备份集,也可以是联机归档备份集。
可以指定还原的目标归档日志目录:
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO ARCHIVEDIR'/opt/dmdbms/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2;
也可以指定还原目标库的 dm.ini 文件路径:
RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/home/dm_bak/arch_all_for_restore' TO DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;
上面两个示例语句都是通过指定备份集路径进行还原,除此之外还可指定备份名称进行还原:
RMAN> RESTORE ARCHIVE LOG FROM BACKUPNAME ARCH_ALL_BAK_01 TO DATABASE '/opt/dmdbms/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;
1.3.8 归档修复
使用 REPAIR 命令完成指定数据库的归档修复,归档修复会对目标库 dmarch.ini 中配置的所有本地归档日志目录执行修复。若目标库没有配置本地归档,则不执行修复。
使用说明:
单机环境下,确保目标库已经停止工作后,执行归档修复;
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/data/dm.ini';
DSC 环境下,需要每个节点停止工作后,每个节点独立执行修复操作;
对于两节点 DSC01、DSC02 执行修复如下:
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm01.ini';
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm02.ini';
DM备份还原涉及四类日志,均存储于log目录,命名格式为dm_类型_xxx.log(xxx为年月,如202205),仅事件日志支持按SVR_ELOG_FREQ参数切换分月/日/时归档,其余日志不可切换。
全局不可配置日志,记录数据库运行关键事件(如启动/关闭、内存/IO错误、备份还原阶段性信息),格式为:时间+日志级别+进程/线程+内容。示例包含版本信息、License警告、启动失败等日志。
记录备份/还原任务全流程(任务发起进程、AP进程处理信息),格式含时间+级别+进程/任务发起ID+内容。示例涵盖备份指令、执行状态、错误提示(如目录冲突)及进程间通信日志。
可配置日志(默认dm_SBTTRACE_xxx.log),记录SBT接口调用过程(如sbtdbackup、sbtwrite等),用于追踪备份/还原底层操作。
脱机备份还原工具DMRMAN的日志,格式同事件日志,记录工具运行状态(如参数变更、初始化信息)及关键操作日志。
文章
阅读量
获赞