本章详细介绍如何利用 DM 提供的各种工具进行备份还原与恢复的操作,包括 DIsql 工具、DMRMAN 工具、图形化客户端管理工具 MANAGER 和 CONSOLE。DIsql 工具用于执行联机的数据备份与数据还原,包括数据库备份、归档备份、表空间备份与还原、表备份与还原;DMRMAN 工具用于执行脱机的数据备份、还原与恢复,包括脱机的数据库备份、还原与恢复,脱机还原表空间,归档的备份、还原与修复;客户端工具 MANAGER 和 CONSOLE 对应命令行工具 DIsql 和 DMRMAN 的功能,分别用于联机和脱机备份还原数据。这四种工具都可以独立使用,也可以相互配合,如使用 DIsql 或 MANAGER 工具联机备份的数据库备份文件可以用 DMRMAN 或 CONSOLE 工具还原。读者在阅读完本章的内容后,就可以动手配置归档,并进行备份与还原操作了。
本章内容主要包括:
准备工作
使用联机执行 SQL 语句进行备份还原
使用脱机工具 DMRMAN 进行备份还原
使用图形化客户端工具进行备份还原
注意
使用备份还原命令进行备份还原时,单引号括起来的字符串中仍需单引号时,可用两个单引号表示一个单引号。
3.1 准备工作
本节介绍着手备份与还原之前的准备工作,主要内容包括:
支持与限制
归档配置
3.1.1 支持与限制
在着手备份与还原之前,先详细了解一下 DM 对备份与还原进行了哪些支持与限制,如下进行详细说明。
3.1.1.1 联机备份
在一般的应用场景中,常规性的数据库维护工作,即在不影响数据库正常运行的情况下,建议定期执行联机数据库备份,且完全备份和增量备份结合使用。执行两次完全备份的时间间隔可以尽量长一点,在两次完全备份之间执行一定数量的增量备份,比如,可以选择每周执行一次完全备份,一周内每天执行一次增量备份。为了尽量减少对数据库正常工作的影响,建议备份时间,选择在工作量较少的时间,比如深夜。
对联机备份的支持与限制:
MPP 环境仅允许库和归档备份,且各节点都会执行,生成相应的备份集,支持 DDL CLONE;
DSC 环境支持库备份、表空间备份和表备份,要求 DSC 环境的所有节点都处于 OPEN 状态。若 DSC 集群在主备环境下作备库时,仅控制节点支持发起备份任务;
MOUNT 状态所有备份均不支持;
SUSPEND 状态所有备份均不支持;
OPEN 状态支持所有备份,支持 DDL CLONE;
PRIMARY 模式支持所有备份,支持 DDL CLONE;
STANDBY 模式仅支持库级、表空间级和归档备份,支持 DDL CLONE;
DDL CLONE 必须备份归档,不允许指定 WITHOUT LOG。
3.1.1.2 联机还原
仅支持表级还原,对联机还原的支持与限制:
MPP 和分布式数据库不支持;
PRIMARY 支持;
SUSPEND 状态所有还原均不支持;
OPEN/NORMAL 支持。
3.1.1.3 脱机备份
脱机备份支持库级和归档备份,对脱机备份的支持与限制:
MPP 视同单机环境,仅当前节点执行备份操作;
允许异常退出后备份,支持 DDL_CLONE;
DSC 支持库级备份,支持 DDL_CLONE;当 DSC 环境下正常节点的 CKPT_LSN 小于故障节点的 CKPT_LSN 时,不支持脱机备份。
3.1.1.4 脱机还原
脱机还原跟目标库所处的模式、状态以及集群环境(MPP 和 DSC)无关,允许库级、表空间级和归档还原。
3.1.1.5 备份集
对备份集管理和使用的支持与限制:
无论管理员选用哪种备份方式,都不应将备份产生的备份集与源备份库存放在同一磁盘或同一存储介质上,以避免存储介质发生硬件故障时,源备份库与备份集同时被毁坏。
备份与还原时,指定的备份集名称和目录名中最好不要包含中文、空格以及特殊字符,否则可能会因为字符处理及字符集问题导致一些不可预期的问题。
使用旧版本执行码解析新版本的备份集时,可能无法兼容该备份集版本,导致系统报错 DMAP[-8318]:备份集子版本不匹配。因此在执行相关操作前应先进行版本检查:
启动 DMRMAN 工具,启动参数指定 help,查询到的备份集版本号为执行码能够兼容的最大备份集版本。
启动 DMRMAN 工具,执行 show backupset 命令(参考 3.3.4.2 备份集查看),获取目标备份集的备份集版本,将其与步骤 1 中获取的备份集版本进行比较,判断是否兼容。判断规则如下:
备份集版本号分为 4 个部分,DM 版本、备份集主版本、备份集子版本以及数据版本,DM 版本相同且其余版本号均大于等于目标备份集版本号的情况为兼容,否则不兼容。
3.1.2 归档配置
3.1.2.1 概述
DM 数据库可以运行在归档模式或非归档模式下。如果是归档模式,联机日志文件中的内容保存到硬盘中,形成归档日志文件;如果是非归档模式,则不会形成归档日志。
采用归档模式会对系统的性能产生些许影响,然而系统在归档模式下运行会更安全,当出现故障时其丢失数据的可能性更小,这是因为一旦出现介质故障,如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点,而如果没有归档日志文件,则只能利用备份进行恢复。
DM 的 dmarch.ini 可以进行归档配置,dmarch.ini 生效的前提是 dm.ini 中的参数 ARCH_INI 置为 1。
查询 v$dm_arch_ini、v$arch_status 等动态视图可以获取归档配置以及归档状态等相关信息。
dmarch.ini 中与备份还原相关的配置参数及其介绍见下表。
表3.1 dmarch.ini相关配置项
配置项
配置含义
[ARCH_NAME]
REDO 日志归档名
ARCH_TYPE
REDO 日志归档类型,LOCAL 表示本地归档,REMOTE 表示远程
ARCH_DEST
REDO 日志归档目标,LOCAL 对应归档文件存放路径;REMOTE 对应远程目标节点实例名
ARCH_FILE_SIZE
单个 REDO 日志归档文件大小,取值范围 64~2048,单位 MB,缺省值为 1024MB,即 1GB
ARCH_SPACE_LIMIT
REDO 日志归档空间限制,当所有本地归档文件达到限制值时,系统自动删除最老的归档文件。0 表示无空间限制,取值范围 1024~2147483647,单位 MB,缺省值为 0
ARCH_FLUSH_BUF_SIZE
归档合并刷盘缓存大小,取值范围 0~128,单位 MB,缺省值为 2,0 表示不使用归档合并刷盘
ARCH_HANG_FLAG
本地归档写入失败时系统是否挂起。取值 0 或 1。0 不挂起;1 挂起。缺省为 1。第一路本地归档系统内固定设为 1,设 0 实际也不起作用
ARCH_INCOMING_PATH
仅 REMOTE 归档有效,表示远程节点的本地归档日志文件存放路径
3.1.2.2 何时配置归档
联机备份数据库必须要配置归档。联机备份时,大量的事务处于活动状态,为确保备份数据的一致性,需要同时备份一段日志(备份期间产生的 REDO 日志),因此要求数据库必须配置本地归档且归档必须处于开启状态。
脱机备份数据库可配置归档也可以不配置。正常退出的库的备份不需要考虑本地归档日志的完整性,可以不配置归档;但对于故障退出的库的备份要求因故障未刷盘的日志也必须存在于本地归档中,因此必须配置归档,如果本地归档缺失,需要用户先修复归档,然后再备份。
备份表空间属于联机备份,必须配置归档。
备份表虽然是联机完全备份,但不需要配置归档。因为表在还原之后不需要再进行恢复操作,用不到归档日志。
备份归档日志必须配置归档。
3.1.2.3 联机配置归档
DM 支持使用 SQL 语句联机修改数据库状态模式和配置归档。
语法如下:
ALTER DATABASE <修改数据库子句>;
<修改数据库子句>::=
<数据库状态和模式> |
ARCHIVELOG CURRENT
<数据库状态和模式>::=
MOUNT |
SUSPEND |
OPEN [FORCE] |
NORMAL [FORCE] |
PRIMARY [FORCE] |
STANDBY [FORCE] |
ARCHIVELOG |
NOARCHIVELOG
<归档配置语句>::= 'DEST = <归档目标>, TYPE = <归档类型>'
<归档类型>::=
LOCAL [<文件和空间限制设置>][,ARCH_FLUSH_BUF_SIZE = <归档合并刷盘缓存大小>][, HANG_FLAG=<0|1>] |
REMOTE ,INCOMING_PATH = <远程归档路径> |
<文件和空间限制设置>::=[,FILE_SIZE = <文件大小>][,SPACE_LIMIT = <空间大小限制>]
< 数据库状态和模式 >:支持修改数据库状态和模式为 MOUNT、SUSPEND、OPEN、NORMAL、PRIMARY、STANDBY、ARCHIVELOG、NOARCHIVELOG。其中,ARCHIVELOG 表示开启归档模式,NOARCHIVELOG 表示关闭归档模式。指定 OPEN 时支持指定 FORCE,表示强制 OPEN 数据库。NORMAL、PRIMARY、STANDBY 三种数据库模式切换在 MOUNT 状态下可以直接执行,在 OPEN 状态下需要加 FORCE 关键字强制执行(OPEN 状态下的模式切换仅在单机和 DSC 环境下有效)。
ADD:增加归档。
MODIFY:修改归档,支持修改已有归档的配置参数,不建议修改归档类型。
DELETE:删除归档,不允许删除本地归档。
ARCHIVELOG CURRENT:把新生成的,还未归档的联机日志都进行归档。
图例:
修改数据库子句(alter_db_clause)
归档配置语句(archive_configure_clause)
归档类型(arch_type)
文件和空间限制设置(file_space)
使用说明
仅 MOUNT 状态 NORMAL 模式下才能开启/关闭归档模式;
添加、修改或删除归档前,必须开启归档模式;
< 文件和空间限制设置 > 中 SPACE_LIMIT 和 FILE_SIZE 两项,在 MOUNT 状态 NORMAL 模式或 OPEN 状态下均可被修改;除此之外的归档配置操作仅允许在 MOUNT 状态 NORMAL 模式下进行;
增加远程归档之前,必须先配置本地归档;
联机备份时,关闭已配置的本地归档之后再重新打开,会造成归档文件中部分日志缺失,备份时检查归档文件连续性时将会报错。存在该类操作时,若要避免该错误,备份前需要调用 checkpoint(100)主动刷新检查点。
联机配置归档的步骤如下:
修改数据库为 MOUNT 状态 NORMAL 模式,并开启归档模式;
增加、修改或删除归档;
修改数据库为 OPEN 状态。
例 进行配置归档相关操作
//修改数据库为MOUNT状态NORMAL模式,并开启归档模式
ALTER DATABASE MOUNT;
ALTER DATABASE NORMAL;
ALTER DATABASE ARCHIVELOG;
//配置本地归档
ALTER DATABASE ADD ARCHIVELOG 'DEST = /dmdata/dameng/arch_dsc0, TYPE = local, FILE_SIZE = 1024,SPACE_LIMIT = 2048,ARCH_FLUSH_BUF_SIZE=16,HANG_FLAG=1';
//配置远程归档(DMDSC环境下配置)
ALTER DATABASE ADD ARCHIVELOG 'DEST = DSC1, TYPE = REMOTE, INCOMING_PATH = /dmdata/dameng/arch_dsc1';
//修改数据库为OPEN状态
ALTER DATABASE OPEN;
3.1.2.4 手动配置归档
手动配置归档即在数据库实例未启动的情况下,手动编写 dmarch.ini 文件和设置参数 ARCH_INI。下面将分别说明如何手动配置本地归档和远程归档。
本地归档
步骤如下:
手动编辑 dmarch.ini 文件,之后保存在 dm.ini 所在的目录;
dmarch.ini 文件内容如下:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = d:\dm_arch\arch
ARCH_FILE_SIZE = 1024
ARCH_SPACE_LIMIT = 2048
编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存;
启动数据库实例,数据库已运行于归档模式。
注意多路归档,指配置多个本地归档。配置的第一个归档,称为第一路归档,后面依次是第二路、第三路......
远程归档
与本地归档一样,远程归档也是配置在 dmarch.ini 文件中,配置步骤请参考本地归档。
一般建议 DMDSC 集群中的节点,在配置本地归档之外,再交叉配置集群中所有其他节点的远程归档。
下面以两节点 DMDSC 集群为例,说明如何编辑 dmarch.ini 文件以配置远程归档,DSC0 和 DSC1 是 DMDSC 集群中的两个实例,交叉进行 REMOTE 归档配置:
例 1 DSC0 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dameng/arch_dsc0
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_HANG_FLAG = 1
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC1
ARCH_INCOMING_PATH = +DMDATA/dameng/arch_dsc1
例 2 DSC1 实例的 dmarch.ini 配置:
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = +DMDATA/dameng/arch_dsc1
ARCH_FILE_SIZE = 128
ARCH_SPACE_LIMIT = 0
ARCH_HANG_FLAG = 1
[ARCH_REMOTE1]
ARCH_TYPE = REMOTE
ARCH_DEST = DSC0
ARCH_INCOMING_PATH = +DMDATA/dameng/arch_dsc0
3.2 使用联机执行 SQL 语句进行备份还原
本节介绍使用 DIsql 工具如何实现数据文件的备份、管理及还原。
本节内容主要包括:
概述
数据备份
数据备份高级主题
管理备份
数据还原
数据还原高级主题
3.2.1 概述
DM 支持通过联机执行 SQL 语句方式对数据库执行备份还原操作。联机方式支持数据库、用户表空间、用户表和归档的备份以及用户表的还原。在进行联机库级备份、归档备份和表空间备份时,必须保证系统处于归档模式,否则联机备份不能进行。
联机备份之前,请设置 INI 参数 BAK_USE_AP,选用合适的备份方式。详细请参考 1.5 备份方式。
注意在使用的SQL语句中,若指定的备份名、加密算法名长度超过128个字节,会导致语法分析错误。
需要说明的是,DM 备份还原在执行联机操作时,语句的解析执行使用的是 DM 服务器的编码方式,而文件操作使用操作系统的编码方式。因此,当 DM 建库参数的编码方式与操作系统编码方式不一致时,使用中文文件名或路径名等可能造成控制台打印信息和日志文件中的信息的中文部分显示乱码。
3.2.2 数据备份
本节主要介绍使用 DIsql 工具如何备份数据库、用户表空间、用户表和归档。
3.2.2.1 数据库备份
本节描述了如何使用 DIsql 完成最基本的数据库备份及实施一些备份策略,主要内容包括:
概述
设置备份选项
备份数据库
3.2.2.1.1 概述
在 DIsql 工具中使用 BACKUP 语句你可以备份整个数据库。通常情况下,在数据库实例配置归档后输入以下语句即可备份数据库:
BACKUP DATABASE BACKUPSET 'db_bak_01';
语句执行完后会在默认的备份路径下生成名为“db_bak_01”的备份集目录。默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置 BAK_PATH,则默认使用 SYSTEM_PATH 下的 bak 目录。这是最简单的数据库备份语句,如果要设置其他的备份选项需了解联机备份数据库的语法。
语法如下:
BACKUP DATABASE [<备份类型>][<指定备份集子句>] [TO | BACKUPNAME <备份名>]
[<备份集路径子句>] [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[LIMIT
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION
[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG][WITHOUT MIRROR]
[TRACE FILE '
[TASK THREAD <线程数>][PARALLEL [<并行数>] [READ SIZE <拆分块大小>]];
<备份类型>::= FULL|
[FULL] DDL_CLONE|
[FULL] SHADOW|
INCREMENT
<指定基备份子句>::=BASE ON BACKUPSET '<基备份目录>'
<备份集路径子句>::= BACKUPSET '<备份集路径>' |
FORMAT '<备份集路径格式串>'
<指定备份集子句>::= WITH BACKUPDIR ‘<备份集搜索路径>’{,‘<备份集搜索路径>’}
备份类型:分为完全备份 FULL 和增量备份 INCREMENT 两种。缺省为 FULL。
FULL:表示完全备份。完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。在完全备份中又可以具体指定为 DDL_CLONE 或 SHADOW,此时 FULL 可缺省。DDL_CLONE 或 SHADOW 备份的内容是完全备份的子集。
DDL_CLONE:数据库克隆。该参数只能用于完全备份中,表示仅拷贝所有的元数据不拷贝数据。如对于数据库中的表来说,只备份表的定义不备份表中数据。表空间和表备份不支持该参数。数据库克隆必须备份日志。
注意DDL_CLONE会克隆HUGE表的元数据信息,之后库还原时会还原HUGE表的表定义。
SHADOW:影子备份。该参数只能用于完全备份中,表示生成影子备份集,只备份源库的 SYSTEM.DBF 及日志相关信息。表空间和表备份不支持该参数。影子备份必须备份日志。影子备份集用于还原成影子库,影子库部署在多副本系统中,更多影子库的介绍可参考《DM8 分布计算集群》。
注意
禁止对影子库执行备份。
INCREMENT:备份类型。INCREMENT 表示增量备份,若要执行增量备份必须指定该参数。
TO/BACKUPNAME:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_数据库名称_备份类型_备份时间。其中,备份时间为开始备份时的系统时间。例如:DB_DAMENG_FULL_20240206_143057_123456 表明该备份集为 2024 年 2 月 6 日 14 时 30 分 57 秒 123456 毫秒时生成的数据库 DAMENG 的库完全备份集。备份名区分大小写,且不允许包含转义字符“%”。
BACKUPSET:指定当前备份集生成目录。若指定为相对路径,例如 BACKUPSET 'db_bak_01',则在默认备份目录(即 BAK_PATH 配置的路径)中生成备份集。若不指定,则在默认备份目录中按约定规则,生成默认备份集目录。库级备份默认备份集目录名与备份名相同。若指定的 BACKUPSET 超长使得备份集中元数据文件或备份片文件的绝对路径长度超过 256 个字节将报错文件路径名过长。如果是并行备份,则需要保证子备份集中元数据文件和备份片文件的绝对路径长度均不超过 256 个字节。
FORMAT:指定备份集路径格式串。执行备份时,按一定规则替换格式串中的占位符生成备份集路径。如果解析该参数得到的路径为相对路径,则在默认备份目录中生成备份集。占位符规则如下:
表3.2占位符规则
序号
占位符
描述
1
%I
数据库魔数
2
%P
数据库持久魔数
3
%s
备份集魔数
4
%d
数据库名称
5
%N
表空间名称
6
%L
表名称
7
%c
生成备份集的通道 ID,仅通道的 FORMAT 配置有效
8
%Y
备份时间的年,格式为 YYYY
9
%M
备份时间的月,格式为 MM
10
%D
备份时间的日,格式为 DD
11
%T
备份时间的年月日,格式为 YYYYMMDD
12
%H
备份时间的小时 + 分钟 + 秒
13
%S
份时间的毫秒
14
%t
备份集时间戳,格式为 %T_%H_%S
15
%R
备份范围。DB:库备份;TS:表空间备份;TAB:表备份;ARCH:归档备份;SPFILE:镜像备份
16
%E
备份类型。FULL:完全备份;INCREMENT:增量备份
17
%U
根据备份范围,默认是 %R_%d_%E_%t 等形式,通道配置的 Format 最后添加_%c
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
BACKUPINFO:备份的描述信息。最大不超过 256 个字节。
MAXPIECESIZE:最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。缺省为最大取值。
LIMIT:指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵从 INI 参数 PWD_POLICY 和 PWD_MIN_LEN 指定的口令策略。
WITH ENCRYPTION:指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;1 表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2 表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。缺省值为 1,当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
注意加密算法包括:DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、AES128_CBC、AES128_CFB 、AES128_OFB、AES192_ECB、AES192_CBC、AES192_CFB 、AES192_OFB、AES256_ECB、AES256_CBC、AES256_CFB 、AES256_OFB 、RC4对于增量备份加密,如果基备份存在加密,则增量备份使用的加密密码、加密类型和加密算法必须与基备份保持一致;对于基备份未进行加密处理的情况,增量备份也不能指定加密类型。
COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG:联机数据库备份是否备份 REDO 日志。如果使用,则表示不备份,否则表示备份。如果使用了 WITHOUT LOG 参数,则使用 DMRMAN 工具还原时,必须指定 WITH ARCHIVEDIR 参数。
WITHOUT MIRROR:联机数据库备份是否备份镜像文件。如果使用,则表示不备份,否则表示备份。
TRACE FILE:指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件;若使用相对路径,则生成在执行码同级的 log 目录下。如果指定的 TRACE 文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。TRACE FILE 不可以为 ASM 文件。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
TRACE LEVEL:是否启用 TRACE。有效值 1、2,默认为 1 表示不启用 TRACE;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
TASK THREAD:备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL:指定并行备份的并行数和拆分块大小。并行数取值范围 0~128。若不指定并行数,则默认为 4,若指定为 0 或者 1 均认为非并行备份。若未指定关键字 PARALLEL,则认为非并行备份。并行备份不支持存在介质为 TAPE 的备份。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。READ SIZE 指定并行备份大数据量的数据文件时的拆分块大小,单位 MB,默认为 1024MB,最小为 512MB,当指定的拆分块大小小于 512MB 时,系统会自动调整为 512MB。若指定并行备份,但未指定拆分块大小,则直接使用默认拆分块大小进行拆分。当数据文件的大小小于拆分块大小时,不执行拆分;当数据文件的大小大于拆分块大小时,执行拆分。并行数不能大于拆分之后的总块数。
FROM LSN:用于增量备份中,指定备份的起始 LSN。起始 LSN 必须小于等于检查点 LSN,用户可以手动刷新检查点 LSN。仅支持库级增量备份。
CUMULATIVE:用于增量备份中,指明为累积增量备份类型,若不指定则缺省为差异增量备份类型。
WITH BACKUPDIR:用于增量备份中,指定基备份的搜索目录,最大长度为 256 个字节。若缺省,自动在以下路径中搜索:默认备份目录(即 BAK_PATH 配置的路径)、当前备份集目录(即 BACKUPSET 指定的路径,例如 BACKUPSET 'D:\ bakrman\db_bak'的路径)、当前备份集目录的上一级目录(例如'D:\bakrman')搜索基备份。如果基备份不在上述路径下,增量备份必须指定该参数。
BASE ON BACKUPSET:用于增量备份中,指定基备份集路径。
注意
增量备份时,DM会在默认备份目录和当前备份集目录以及位于这些目录下一个文件层级的子目录中搜索基备份集。因此若基备份集在上述子目录的子目录中,则需要指定基备份的搜索目录或直接指定基备份集路径,否则将无法搜索到相应的基备份集,备份操作将会失败。
READ SPEED:备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED:备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
图例:
备份类型(backup_type):
increment_statement:
指定备份集子句(specify_backupset_clause):
identified_statement:
使用说明:
备份成功后会在<备份集路径>或者默认备份目录下生成备份集。备份集中包括一个备份元数据文件,后缀.meta,以及一个或多个备份片文件,后缀.bak。
当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
系统处于归档模式下时,才允许进行数据库联机备份。若备份库为 DSC 集群实例,且未指定 WITHOUT LOG,则需要配置远程归档。
MOUNT 状态下,不允许进行数据库备份。
DDL_CLONE 库备份集不能作为增量备份的基备份,仅能用于库级还原。
通过指定 FROM LSN 生成的库备份集不能作为增量备份的基备份,仅能用于库级还原。且必须使用 MERGE 命令执行还原,详见 3.3.5.2.3 增量合并。
在执行联机数据库备份过程中,如果报错归档不完整,则需要首先刷新检查点,才能正常备份。例如:select checkpoint(50);。
只有建库时指定 RLOG_GEN_FOR_HUGE 参数为 1,备份数据库时才会备份 HUGE 表数据。
注意
备份HUGE表数据时,备份过程中申请额外封锁,确保和HUGE表上的DDL操作异步执行,避免备份过程中HUGE文件被DDL操作删除导致文件读失败。配置INI参数BAK_SAFE_CHECK为不检查HUGE文件错误,备份过程中不再执行该封锁,同时忽略备份过程中HUGE文件读失败,此时DM无法区分该错误是否由外部进程误删或篡改HUGE文件导致,用户须自行保证备份过程中HUGE文件的正确性。BAK_SAFE_CHECK的配置详见《DM8系统管理员手册》。
SYSTEM 表空间和 ROLL 表空间离线或损坏,不允许进行数据库备份;其余表空间离线或损坏时,如果 BAK_SAFE_CHECK 配置为数据文件处在 CORRUPT 状态时报错,则不允许进行数据库备份。BAK_SAFE_CHECK 的配置详见《DM8 系统管理员手册》。
3.2.2.1.2 设置备份选项
DIsql 中备份语句如果仅指定了必选参数如“BACKUP DATABASE BACKUPSET 'db_bak_01';”,那么会默认地指定备份介质类型、备份路径、备份片大小及备份 REDO 日志等。用户备份时也可以指定这些参数来修改默认值,本节将介绍以下几种常用的备份选项:
设置联机数据库备份集路径
设置备份名
增量备份指定基备份集路径
指定介质类型
添加备份描述
限制备份片大小
备份压缩
并行备份
了解更多备份选项请参考 3.2.3 数据备份高级主题,数据库备份高级主题。
设置联机数据库备份集路径
备份语句中的 BACKUPSET 参数用于指定备份集的输出路径,例如备份数据库到指定的路径“/home/dm_bak/db_bak_3_01”。
例 1 指定备份集路径为“/home/dm_bak/db_bak_3_01”。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_01';
BACKUPSET 为可选参数。如果该参数仅指定备份集名称即指定为相对路径,备份集会生成到默认的备份路径下。如果仅指定该关键字,不指定目标备份集目录,那么将会在数据库的默认备份目录下自动生成备份集。
另外,也可以指定 FORMAT 参数,系统会对该格式串进行解析,使用相应字段替换其中包含的占位符生成备份集路径。
例 2 数据库名称为 DAMENG,在 2023 年 11 月 13 日执行一次数据库备份,指定备份集格式串为“/home/dm_bak/%R_%d_%T”。
BACKUP DATABASE FORMAT '/home/dm_bak/%R_%d_%T';
此时实际生成备份集的路径为/home/dm_bak/DB_DAMENG_20231113。
设置备份名
系统为每个备份指定一个备份名,它可作为识别备份的一种方式。备份时用户可以采用系统生成的备份名也可以指定属于自己的备份名。
备份名可以有效地表示备份的目的或者不同类型备份的用途。比如对于一个用于还原的数据库完全备份可设置备份名为“db_full_for_restore”。
如果不显式地指定备份名,系统会默认为备份创建一个备份名。备份名的格式为:DB_库名_备份类型_备份时间,DB 表示备份为数据库备份,备份类型表示该备份为完全备份还是增量备份,数据库名为当前连接数据库的名称,备份时间为开始执行备份的系统时间。
若一次备份产生多个备份片,那么每个备份片的备份名是相同的。
指定的备份名不能与默认备份目录和指定的基备份搜索目录中已有的备份名相同,也不能与指定基备份的备份名相同,但可以与不满足上述条件的已有备份名重复。备份目录指备份集名称的上一层目录,如例 1 中的备份目录为“/home/dm_bak”。
备份名最大长度为 128 个字节,如果超长会报语法分析出错。备份名的设置不可以使用特殊的格式,如 %NAME。
例 3 创建备份集,备份名设置为“WEEKLY_FULL_BAK”。
BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/home/dm_bak/db_bak_3_02';
增量备份指定基备份集路径
请参考 3.2.2.2.2 设置备份选项。
指定介质类型
具体请参考 1.4 介质管理层。
添加备份描述
联机备份可选择对执行的备份添加描述信息,相比备份名参数,描述信息可以更详细地对备份类型、用途、场景等进行说明。描述信息最大长度支持 256 个字节。
例 4 创建备份为备份集添加描述信息为“完全备份”。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_04' BACKUPINFO '完全备份';
用户如果不指定该参数,备份集对应的描述信息属性则为空。
限制备份片大小
MAXPIECESIZE 参数用于控制单个备份片的大小,当介质管理器对单个文件的大小有限制或者需要备份的数据文件很大时就可以使用这个参数。MAXPIECESIZE 不能大于磁盘剩余空间大小,否则报错磁盘空间不足。
MAXPIECESIZE 指定了单个备份片文件大小的上限,单位为 MB,最小为 128MB,32 位系统最大可设置为 2GB,64 位系统最大可设置为 128GB。如果不设置该参数则默认为最大取值。例如,要限制备份片大小不超过 300MB,可指定 MAXPIECESIZE 300,备份时会限定所有的备份片大小不超过 300MB。
限制备份片大小主要用于解决文件系统或介质管理器对文件最大值的限制小于备份片默认值的情况,当备份片较大时会导致无法存储。
例 5 创建备份限制备份片大小为 300MB。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_05' MAXPIECESIZE 300;
备份压缩
所有的备份语句都可以设置压缩选项,指定 COMPRESSED 参数后备份集会先被压缩然后再写到磁盘或磁带。压缩选项有不同的压缩级别可以选择,取值范围为 0~9。0 表示不压缩,1 表示 1 级压缩,9 表示 9 级压缩。压缩级别越高,压缩越慢,但压缩比越高。若仅指定 COMPRESSED,则压缩级别为 1。实际应用中用户可根据存储空间、数据文件大小、备份效率等确定合适的压缩级别。
例 6 执行备份压缩,压缩级别设置为 5。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_06' COMPRESSED LEVEL 5;
并行备份
DM 支持对库级和表空间级的并行备份,待备份数据文件很大时使用并行备份可以显著提高备份效率。用户可通过关键字 PARALLEL 指定是否执行并行备份,以及执行并行备份的并行数。执行备份时实际使用的并行数由用户指定的并行数和实际可使用的最大并行数决定,而实际可使用的最大并行数由数据文件的个数决定。
例 7 创建并行备份,指定并行数为 8。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_3_07' PARALLEL 8;
3.2.2.1.3 备份数据库
完全备份和增量备份是数据库备份的最常用策略,本节将详细介绍这两种类型备份。
完全备份
执行数据库备份,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行数据库备份。
数据库完全备份中包含了指定库的全部有效数据页,为了保证数据安全应该对数据库定期执行完全备份。多久执行一次完全备份才合适,一般规则是数据库经过频繁修改后最好执行一次完全备份。
完全备份数据库步骤如下:
配置归档;
保证数据库处于 OPEN 状态;
DIsql 中输入备份数据库语句,最简单的不设置其他参数的完全备份语句如下:
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
备份语句中的参数 FULL 可以省略,不指定备份类型会默认指定备份类型为完全备份。
增量备份
增量备份指基于指定的库(或者表空间)的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改的数据页。执行增量备份的主要目的是快速备份数据库中的修改,减少备份时间和避免重复的备份。
备份策略要根据可接受的最小恢复时间进行制定。例如,每周执行一次完全备份,每天执行一次增量备份,那么恢复时要重做的归档就不会超过一天。
增量备份数据库步骤如下:
配置归档;
保证数据库处于 OPEN 状态;
DIsql 中输入备份数据库语句,最简单的不设置其他参数的增量备份语句如下:
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
备份语句中的 INCREMENT 参数不可省略,该参数用来指定执行的备份类型为增量备份。若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。WITH BACKUPDIR 参数用来指定基备份集的搜索目录,具体用法请参考 BACKUP DATABASE 语法中 WITH BACKUPDIR 介绍。
3.2.2.1.4 DSC 环境使用说明
DSC 环境下库备份情况与单机环境下类似,连接到 DSC 集群中的任意活动节点即可完成库备份操作(若 DSC 集群在主备环境下作备库时,需要连接到 DSC 集群的控制节点来完成库备份)。当 DSC 集群中存在故障节点时,库备份存在额外的限制:
1.保证故障节点的 [CKPT_LSN,FILE_LSN] 之间日志修改的数据页已写入磁盘。只有所有活动节点的 CKPT_LSN 大于等于故障节点的 FILE_LSN 才允许备份操作。
2.主库备份时,只有所有活动节点 CKPT_LSN 推进到 MAX[APPLY_LSN] 之后,才允许备份操作。
3.备库备份时,需要触发检查点将所有活动节点 CKPT_LSN 推进到 MAX[APPLY_LSN] 之后,才能启动备份操作。
根据以上限制,DSC 集群联机备份时,如果活动节点 CKPT_LSN 小于故障节点 FILE_LSN,则强制推进检查点然后执行备份。对于故障节点,直接取其 FILE_LSN 及对应 PKG_SEQNO 作为 BEGIN_LSN 和 BEGIN_SEQ。该种策略下,由于故障节点所有修改数据页已经写入磁盘,无论活动节点推进到什么值,故障节点总是不需要备份该节点日志。
3.2.2.2 表空间备份
本节描述了如何使用 DIsql 完成最基本的表空间备份及实施一些备份策略,主要内容包括:
概述
设置备份选项
备份表空间
3.2.2.2.1 概述
在 DIsql 工具中使用 BACKUP 语句也可以备份单个表空间。同备份数据库一样,执行表空间备份数据库实例也必须运行在归档模式下,启动 DIsql 输入以下语句即可备份表空间:
BACKUP TABLESPACE MAIN BACKUPSET 'ts_bak_01';
备份集“ts_bak_01”会生成到默认的备份路径下。如要设置其他备份选项需参考下文的联机备份表空间语法。
语法如下:
BACKUP TABLESPACE <表空间名> [FULL | INCREMENT
[<指定备份集子句>][TO | BACKUPNAME <备份名>] [<备份集路径子句>]
[DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[LIMIT
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION
[TRACE FILE '
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]];
<指定基备份子句>::=BASE ON BACKUPSET '<基备份目录>'
<备份集路径子句>::= BACKUPSET '<备份集路径>' |
FORMAT '<备份集路径格式串>'
<指定备份集子句>::= WITH BACKUPDIR ‘<备份集搜索路径>’{,‘<备份集搜索路径>’}
表空间名:指定备份的表空间名称(除了 temp 表空间)。
FULL:备份类型。FULL 表示完全备份,可不指定,默认为完全备份。
INCREMENT:备份类型。INCREMENT 表示增量备份,若要执行增量备份必须指定该参数。
TO/BACKUPNAME:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:TS_数据库名称_备份类型_备份时间。其中,备份时间为开始备份的系统时间。例如:TS_DAMENG_INCREMENT_20240206_143057_123456 表明该备份集为 2024 年 2 月 6 日 14 时 30 分 57 秒 123456 毫秒时生成的数据库 DAMENG 的表空间增量备份集。备份名区分大小写,且不允许包含转义字符“%”。
BACKUPSET:指定当前备份集生成路径。若指定为相对路径,则在数据库的默认备份目录中生成备份集。若不指定,则在数据库的默认备份目录下以约定规则生成默认的表空间备份集目录。表空间级备份默认备份集目录名与备份名相同。若指定的 BACKUPSET 超长使得备份集中元数据文件或备份片文件的绝对路径长度超过 256 个字节将报错文件路径名过长。如果是并行备份,则需要保证子备份集中元数据文件和备份片文件的绝对路径长度均不超过 256 个字节。
FORMAT:指定备份集路径格式串。执行备份时,按一定规则替换格式串中的占位符生成备份集路径。如果解析该参数得到的路径为相对路径,则在默认备份目录中生成备份集。占位符规则请参考 3.2.2.1.1 概述章节。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
BACKUPINFO:备份的描述信息。最大不超过 256 个字节。
MAXPIECESIZE:最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。缺省为最大取值。
LIMIT:指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵从 INI 参数 PWD_POLICY 和 PWD_MIN_LEN 指定的口令策略。
WITH ENCRYPTION:指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;1 表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2 表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。缺省值为 1,当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
注意
支持的内置加密算法包括:DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、AES128_CBC、AES128_CFB 、AES128_OFB、AES192_ECB、AES192_CBC、AES192_CFB 、AES192_OFB、AES256_ECB、AES256_CBC、AES256_CFB 、AES256_OFB 、RC4支持的现有第三方加密算法包括:OPENSSL_SM4_ECB、OPENSSL_SM4_CBC、OPENSSL_SM4_CFB、OPENSSL_SM4_OFB、OPENSSL_SM4_CFB_V1、OPENSSL_SM4_OFB_V1另外,用户可也使用自行封装的加密算法,详情请参考《DM8安全管理》
COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG:联机表空间备份是否备份 REDO 日志。如果使用,则表示不备份,否则表示备份。如果使用了 WITHOUT LOG 参数,则使用 DMRMAN 工具还原时,必须指定 WITH ARCHIVEDIR 参数。
WITHOUT MIRROR:联机表空间备份是否备份镜像文件。如果使用,则表示不备份,否则表示备份。
TRACE FILE:指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件;若使用相对路径,则生成在执行码同级的 log 目录下。如果指定的 TRACE 文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。TRACE FILE 不可以为 ASM 文件。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
TRACE LEVEL:是否启用 TRACE。有效值 1、2,默认为 1 表示不启用 TRACE;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
TASK THREAD:备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL:指定并行备份的并行数和拆分块大小。
READ SPEED:备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED:备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
图例:
increment_statement:
使用说明:
当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
系统处于归档模式下时,才允许进行表空间备份。
MOUNT 状态下,不允许进行表空间备份。
MPP 环境不允许进行表空间备份。
表空间离线或损坏时,不允许进行表空间备份。
3.2.2.2.2 设置备份选项
表空间备份也可指定备份集路径、介质类型、备份名等备份选项。本节主要介绍 BASE ON BACKUPSET 参数的使用。
增量备份指定基备份集路径
BASE ON BACKUPSET 参数用于增量备份中,用来指定基备份集路径。如果不指定该参数,会在备份搜索目录中搜索最近一次的完全备份或增量备份作为这次增量备份的基备份。若需要在特定的备份集基础上执行增量备份就需要使用该参数。
下面以增量备份用户 MAIN 表空间为例,指定 BASE ON BACKUPSET 参数执行增量备份:
BACKUP TABLESPACE MAIN BACKUPSET 'ts_full_bak_01';
BACKUP TABLESPACE MAIN INCREMENT BACKUPSET 'ts_increment_bak_01';
BACKUP TABLESPACE MAIN INCREMENT BASE ON BACKUPSET'ts_full_bak_01'
BACKUPSET 'ts_increment_bak_02';
上述示例中,增量备份 ts_increment_bak_02 若不指定备份集 ts_full_bak_01 作为基备份,那么默认会使用最近一次的备份集 ts_increment_bak_01 作为基备份。
3.2.2.2.3 备份表空间
同数据库备份一样,表空间备份也可分为完全备份和增量备份。本节主要内容包括:
完全备份
增量备份
完全备份
执行表空间备份,表空间必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表空间备份。表空间备份就是拷贝表空间内所有数据文件中的有效数据的过程。DM 表空间仅支持联机备份,完全备份一个表空间步骤如下:
配置归档;
保证数据库处于 OPEN 状态;
DIsql 中输入备份表空间语句,最简单的不设置其他参数的完全备份表空间语句,如下所示:
BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_full_bak_01';
备份语句中的 FULL 参数可以省略,不指定备份类型会默认指定备份类型为完全备份。
增量备份
执行表空间增量备份的主要目的同数据库增量备份一样是为了快速备份数据库中的修改,减少备份时间和避免重复的备份。
增量备份表空间步骤如下:
配置归档;
保证数据库处于 OPEN 状态;
DIsql 中输入备份表空间语句,最简单的不设置其他参数的增量备份语句如下:
BACKUP TABLESPACE MAIN INCREMENT WITH BACKUPDIR '/home/dm_bak'BACKUPSET
'/home/dm_bak/ts_increment_bak_02';
备份语句中指定的 INCREMENT 参数表示执行的备份类型为增量备份,不可省略。若要创建累积增量备份,还需要指定 CUMULATIVE 参数,否则缺省为差异增量备份。WITH BACKUPDIR 参数用来指定基备份集的搜索目录,如果基备份集不在默认备份目录或当前备份目录则该参数不可省略。
3.2.2.3 表备份
本节主要介绍使用 DIsql 完成表备份及实施一些备份策略,主要内容包括:
概述
设置备份选项
备份表
3.2.2.3.1 概述
与备份数据库与表空间不同,备份表不需要服务器配置归档,DIsql 中输入以下即可备份用户表:
BACKUP TABLE TAB_01 BACKUPSET 'tab_bak_01';
备份集“tab_bak_01”会生成到默认的备份路径下。如要设置其他备份选项需参考下文的备份表语法。
语法如下:
BACKUP TABLE <表名> [TO | BACKUPNAME <备份名>] [<备份集路径子句>]
[DEVICE TYPE <介质类型> [PARMS '<介质参数>']] [BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] [LIMIT
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION
[COMPRESSED [LEVEL <压缩级别>]]
[TRACE FILE '
<备份集路径子句>::= BACKUPSET '<备份集路径>' |
FORMAT '<备份集路径格式串>'
TABLE:指定备份的表,只能备份用户表。
TO/BACKUPNAME:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:TAB_数据库名称_备份类型_备份时间。其中,备份时间为开始备份的系统时间。例如:TAB_DAMENG_FULL_20240206_143057_123456 表明该备份集为 2024 年 2 月 6 日 14 时 30 分 57 秒 123456 毫秒时生成的数据库 DAMENG 的表备份集。备份名区分大小写,且不允许包含转义字符“%”。
BACKUPSET:指定当前备份集生成路径。若指定为相对路径,则在数据库的默认备份目录中生成备份集。若不指定具体备份集路径,则在数据库的默认备份目录下以约定规则生成默认的表备份集目录。表备份默认备份集目录名与备份名相同。若指定的 BACKUPSET 超长使得备份集中元数据文件或备份片文件的绝对路径长度超过 256 个字节将报错文件路径名过长。
FORMAT:指定备份集路径格式串。执行备份时,按一定规则替换格式串中的占位符生成备份集路径。如果解析该参数得到的路径为相对路径,则在默认备份目录中生成备份集。占位符规则请参考 3.2.2.1.1 概述章节。
DEVICE TYPE:指存储备份集的介质类型,表备份暂时只支持 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
BACKUPINFO:备份的描述信息。最大不超过 256 个字节。
MAXPIECESIZE:最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。缺省为最大取值。
LIMIT:指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵从 INI 参数 PWD_POLICY 和 PWD_MIN_LEN 指定的口令策略。
WITH ENCRYPTION:指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;1 表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2 表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。缺省值为 1,当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
注意
支持的内置加密算法包括:DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、AES128_CBC、AES128_CFB 、AES128_OFB、AES192_ECB、AES192_CBC、AES192_CFB 、AES192_OFB、AES256_ECB、AES256_CBC、AES256_CFB 、AES256_OFB 、RC4支持的现有第三方加密算法包括:OPENSSL_SM4_ECB、OPENSSL_SM4_CBC、OPENSSL_SM4_CFB、OPENSSL_SM4_OFB、OPENSSL_SM4_CFB_V1、OPENSSL_SM4_OFB_V1另外,用户可也使用自行封装的加密算法,详情请参考《DM8安全管理》
COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;若未指定 COMPRESSED,则默认不进行压缩处理。
TRACE FILE:指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件;若使用相对路径,则生成在执行码同级的 log 目录下。如果指定的 TRACE 文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。TRACE FILE 不可以为 ASM 文件。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
TRACE LEVEL:是否启用 TRACE。有效值 1、2,默认为 1,表示不启用 TRACE;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
READ SPEED:备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED:备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
图例:
使用说明:
仅支持对用户的非分区的行存储表和堆表进行备份,不支持对分区表的备份。在非分区表中,也不支持对临时表、物化视图表、物化视图附属表、日志表和特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSJOB/SYSCPT/SYS)下的表进行表备份。
表的列类型为对象类型的表不支持表备份。
表备份不备份表上的注释以及 default 表达式中的函数定义,因此还原时需用户自行确认。
不支持在加密库上进行表备份与还原。
当备份数据超过限制大小时,会生成新的备份文件,新的备份文件名是初始文件名后加文件编号。
表备份时,其所属表空间必须处于联机状态。
目前表备份不支持备份到 TAPE 介质上。
3.2.2.3.2 设置备份选项
表备份常用的备份选项有设置备份名、设置备份集路径、指定介质参数、添加备份描述等,设置方式同数据库备份相同。
3.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';
3.2.2.4 归档备份
本节主要介绍使用 DIsql 完成归档备份及实施一些备份策略,主要内容包括:
概述
设置备份选项
备份归档
3.2.2.4.1 概述
在 DIsql 工具中使用 BACKUP 语句可以备份归档日志。归档备份的前提:一,归档文件的 db_magic、permanent_magic 值和库的 db_magic、permanent_magic 值必须一样;二,服务器必须配置归档;三,归档日志必须连续,如果出现不连续的情况,前面的连续部分会忽略,仅备份最新的连续部分。如果备份时未收集到指定范围内的归档,则直接报错。联机备份的时候经常会切换归档文件,最后一个归档总是空的,所以最后一个归档不会被备份。
DIsql 中输入以下即可备份归档:
BACKUP ARCHIVE LOG ALL BACKUPSET 'arch_bak_01';
备份集“arch_bak_01”会生成到默认的备份路径下。如要设置其他备份选项需参考下文的归档备份语法。
语法如下:
BACKUP
[LSN BETWEEN
[TIME BETWEEN'
[TO | BACKUPNAME <备份名>] [<备份集子句>];
<指定备份集子句>::= WITH BACKUPDIR ‘<备份集搜索路径>’{,‘<备份集搜索路径>’}
<备份集子句>::=
[<备份集路径子句>] [DEVICE TYPE <介质类型> [PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[LIMIT
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION
[COMPRESSED [LEVEL <压缩级别>]] [WITHOUT LOG]
[TRACE FILE '
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]]
<备份集路径子句>::=
BACKUPSET '<备份集路径>' |
FORMAT '<备份集路径格式串>'
ALL:备份所有的归档。若不指定,则默认为 ALL。
FROM LSN:指定备份的起始 lsn。
UNTIL LSN:指定备份的截止 lsn。
注意
归档日志的有效LSN范围(起始LSN,截止LSN)可以通过V$ARCH_FILE查看,或者通过dmclvt工具分析日志的结果查看。 如果用户无法确定准确的LSN,也可以指定一个模糊的LSN值,取值范围1~9223372036854775807。只要指定的FROM LSN、UNTIL LSN与有效LSN范围有重叠部分,就会备份包含重叠部分的完整日志文件。
FROM TIME:指定备份的开始的时间点。
UNTIL TIME:指定备份的截止的时间点。
BETWEEN ... AND ...:指定备份的区间。指定区间后,只会备份指定区间内的归档文件。
1)num TIMES,num 取值范围为 0~2147483647,指若归档文件已经备份了 num 次,则不再备份;否则备份。如 num=3,则认为已经备份了 3 次的归档文件就不再备份。若 num=0,则认为所有归档文件都不需要备份。
2)SINCE TIME 'datetime_string',对指定时间 datetime_string 开始没有备份的归档文件进行备份。
3)若以上两个参数均未指定,则备份所有未备份过的归档日志文件。
DELETE INPUT:用于指定备份完成之后,是否删除归档操作。
TO/BACKUPNAME:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:ARCH_数据库名称_FULL_备份时间。其中,备份时间为开始备份的系统时间。例如:ARCH_DAMENG_FULL_20240206_143057_123456 表明该备份集为 2024 年 2 月 6 日 14 时 30 分 57 秒 123456 毫秒时生成的数据库 DAMENG 的归档备份集。备份名区分大小写,且不允许包含转义字符“%”。
BACKUPSET:指定当前备份集生成路径,若指定为相对路径,则在数据库的默认备份目录中生成备份集。若不指定具体备份集路径,则在数据库的默认备份目录下,以约定归档备份集命名规则生成默认的归档备份集目录。归档备份默认备份集目录名与备份名相同。若指定的 BACKUPSET 超长使得备份集中元数据文件或备份片文件的绝对路径长度超过 256 个字节将报错文件路径名过长。如果是并行备份,则需要保证子备份集中元数据文件和备份片文件的绝对路径长度均不超过 256 个字节。
FORMAT:指定备份集路径格式串。执行备份时,按一定规则替换格式串中的占位符生成备份集路径。如果解析该参数得到的路径为相对路径,则在默认备份目录中生成备份集。占位符规则请参考 3.2.2.1.1 概述章节。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
BACKUPINFO:备份的描述信息。最大不超过 256 个字节。
MAXPIECESIZE:最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。缺省为最大取值。
LIMIT:指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY:指定备份时的加密密码。密码可以使用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵从 INI 参数 PWD_POLICY 和 PWD_MIN_LEN 指定的口令策略。
WITH ENCRYPTION:指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;1 表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2 表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。缺省值为 1,当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
注意支持的内置加密算法包括:DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、AES128_CBC、AES128_CFB 、AES128_OFB、AES192_ECB、AES192_CBC、AES192_CFB 、AES192_OFB、AES256_ECB、AES256_CBC、AES256_CFB 、AES256_OFB 、RC4支持的现有第三方加密算法包括:OPENSSL_SM4_ECB、OPENSSL_SM4_CBC、OPENSSL_SM4_CFB、OPENSSL_SM4_OFB、OPENSSL_SM4_CFB_V1、OPENSSL_SM4_OFB_V1另外,用户可也使用自行封装的加密算法,详情请参考《DM8安全管理》
COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG:只是语法支持,不起任何作用。
TRACE FILE:指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件;若使用相对路径,则生成在执行码同级的 log 目录下。如果指定的 TRACE 文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。TRACE FILE 不可以为 ASM 文件。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
TRACE LEVEL:是否启用 TRACE。有效值 1、2,默认为 1 表示不启用 TRACE;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
TASK THREAD:备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为当前主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL:指定并行备份的并行数和拆分块大小。
READ SPEED:备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED:备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
图例:
<备份集子句>:
*<*not_backed_upSpec>:
*<*identified_statement>:请参考 3.2.2.1.1 概述中的数据库备份图例
3.2.2.4.2 设置备份选项
归档备份常用的备份选项有设置备份名、设置备份集路径、指定介质参数、添加备份描述等,设置方式与数据库备份相同。
3.2.2.4.3 备份归档
归档备份拷贝指定归档目录下的所有的归档文件到备份集中,并记录各个归档文件的属性、文件大小以及 LSN 区间等。归档备份不存在增量备份之说。当需要保存库的归档时,可以使用归档备份。
完整的备份归档步骤如下:
配置归档;
保证数据库处于 OPEN 或者 MOUNT 状态;
DIsql 中输入备份数据库语句。
例 备份归档日志,通过 LSN BETWEEN ... AND ...来指定起始和截至 LSN。
首先,确定 LSN 范围。
select ARCH_LSN, CLSN, PATH from V$ARCH_FILE;
查询结果如下:
ARCH_LSN CLSN PATH
-------- ------- --------
38758 40301 d:\arch\ARCHIVE_LOCAL1_20180727105417748.log
40302 40303 d:\arch\ARCHIVE_LOCAL1_20180727111411079.log
40304 40305 d:\arch\ARCHIVE_LOCAL1_20180727111513679.log
……
50412 50413 d:\arch\ARCHIVE_LOCAL1_20180727171801098.log
50414 50478 d:\arch\ARCHIVE_LOCAL1_20180727171849712.log
……
//通过查询结果选出备份的起始LSN和截至LSN。比如50414 50478
其次,备份归档。
BACKUP ARCHIVELOG LSN BETWEEN 50414 AND 50478 BACKUPSET '/home/dm_bak/arch_bak_time_14-78';
3.2.3 数据备份高级主题
本节介绍高级的联机备份过程,主要内容包括:
加密备份
设置 SBT 接口跟踪日志文件
DM 的数据库、表空间、表备份和归档备份均支持创建加密备份和备份时设置跟踪日志文件,本节仅以数据库备份为例说明这两种类型备份的创建。
加密备份
DM 提供加密备份的方式保护用户的备份集,没有权限的用户无法访问加密的备份集。
备份语句中通过指定 IDENTIFIED BY...WITH ENCRYPTION...ENCRYPT WITH...执行加密备份。其中,IDENTIFIED BY 子句指定加密密码;WITH ENCRYPTION 子句指定加密类型,加密类型分为简单加密和复杂加密,简单加密是对备份文件设置口令,但文件内容仍以明文存储,复杂加密则对备份文件进行完全的加密,备份文件以密文方式存储,用户可根据备份数据的重要程度选择加密类型;ENCRYPT WITH 子句指定加密算法,不同加密算法具体请参考[3.2.2.1.1 概述](#3.2.2.1.1 概述),默认使用的加密算法为 AES256_CFB。
加密备份过程中 IDENTIFIED BY 子句必须指定,子句 WITH ENCRYPTION 和子句 ENCRYPT WITH 可不指定,此时 WITH ENCRYPTION 默认值为 1,ENCRYPT WITH 默认值为 AES256_CFB。例如,以下两种加密备份语句都是合法的:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_encrypt' IDENTIFIED BY "Cdb546789";
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_encrypt' IDENTIFIED BY "Cdb546789" ENCRYPT WITH RC4;
若指定了加密密码,但加密类型 WITH ENCRYPTION 指定为 0,则为非加密备份,如下所示:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_encrypt' IDENTIFIED BY "Cdb546789" WITH ENCRYPTION 0;
下面以数据库完全备份为例,创建加密密码为“Cdb546789”,加密算法为“rc4”的复杂类型数据库加密备份,完整步骤如下:
配置归档;
保证数据库处于 OPEN 状态;
备份数据库,输入以下语句:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_encrypt_01' IDENTIFIED BY "Cdb546789" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
对于增量备份加密,如果基备份存在加密,则增量备份使用的加密密码、加密类型和加密算法必须与基备份保持一致;对于基备份未进行加密处理的情况,增量备份也不能指定加密类型。
设置 SBT 接口跟踪日志文件
DM 备份时支持设置 SBT 接口跟踪日志文件,日志记录了 SBT 接口的调用过程,用户通过查看日志可跟踪备份还原过程。
与生成跟踪日志文件相关的参数有两个:TRACE FILE 和 TRACE LEVEL。 TRACE FILE 用于指定生成的跟踪日志文件路径,TRACE LEVEL 表示是否启用 TRACE。TRACE LEVEL 有效值包括 1 和 2。1 表示不启用 TRACE 功能,2 表示启用,系统默认值为 1。
指定参数 TRACE FILE 但 TRACE LEVEL 值设置为 1 即不启用 TRACE 功能。如下所示:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_trace' TRACE
FILE'/home/dm_log/db_trace.log' TRACE LEVEL 1;
TRACE LEVEL 值设置为 2 即启用 TRACE 功能,但若 TRACE FILE 没有指定,则系统默认在执行码路径的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件。如下所示:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_trace' TRACE LEVEL 2;
若 TRACE FILE 使用相对路径,日志文件生成在执行码同级的 log 目录下。
以数据库完全备份为例,为备份设置跟踪日志文件的操作步骤如下:
配置归档;
保证数据库处于 OPEN 状态;
备份数据库,输入以下语句:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_trac_01' TRACE
FILE'/home/dm_log/db_bak_trace.log' TRACE LEVEL 2;
如果指定的 TRACE 文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。TRACE FILE 不可以为 ASM 文件。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
3.2.4 管理备份
本章节主要介绍如何使用 DIsql 工具管理数据库备份、表空间备份、表备份,以及归档备份。本节内容主要包括:
概述
备份目录管理
备份集校验与删除
备份信息查看
监控备份过程
3.2.4.1 概述
管理备份一个重要的目的是删除不再需要的备份,DM 没有提供自动删除过期备份的功能,删除备份需要手动执行。
备份管理相关系统过程与函数总结如下:
SF_BAKSET_BACKUP_DIR_ADD:添加备份目录。
SF_BAKSET_BACKUP_DIR_REMOVE:删除内存中指定的备份目录。
SF_BAKSET_BACKUP_DIR_REMOVE_ALL:删除内存中全部的备份目录。
SF_BAKSET_CHECK:对备份集进行校验。
SF_BAKSET_REMOVE:删除指定设备类型和指定备份集目录的备份集。
SF_BAKSET_REMOVE_BATCH:批量删除满足指定条件的所有备份集。
SP_DB_BAKSET_REMOVE_BATCH:批量删除指定时间之前的数据库备份集。
SP_TS_BAKSET_REMOVE_BATCH:批量删除指定表空间对象及指定时间之前的表空间备份集。
SP_TAB_BAKSET_REMOVE_BATCH:批量删除指定表对象及指定时间之前的表备份集。
SP_ARCH_BAKSET_REMOVE_BATCH:批量删除指定条件的归档备份集。
备份管理相关动态视图总结如下:
V$BACKUPSET:显示备份集基本信息。
V$BACKUPSET_DBINFO:显示备份集的数据库相关信息。
V$BACKUPSET_DBF:显示备份集中数据文件的相关信息。
V$BACKUPSET_ARCH:显示备份集的归档信息。
V$BACKUPSET_BKP:显示备份集的备份片信息。
V$BACKUPSET_SEARCH_DIRS:显示备份集搜索目录。
V$BACKUPSET_TABLE:显示表备份集中备份表信息。
V$BACKUPSET_SUBS:显示并行备份中生成的子备份集信息。
V$BACKUP_MONITOR:显示当前备份任务实时监控信息。
V$BACKUP_HISTORY:显示最近 100 条备份监控信息。
V$BACKUP_FILES:显示当前备份任务待备份数据文件列表。
注意SF_BAKSET_BACKUP_DIR_ADD添加备份目录仅对当前会话有效。调用删除备份等函数或查看动态视图时要先调用SF_BAKSET_BACKUP_DIR_ADD添加备份目录,否则仅搜索默认备份路径下的备份集。
各个函数和动态视图的使用,下文将进行详细介绍。
3.2.4.2 备份集搜索目录
备份集搜索目录是由一个或多个目录组成。
备份集搜索目录主要用在两个地方:一通过在备份还原等 SQL 语法中指定,语法指定的各备份集搜索目录相互之间没有关联,主要用于增量备份还原中;二通过在本节的 SF 存储函数中指定,通过存储函数添加的备份集搜索目录,主要用在动态视图和批量删除备份集时使用,已添加的会在 V$BACKUPSET_SEARCH_DIRS 中显示。
为了区分,本文将第一种情况中的备份集搜索目录统称为基备份集搜索目录。第二种情况中 V$BACKUPSET_SEARCH_DIRS 显示的目录,统称为动态视图备份集搜索目录。
3.2.4.2.1 基备份集搜索目录
基备份集搜索目录是指搜集目标基备份集的文件路径。专门用于增量备份或增量还原中。
增量备份或还原过程中,一般通过 BASE ON BACKUPSET 指定准确的基备份集目录或使用 WITH BACKUPDIR 指定基备份集搜索目录。
如果上述语法指定的路径中无基备份集可用或未通过上述语法指定,则系统会从下述默认基备份集搜索目录中继续搜索可用的基备份集。
默认基备份集搜索目录包括以下几种情况:
联机或脱机增量备份时,将使用数据库的默认备份目录作为基备份集搜索目录之一。
联机或脱机增量备份时,将当前指定的增量备份集所在的上级目录作为基备份集搜索目录之一。
脱机还原时,将 CONFIGURE ADD 语句添加的搜索目录作为基备份集搜索目录之一。
脱机还原时,将当前增量备份集所在的上级目录作为基备份集的搜索目录之一。
如果使用第三方备份(介质为 TAPE 类型),则只搜索 WITH BACKUPDIR 子句指定的备份集目录,具体搜集方式由第三方备份程序决定。
WITH BACKUPDIR 子句指定的目录列表,如果包含非法目录或目录不存在则报错。
3.2.4.2.2 动态视图备份集搜索目录
V$BACKUPSET_SEARCH_DIRS 中记录了默认备份目录(即 BAK_PATH 配置的路径)和通过本节 SF 存储函数添加的备份目录。
V$BACKUPSET_SEARCH_DIRS 中的备份集搜索目录专门用于在 3.2.4.4 备份信息查看中动态视图或批量删除备份集中。即当执行动态视图或批量删除备份集时,均会从 V$BACKUPSET_SEARCH_DIRS 的显示的目录中搜索备份集信息。
本节的存储函数主要包括:
SF_BAKSET_BACKUP_DIR_ADD
SF_BAKSET_BACKUP_DIR_REMOVE
SF_BAKSET_BACKUP_DIR_REMOVE_ALL
SF_BAKSET_BACKUP_DIR_ADD 函数
添加备份目录。若添加目录已经存在或者为数据库的默认备份目录,则认为已经存在,不添加,但也不报错。若添加目录包含非法目录或目录不存在,则报错。
定义:
INT SF_BAKSET_BACKUP_DIR_ADD(
device_type varchar,
backup_dir varchar(256)
)
参数说明:
device_type:待添加的备份目录对应存储介质类型,DISK 或者 TAPE。目前,无论指定介质类型为 DISK 或者 TAPE,都会同时搜索两种类型的备份集。
backup_dir:待添加的备份目录。
返回值:
1:目录添加成功;其它情况下报错。
举例说明:
例 向 DISK 中添加备份目录/home/dm_bak。
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
执行结果如下:
1
SF_BAKSET_BACKUP_DIR_REMOVE 函数
删除备份目录。若待删除目录为数据库的默认备份目录,不进行删除,认为删除失败;若待删除目录存在于记录的合法目录中,则删除;若待删除目录不存在或者为空则跳过,正常返回。
定义:
INT SF_BAKSET_BACKUP_DIR_REMOVE (
device_type varchar,
backup_dir varchar(256)
)
参数说明:
device_type:待删除的备份目录对应存储介质类型,DISK 或者 TAPE。
backup_dir:待删除的备份目录。
返回值:
1:目录删除成功、目录不存在或者目录为空;0:目录为数据库的默认备份目录;其他情况报错。
举例说明:
例 从 DISK 中删除备份目录/home/dm_bak。
SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/home/dm_bak');
执行结果如下:
1
SF_BAKSET_BACKUP_DIR_REMOVE_ALL 函数
清理全部备份目录,默认备份目录除外。
定义:
INT SF_BAKSET_BACKUP_DIR_REMOVE_ALL ()
返回值:
1:目录全部清理成功;其它情况下报错。
举例说明:
例 清理(除去默认备份目录之外的)全部备份目录。
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
执行结果如下:
1
3.2.4.3 备份集校验与删除
本节介绍备份管理中最重要的功能,备份集校验和备份集删除。单个备份集删除时并行备份中的子备份集不允许单独删除;在给定备份集搜索目录中发现存在引用删除备份集作为基备份的需要执行级联删除,默认报错。批量删除备份集时,跳过收集到的单独的子备份集。仅允许具有 DBA 权限的用户执行删除备份集操作。
主要内容如下:
SF_BAKSET_CHECK
SF_BAKSET_REMOVE
SF_BAKSET_REMOVE_BATCH
SP_DB_BAKSET_REMOVE_BATCH
SP_TS_BAKSET_REMOVE_BATCH
SP_TAB_BAKSET_REMOVE_BATCH
SP_ARCH_BAKSET_REMOVE_BATCH
SF_BAKSET_CHECK 函数
对备份集进行校验。仅拥有 DBA 权限的用户才能执行。
定义:
INT SF_BAKSET_CHECK(
device_type varchar(256),
bakset_path varchar(256),
task_thread integer,
parallel_num integer,
level integer,
password varchar(128),
cipher_name varchar(256)
)
参数说明:
device_type:设备类型,DISK 或 TAPE。
bakset_path:待校验的备份集目录。
task_thread:备份时数据处理过程线程的个数。
parallel_num:校验并行度。
level:备份集校验级别,1 仅校验备份包 crc,2 校验数据页 crc,3 数据页解密校验。可选参数,默认为 1。需与 password 和 cipher_name 同时指定。备份时指定 dm.ini 中 BAK_SAFE_CHECK 为 8-15,生成的备份集才支持指定 level 为 2 或 3 的校验。BAK_SAFE_CHECK 相关描述详见《DM8 系统管理员手册》第 2.1.1.1.22 节。
password:备份密码。可选参数,默认为 NULL。校验级别大于 1,且备份时加密的情况下,需要指定该参数才能进行校验。需与 level 和 cipher_name 同时指定。
cipher_name:备份加密算法名称。可选参数,默认为 NULL。校验级别大于 1,且备份时指定加密算法的情况下,需要指定该参数才能进行校验。需与 level 和 password 同时指定。
返回值:
1:备份集目录存在且合法;否则报错。
举例说明:
例 校验 DISK 中的备份目录/home/dm_bak/db_bak_for_check 是否合法
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_check';
SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/db_bak_for_check');
执行结果如下:
1
SF_BAKSET_REMOVE 函数
具有 DBA 权限的用户删除指定设备类型和指定备份集目录的备份集。一次只检查一个合法.meta 文件,然后删除对应备份集;若存在非法或非正常备份的.meta 文件,则报错或直接返回,不会接着检查下一个.meta 文件;若同一个备份集下还存在其它备份文件或备份集,则只删除备份文件,不会删除整个备份集。
定义:
INT SF_BAKSET_REMOVE (
device_type varchar,
backsetpath varchar(256),
option integer
)
参数说明:
device_type:设备类型,DISK 或 TAPE。
backsetpath:待删除的备份集目录。
Option:删除备份集选项,0 单独删除,1 级联删除。可选参数,默认为 0。并行备份集中子备份集不允许单独删除。单独删除时,若目标备份集被其他备份集引用为基备份,则报错;级联删除时,递归将相关的增量备份也删除。
返回值:
1:备份集目录删除成功,其它情况下报错。
举例说明:
例 1 尝试删除备份目录被引用为基备份的/home/dm_bak/db_bak_for_remove,报错。
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove';
BACKUP DATABASE INCREMENT BACKUPSET '/home/dm_bak/db_bak_for_remove_incr';
SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove');
执行结果如下:
[-8202]:[/home/dm_bak/db_bak_for_remove_incr]的基备份,不能删除。
例 2 删除备份集目录/home/dm_bak/db_bak_for_remove。
SELECT SF_BAKSET_REMOVE('DISK','/home/dm_bak/db_bak_for_remove',1);
执行结果如下:
1
SF_BAKSET_REMOVE_BATCH 函数
具有 DBA 权限的用户批量删除满足指定条件的所有备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除数据库的默认备份目录下的备份集。
定义:
INT SF_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime,
range int,
obj_name varchar(257),
option int,
count int
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
range:指定删除备份的级别。1 代表库级,2 代表表空间级,3 代表表级,4 代表归档备份。若指定为 NULL,则忽略备份集备份级别的区分。DPC 环境只支持库级备份和归档备份,因此 range 只支持指定为 1 或 4。
obj_name:待删除备份集中备份对象的名称,仅表空间级和表级有效。若为表级备份删除,则需指定完整的表名(模式.表名),否则,将认为删除会话当前模式下的表备份。若指定为 NULL,则忽略备份集中备份对象名称区分。
option:删除备份集选项,0 表示普通删除,2 表示强制删除。可选参数,默认为 0。强制删除标记在三种场景下生效:
(1)删除并行备份生成的备份集时,如果删除过程中只收集到主备份集而未收集到子备份集,非强制删除会报错子备份集缺失,而强制删除则能够删除收集到的备份集,忽略未收集到的子备份集;
(2)删除镜像副本时,非强制删除镜像副本,只会删除.meta 和.bak 文件,强制删除还会删除备份集中的镜像文件;
(3)删除备份集的过程中,忽略删除文件产生的报错,并将报错文件记录到 BAKRES 日志中,继续删除剩余文件。
count:指定保留的库级完全备份集个数。指定时,会跳过删除最新的 count 个库级完全备份集。当指定为 NULL 时,默认保留一个备份时间最新的库级完全备份集;指定为 0 时,则不保留任何备份集。
返回值:
1:备份集目录删除成功,其它情况下报错。
举例说明:
使用 SF_BAKSET_REMOVE_BATCH 保留库级完全备份 db_bak_for_remove_s_2、db_bak_for_remove_s_3,删除其余三个备份集。
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_1';
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_2';
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_3';
BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove_s_1';
BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove_s_2';
SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL, 2, 2);
执行结果如下:
1
SF_BAKSET_REMOVE_BATCH_S 函数
具有 DBA 权限的用户批量安全删除满足指定条件的所有库级备份集,保留备份时间最新的库级完全备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除数据库的默认备份目录下的备份集。
定义:
INT SF_BAKSET_REMOVE_BATCH_S (
device_type varchar,
end_time datetime,
range int,
obj_name varchar(257)
)
参数说明:
range:指定删除备份的级别。1 代表库级,2 代表表空间级,3 代表表级,4 代表归档备份。若指定为 NULL,则忽略备份集备份级别的区分。SF_BAKSET_REMOVE_BATCH_S 目前仅支持批量安全删除库级备份集,若参数指定为 2、3、4,则 SF_BAKSET_REMOVE_BATCH_S 的功能与 SF_BAKSET_REMOVE_BATCH 相同。DPC 环境只支持库级备份和归档备份,因此 range 只支持指定为 1 或 4。
其余参数说明与 SF_BAKSET_REMOVE_BATCH 相同。
返回值:
1:备份集目录删除成功,其它情况下报错。
举例说明:
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_1';
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_2';
BACKUP TABLESPACEMAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove_s_1';
BACKUP TABLESPACEMAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove_s_2';
SELECT SF_BAKSET_REMOVE_BATCH_S ('DISK', now(), NULL, NULL);
执行结果如下:
1
SF_BAKSET_REMOVE_BATCH_S 将保留库级完全备份 db_bak_for_remove_s_2,删除其余三个备份集。
SF_BAKSET_REMOVE_BATCH_N 函数
具有 DBA 权限的用户批量删除满足指定条件的所有库级备份集,保留备份时间最新的 n 个库级完全备份集,n 由用户指定。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除数据库的默认备份目录下的备份集。
定义:
INT SF_BAKSET_REMOVE_BATCH_N (
device_type varchar,
end_time datetime,
range int,
obj_name varchar(257),
count int
)
参数说明:
range:指定删除备份的级别。1 代表库级,2 代表表空间级,3 代表表级,4 代表归档备份。若指定为 NULL,则忽略备份集备份级别的区分。SF_BAKSET_REMOVE_BATCH_N 目前仅支持保留库级完全备份集,参数指定为 2、3、4 时无实际作用。DPC 环境只支持库级备份和归档备份,因此 range 只支持指定为 1 或 4。
count:指定保留的库级完全备份集个数。指定时,会跳过删除最新的 n 个库级完全备份集。若指定为 NULL,则不保留备份集。
返回值:
1:备份集目录删除成功,其它情况下报错。
举例说明:
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_1';
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_2';
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_remove_s_3';
BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove_s_1';
BACKUP TABLESPACE MAIN FULL BACKUPSET '/home/dm_bak/ts_bak_for_remove_s_2';
SELECT SF_BAKSET_REMOVE_BATCH_N ('DISK', now(), NULL, NULL, 2);
执行结果如下:
1
SF_BAKSET_REMOVE_BATCH_N 将保留库级完全备份 db_bak_for_remove_s_2、db_bak_for_remove_s_3,删除其余三个备份集。
SP_DB_BAKSET_REMOVE_BATCH 过程
具有 DBA 权限的用户批量删除指定时间之前的数据库备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除数据库的默认备份目录下的备份集。
定义:
SP_DB_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
举例说明:
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_batch_del';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
CALL SP_DB_BAKSET_REMOVE_BATCH('DISK', NOW());
SP_TS_BAKSET_REMOVE_BATCH 过程
具有 DBA 权限的用户批量删除指定表空间对象及指定时间之前的表空间备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除数据库的默认备份目录下的备份集。
定义:
SP_TS_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime,
ts_name varchar(128)
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
ts_name:表空间名,若未指定,则认为删除所有满足条件的表空间备份集。
举例说明:
BACKUP TABLESPACE MAIN BACKUPSET '/home/dm_bak/ts_bak_for_batch_del';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
CALL SP_TS_BAKSET_REMOVE_BATCH('DISK',NOW(),'MAIN');
SP_TAB_BAKSET_REMOVE_BATCH 过程
具有 DBA 权限的用户批量删除指定表对象及指定时间之前的表备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除数据库的默认备份目录下的备份集。
定义:
SP_TAB_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime,
sch_name varchar(128),
tab_name varchar(128)
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
sch_name:表所属的模式名。
tab_name:表名,只要模式名和表名有一个指定,就认为需要匹配目标;若均指定为 NULL,则认为删除满足条件的所有表备份。
举例说明:
CREATE TABLE TAB_FOR_BATCH_DEL(C1 INT);
BACKUP TABLE TAB_FOR_BATCH_DEL BACKUPSET'/home/dm_bak/tab_bak_for_batch_del';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
CALL SP_TAB_BAKSET_REMOVE_BATCH('DISK',NOW(),'SYSDBA','TAB_FOR_BATCH_DEL');
SP_ARCH_BAKSET_REMOVE_BATCH 过程
具有 DBA 权限的用户批量删除指定时间之前的归档备份集。使用该方法前,需要先使用 SF_BAKSET_BACKUP_DIR_ADD 添加将要删除的备份集目录,否则只删除数据库的默认备份目录下的备份集。
定义:
SP_ARCH_BAKSET_REMOVE_BATCH (
device_type varchar,
end_time datetime
)
参数说明:
device_type:设备类型,DISK 或 TAPE。若指定为 NULL,则忽略存储设备的区分。
end_time:删除备份集生成的结束时间,仅删除 end_time 之前的备份集,必须指定。
举例说明:
BACKUP ARCHIVELOG BACKUPSET '/home/dm_bak/arch_bak_for_batch_del';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK','/home/dm_bak');
CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK', NOW());
3.2.4.4 备份集信息查看
DM 提供了一系列动态视图供用户查看备份集相关信息。本节的视图只显示在 V$BACKUPSET_SEARCH_DIRS 中登记的备份集搜索目录中的备份集信息。如何将备份集目录添加到 V$BACKUPSET_SEARCH_DIRS 中,请参考 3.2.4.2 备份集搜索目录。下面逐个介绍 DM 提供的备份相关动态视图。
V$BACKUPSET
显示备份集的基本信息。
序号
列
数据类型
说明
1
DEVICE_TYPE
VARCHAR(128)
备份集存储介质类型
2
BACKUP_ID
INTEGER
备份 ID
3
PARENT_ID
INTEGER
并行备份的子备份集所属备份的 ID
4
BACKUP_NAME
VARCHAR(512)
备份名
5
BACKUP_PATH
VARCHAR(1024)
备份路径
6
TYPE
INTEGER
备份类型(0:完全备份;1:增量备份;2:表备份;3:归档备份)
7
LEVEL
INTEGER
是否脱机备份。0:联机备份,1:脱机备份
8
RANGE#
INTEGER
1:库备份,2:表空间备份,3:表级备份,4:归档备份,5:数据页备份,6:配置文件备份
9
OBJECT_NAME
VARCHAR(1025)
对象名:数据库名、表空间名或者表名。OBJECT_NAME 除表空间备份和表备份外,其他都取库名
10
OBJECT_ID
INTEGER
对象 ID,表备份时无效
11
BASE_NAME
VARCHAR(512)
基备份名,表备份时无效
12
BACKUP_TIME
DATETIME(6)
备份时间
13
DESC#
VARCHAR(1024)
备份描述信息
14
ENCRYPT_TYPE
INTEGER
加密类型
15
COMPRESS_LEVEL
INTEGER
压缩级别
16
WITHOUT_LOG
INTEGER
联机数据库备份是否备份日志, 表备份时无效
17
USE_PWR
INTEGER
增量备份过程中是否使用 PWR 优化,实际上均不使用,保留仅为了兼容
18
PKG_SIZE
INTEGER
数据包大写标志,内部实现
19
BEGIN_LSN
BIGINT
备份的起始 LSN 值,表备份时无效
20
END_LSN
BIGINT
结束备份的 LSN 值,表备份时无效
21
BKP_NUM
INTEGER
备份片个数,即备份集中.bak 文件个数
22
DBF_NUM
INTEGER
备份集中包含的数据库\表空间数据文件个数,表备份时无效
23
PARALLEL_NUM
INTEGER
并行备份的并行数,0 或者 1 为非并行备份集
24
BAKSET_TYPE
INTEGER
备份集类型。0:普通备份集(NORMAL),1:DDL_CLONE 备份集(DDL_CLONE),2:保留项,暂无意义,3:影子备份集(SHADOW),4:指定 LSN 的增量备份集(GAP),5:镜像备份集(IMAGE COPY)
25
MPP_FLAG
INTEGER
MPP 库备份标识,0:不是,1:是
26
MIN_TRX_START_LSN
BIGINT
该参数未使用,始终为 0
27
MIN_EXEC_VER
INTEGER
备份集适用的最小执行码的版本号,转换为 16 进制匹配版本号。例如:属性值 0x0801010C 对应版本号为 V8.1.1.12
28
CUMULATIVE
INTEGER
增量备份时,是否为累积增量备份。1:是,0:否
29
MIN_DCT_VER
INTEGER
备份集适用的最小字典版本号
30
DDL_CLONE
INTEGER
是否数据库克隆。1:是,0:否
31
BAK_MAGIC
INTEGER
DPC 备份集魔数。DMDPC 专用
32
VERSION
VARCHAR(128)
备份集版本号
33
SUB_VERSION
INTEGER
备份集子版本号
34
BAKSET_MAGIC
INTEGER
备份集魔数,备份时生成的自身 ID。每个备份集的 BAKSET_MAGIC 全局唯一
下面以创建数据库备份为例,查看备份集的介质类型、备份路径、备份类型等基本信息:
BACKUP DATABASE FULL BACKUPSET '/home/dm_bak/db_bak_for_info';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT DEVICE_TYPE,BACKUP_PATH, TYPE, RANGE# FROM V$BACKUPSET;
查询结果如下:
LINEID DEVICE_TYPE BACKUP_PATH TYPE RANGE#
-------- ----------- ----------------------------- ----------- -----------
1 DISK /home/dm_bak/db_bak_for_info 0 1
V$BACKUPSET_DBINFO
显示备份集的数据库相关信息。
序号
列
数据类型
说明
1
DEVICE_TYPE
VARCHAR(128)
备份集存储介质类型
2
BACKUP_ID
INTEGER
备份 ID
3
BACKUP_NAME
VARCHAR(512)
备份名
4
BACKUP_PATH
VARCHAR(1024)
备份路径
5
EXTENT_SIZE
INTEGER
数据文件使用的簇大小
6
PAGE_SIZE
INTEGER
页大小
7
LOG_PAGE_SIZE
INTEGER
日志文件页大小
8
CASE_SENSITVE
INTEGER
大小写敏感标志
9
DB_MAGIC
INTEGER
数据库魔数
10
PMNT_MAGIC
INTEGER
永久魔数(permanent_magic)
11
UNICODE_FLAG
INTEGER
unicode 标志
12
DB_VERSION
INTEGER
数据库版本
13
GLOBAL_VERSION
VARCHAR(512)
数据库全局版本信息
14
ENABLE_POLICY
INTEGER
安全策略
15
ARCH_FLAG
INTEGER
归档是否打开的标志
16
DSC_NODE
INTEGER
高性能集群的节点数目
17
PAGE_CHECK
INTEGER
数据页校验配置
18
RLOG_ENCRYPT
INTEGER
归档日志是否加密
19
EX_CIPHER_NAME
VARCHAR(512)
外部加密算法名称
20
EX_CIPHER_ID
INTEGER
外部加密算法名称对应的 ID
21
EX_HASH_NAME
VARCHAR(512)
外部 HASH 算法名称
22
EX_HASH_ID
INTEGER
外部 HASH 算法名称对应的 ID
23
LENGTH_IN_CHAR
INTEGER
VARCHAR 类型长度是否以字符为单位
24
USE_NEW_HASH
INTEGER
是否使用改进的字符类型 HASH 算法
25
BLANK_PAD_MODE
INTEGER
数据库空格填充模式
26
SRC_DB_MAGIC
INTEGER
源库 DB_MAGIC。如果是主备库,则显示主库的 DB_MAGIC
27
DPC_MAGIC
INTEGER
DMDPC 集群魔数,用于唯一标识一个 DMDPC 集群,同一个 DMDPC 集群内的 MP 和 BP 节点拥有相同的 DPC_MAGIC 值。仅在 DMDPC 环境下有效。其它环境为 0
表还原时要求目标库的特定建库参数要与源库一致,如页大小、簇大小等,通过查看备份文件的数据库信息可确定目标库需要设置哪些建库参数。下面以创建表备份为例,查看备份集的页大小、簇大小、大小写是否敏感、UNICODE_FLAG 等数据库信息:
BACKUP TABLE TAB_01 BACKUPSET '/home/dm_bak/tab_bak_01';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT BACKUP_PATH, PAGE_SIZE, EXTENT_SIZE, CASE_SENSITIVE FROM V$BACKUPSET_DBINFO WHERE BACKUP_PATH='/home/dm_bak/tab_bak_01';
查询结果如下:
LINEID BACKUP_PATH PAGE_SIZE EXTENT_SIZE CASE_SENSITIVE
------- ---------------------------------- ----------- ----------- -------
1 /home/dm_bak/db_bak_for_dbinfo 8192 16 1
V$BACKUPSET_DBF
显示备份集中数据文件的相关信息,表备份时无效。
序号
列
数据类型
说明
1
DEVICE_TYPE
VARCHAR(128)
备份集存储介质类型
2
BACKUP_ID
INTEGER
备份 ID
3
BACKUPNAME
VARCHAR(512)
备份名
4
BACKUPPATH
VARCHAR(1024)
备份路径
5
FILE_SEQ
INTEGER
备份的数据文件序号
6
TS_ID
INTEGER
表空间 ID
7
FILE_ID
INTEGER
数据文件 ID
8
TS_STATE
INTEGER
表空间状态
9
TS_NAME
VARCHAR(512)
表空间名
10
FILE_NAME
VARCHAR(1024)
包含完整路径的数据文件名
11
MIRROR_PATH
VARCHAR(1024)
镜像文件路径
12
FILE_LEN
BIGINT
数据文件占用的字节大小
13
MAX_LIMIT_SIZE
INTEGER
文件最大大小,以 MB 为单位
14
AUTO_EXTEND
INTEGER
是否支持自动扩展:1:支持,0:不支持
15
NEXT_SIZE
INTEGER
文件每次扩展大小,以 MB 为单位
16
START_BKP_SEQ
INTEGER
起始备份片编号
17
START_BKP_OFF
BIGINT
起始备份片偏移
18
END_BKP_SEQ
INTEGER
结束备份片编号
19
END_BKP_OFF
BIGINT
结束备份片偏移
数据库和表空间备份集中记录了备份的数据文件具体信息,如果想了解备份集中包含了哪些数据文件且这些数据文件有什么属性,可通过查询 V$BACKUPSET_DBF 实现。下面以表空间备份为例,查看备份集中的数据文件信息。
CREATE TABLESPACE TS_FOR_DBF DATAFILE'TS_FOR_DBF_01.DBF' SIZE 128;
ALTER TABLESPACE TS_FOR_DBF ADD DATAFILE'TS_FOR_DBF_02.DBF' SIZE 128;
BACKUP TABLESPACE TS_FOR_DBF BACKUPSET '/home/dm_bak/ts_bak_for_dbf';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT FILE_SEQ, TS_ID, FILE_ID, TS_NAME, FILE_NAME FROM V$BACKUPSET_DBF WHERE BACKUPPATH ='/home/dm_bak/ts_bak_for_dbf';
查询结果如下:
LINEID FILE_SEQ TS_ID FILE_ID TS_NAME FILE_NAME
------ ---------- ------ ----------- ---------- --------
1 1 5 0 TS_FOR_DBF /home/xm/DAMENG/TS_FOR_DBF_01.DBF
2 2 5 1 TS_FOR_DBF /home/xm/DAMENG/TS_FOR_DBF_02.DBF
V$BACKUPSET_ARCH
显示备份集中归档文件的信息,且仅归档备份才会有数据。
序号
列
数据类型
说明
1
DEVICE_TYPE
VARCHAR(128)
备份集存储介质类型
2
BACKUP_ID
INTEGER
备份 ID
3
BACKUPNAME
VARCHAR(512)
备份名
4
BACKUPPATH
VARCHAR(1024)
备份路径
5
FILE_SEQ
INTEGER
备份的数据文件序号
6
FILE_NAME
VARCHAR(1024)
归档文件路径
7
FILE_LEN
BIGINT
归档文件大小
8
DSC_SEQNO
INTEGER
DSC 节点号
9
BEGIN_SEQNO
BIGINT
归档起始 PKG SEQNO
10
BEGIN_LSN
BIGINT
归档起始 LSN 值
11
END_SEQNO
BIGINT
归档结束 PKG SEQNO
12
END_LSN
BIGINT
归档结束 LSN 值
13
CREATE_TIME
DATETIME(6)
归档文件的创建时间
14
CLOSE_TIME
DATETIME(6)
归档文件的关闭时间
15
START_BKP_SEQ
INTEGER
起始备份片编号
16
START_BKP_OFF
BIGINT
起始备份片偏移
17
END_BKP_SEQ
INTEGER
结束备份片编号
18
END_BKP_OFF
BIGINT
结束备份片偏移
备份集日志信息可以是联机库备份中备份开始到备份结束这段时间数据库产生的日志,也可以是归档备份中备份的归档信息。接下来以数据库备份为例查询备份集日志信息。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_arch';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT BACKUPPATH, FILE_SEQ, BEGIN_LSN, END_LSN FROM V$BACKUPSET_ARCH
WHERE BACKUPPATH='/home/dm_bak/db_bak_for_arch';
查询结果如下:
LINEID BACKUPPATH FILE_SEQ BEGIN_LSN END_LSN
------- ---------------------------- ---------- -------------- ----------
1 /home/dm_bak/db_bak_for_arch 6 280037 281471
V$BACKUPSET_BKP
显示备份集的备份片信息。
序号
列
数据类型
说明
1
DEVICE_TYPE
VARCHAR(128)
备份集存储介质类型
2
BACKUP_ID
INTEGER
备份 ID
3
BACKUPNAME
VARCHAR(512)
备份名
4
BACKUPPATH
VARCHAR(1024)
备份路径
5
BKP_NTH
INTEGER
备份片文件编号
6
FILE_NAME
VARCHAR(1024)
备份文件名
7
BKP_LEN
BIGINT
备份片长度
以数据库备份为例,查看备份集中的备份片信息。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_bkp';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT BACKUPPATH, BKP_NTH, FILE_NAME, BKP_LEN FROM V$BACKUPSET_BKP WHERE
BACKUPPATH='/home/dm_bak/db_bak_for_bkp';
查询结果如下:
LINEID BACKUPPATH BKP_NTH FILE_NAME BKP_LEN
------- --------------------------- ------- -------------------- --------
1 /home/dm_bak/db_bak_for_bkp 0 db_bak_for_bkp.bak 15378944
2 /home/dm_bak/db_bak_for_bkp 1 db_bak_for_bkp_1.bak 9216
V$BACKUPSET_SEARCH_DIRS
显示动态视图备份集搜索目录。记录了默认备份目录(即 BAK_PATH 配置的路径)和通过存储函数 SF_BAKSET_BACKUP_DIR_ADD 添加的备份目录。
序号
列
数据类型
说明
1
DIR
VARCHAR(1024)
备份集搜索目录
查询 V$BACKUPSET_SEARCH_DIRS 显示当前会话已添加的备份目录,即备份集搜索目录。若用户没有添加备份目录,那么仅显示默认的备份目录。
SELECT SF_BAKSET_BACKUP_DIR_REMOVE_ALL();
SELECT * FROM V$BACKUPSET_SEARCH_DIRS;
查询结果如下:
LINEID DIR
--------- -------------------
1 /home/xm/DAMENG/bak
如果添加备份目录,查询结果包括默认备份目录和用户添加的备份目录。
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT * FROM V$BACKUPSET_SEARCH_DIRS;
查询结果如下:
LINEID DIR
-------- -------------------
1 /home/dm_bak
2 /home/xm/DAMENG/bak
V$BACKUPSET_TABLE
显示表备份集中备份表信息,仅表备份有效。
序号
列
数据类型
说明
1
DEVICE_TYPE
VARCHAR(128)
备份集存储介质类型
2
BACKUP_ID
INTEGER
备份 ID
3
BACKUPNAME
VARCHAR(512)
备份名
4
BACKUPPATH
VARCHAR(1024)
备份路径
5
SCHEMANAME
VARCHAR(512)
备份表所属的模式名
6
USERNAME
VARCHAR(512)
执行表备份的用户名
7
TSNAME
VARCHAR(512)
备份表存储的表空间名
8
TABLENAME
VARCHAR(512)
备份表名
9
TABLETYPE
INTEGER
表类型
10
INIT_SQL
VARCHAR(4096)
完整建表语句,忽略无效的约束 (语句可能会被截断)
11
DCONS_SQL
VARCHAR(4096)
备份表中被禁用约束的创建语句(语句可能会被截断,DMRMAN 可查看完整语句)
12
DIDX_SQL
VARCHAR(4096)
备份表中无效二级索引的创建语句(语句可能会被截断,DMRMAN 可查看完整语句)
13
BIDX_NUM
INTEGER
备份集中备份的二级索引个数
14
META_VERSION
INTEGER
B 树版本号,目前固定为 28676
下面创建表备份并查看备份中备份名、备份路径、表名等信息。
CREATE TABLE TAB_FOR_INFO(C1 INT);
BACKUP TABLE TAB_FOR_INFO TO TAB_BAK_FOR_INFO BACKUPSET '/home/dm_bak/tab_bak_for_info';
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT BACKUPNAME, TABLENAME FROM V$BACKUPSET_TABLE WHERE BACKUPPATH='/home/dm_bak/tab_bak_for_info';
查询结果如下:
LINEID BACKUPNAME TABLENAME
------- ---------------- ------------
1 TAB_BAK_FOR_INFO TAB_FOR_INFO
V$BACKUPSET_SUBS
显示并行备份中生成的子备份集信息。
序号
列
数据类型
说明
1
DEVICE_TYPE
VARCHAR(128)
备份集存储介质类型
2
BACKUPNAME
VARCHAR(512)
备份名
3
BACKUP_ID
INTEGER
备份 ID
4
PARENT_ID
INTEGER
子备份集所属主备份集 ID
5
BACKUPPATH
VARCHAR(1024)
各备份集绝对路径
6
BKP_NUM
INTEGER
各备份集中备份片文件个数,可能为 0
7
DBF_NUM
INTEGER
各备份集中备份数据文件个数,可能为 0
8
BAKSET_SEQNO
INTEGER
子备份集序号
数据库和表空间支持并行备份,备份后会在主备份集中生成多个子备份集,查询视图 V$BACKUPSET_SUBS 可获取子备份集中包含的备份片文件个数及备份数据文件个数等信息。以创建数据库并行备份为例,查看子备份集的相关信息。
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_subs' PARALLEL 3;
SELECT SF_BAKSET_BACKUP_DIR_ADD('DISK', '/home/dm_bak');
SELECT BACKUPPATH, BKP_NUM, DBF_NUM FROM V$BACKUPSET_SUBS;
查询结果如下:
LINEID BACKUPPATH BKP_NUM DBF_NUM
------ ----------------------------------------------- ----------- -------
1 /home/dm_bak/db_bak_for_subs/db_bak_for_subs_0 1 1
2 /home/dm_bak/db_bak_for_subs/db_bak_for_subs_1 1 1
3 /home/dm_bak/db_bak_for_subs/db_bak_for_subs_2 1 1
3.2.4.5 监控备份过程
对于数据库备份、表空间备份以及归档备份,DM 提供了一系列动态视图以实时监控备份过程。
下面逐个介绍 DM 提供的备份相关动态视图。
V$BACKUP_MONITOR
显示当前备份任务实时监控信息。
序号
列
数据类型
说明
1
PATH
VARCHAR(256)
备份集路径
2
BAKSET_MAGIC
INTEGER
备份集魔数
3
START_TIME
DATETIME(6)
备份开始时间
4
REMAINING
VARCHAR(16)
预估剩余时间
5
TOTAL_SIZE
BIGINT
待备份数据文件大小, 单位字节
6
PCNT
DEC(6, 2)
备份完成百分比
7
READ_SIZE
BIGINT
已读取数据文件大小,单位字节
8
WRITE_SIZE
BIGINT
备份集写入数据大小,单位字节
9
AVG_READ
DEC(16, 2)
平均读取速度,单位 MB/S
10
MIN_READ
DEC(16, 2)
最小读取速度,单位 MB/S
11
MAX_READ
DEC(16, 2)
最大读取速度,单位 MB/S
12
CUR_READ
DEC(16, 2)
当前读取速度,单位 MB/S
13
AVG_WRITE
DEC(16, 2)
平均写入速度,单位 MB/S
14
MIN_WRITE
DEC(16, 2)
最小写入速度,单位 MB/S
15
MAX_WRITE
DEC(16, 2)
最大写入速度,单位 MB/S
16
CUR_WRITE
DEC(16, 2)
当前写入速度,单位 MB/S
下面以创建数据库备份为例,查看当前备份任务的待备份数据文件大小、备份完成百分比、当前读取速度以及当前写入速度等基本信息:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_monitor';
SELECT TOTAL_SIZE, PCNT, CUR_READ, CUR_WRITE FROM V$BACKUP_MONITOR;
查询结果如下:
//第一次查询
行号 TOTAL_SIZE PCNT CUR_READ CUR_WRITE
---------- -------------------- ----- -------- ---------
1 27262976 54.33 60.36 24.21
//第二次查询
行号 TOTAL_SIZE PCNT CUR_READ CUR_WRITE
---------- -------------------- ------ -------- ---------
1 27262976 100.00 0 0.04
V$BACKUP_FILES
显示当前备份任务待备份数据文件列表。
序号
列
数据类型
说明
1
PATH
VARCHAR(256)
数据文件路径
2
SIZE
BIGINT
数据文件大小, 单位字节
3
OFFSET
BIGINT
已读取数据文件偏移
4
START_TIME
DATETIME(6)
开始备份时间
下面以创建数据库备份为例,查看当前备份任务的待备份数据文件的路径、大小、已读取数据文件偏移等基本信息:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_files';
SELECT PATH, SIZE, OFFSET FROM V$BACKUP_FILES;
查询结果如下:
行号 PATH SIZE OFFSET
-------- --------------------------------- -------------- ---------------
1 /home/db/db_dev2/DAMENG/SYSTEM.DBF 14811136 14811136
2 /home/db/db_dev2/DAMENG/ROLL.DBF 12320768 12320768
3 /home/db/db_dev2/DAMENG/MAIN.DBF 131072 131072
V$BACKUP_HISTORY
显示最近 100 条备份监控信息。
序号
列
数据类型
说明
1
PATH
VARCHAR(256)
备份集路径
2
START_TIME
DATETIME(6)
备份开始时间
3
END_TIME
DATETIME(6)
备份结束时间
4
READ_SIZE
BIGINT
已读取数据文件大小,单位字节
5
WRITE_SIZE
BIGINT
备份集写入数据大小,单位字节
6
AVG_READ
DEC(16, 2)
平均读取速度,单位 MB/S
7
MIN_READ
DEC(16, 2)
最小读取速度,单位 MB/S
8
MAX_READ
DEC(16, 2)
最大读取速度,单位 MB/S
9
AVG_WRITE
DEC(16, 2)
平均写入速度,单位 MB/S
10
MIN_WRITE
DEC(16, 2)
最小写入速度,单位 MB/S
11
MAX_WRITE
DEC(16, 2)
最大写入速度,单位 MB/S
12
BAKSET_MAGIC
BIGINT
备份集魔数
13
BACKUP_NAME
VARCHAR(128)
备份名称
14
RANGE
INTEGER
备份范围(1:数据库;2:表空间;3:表;4:归档;5:数据页;6:配置文件)
15
TYPE
INTEGER
备份类型(0:完全备份;1:增量备份;2:表备份;3:归档备份)
16
SQL
VARCHAR(512)
备份执行的 SQL 语句
17
STATUS
VARCHAR(16)
备份状态(0:失败;1:成功)
18
ERROR
VARCHAR(2048)
错误描述
下面以创建数据库备份为例,查看最近 100 条备份监控信息的已读取数据文件大小、备份集写入数据大小、平均读取速度以及平均写入速度等基本信息:
BACKUP DATABASE BACKUPSET '/home/dm_bak/db_bak_for_history';
SELECT READ_SIZE, WRITE_SIZE, AVG_READ, AVG_WRITE FROM V$BACKUP_HISTORY;
查询结果如下:
行号 READ_SIZE WRITE_SIZE AVG_READ AVG_WRITE
---------- -------------- -------------- ------------ ---------
1 27262976 15634944 10.40 5.96
3.2.5 数据还原
DM 仅支持表的联机还原,数据库、表空间和归档日志的还原必须通过脱机工具 DMRMAN 执行。本章节主要介绍如何使用 DIsql 工具还原表。
本章内容主要包括:
表还原
3.2.5.1 表还原
3.2.5.1.1 概述
表还原之后不需要恢复操作。DIsql 中输入以下简单的 RESTORE 语句就可还原表:
RESTORE TABLE TAB_01 FROM BACKUPSET 'tab_bak_01';
语法如下:
RESTORE TABLE [<表名>] [STRUCT] [KEEP TRXID]
[IDENTIFIED BY <密码>|"<密码>" [ENCRYPT WITH <加密算法>]]
[TRACE FILE '
FROM BACKUPNAME <备份名>
表名:指定需要还原的表名称。指定表名还原时数据库中必须存在该表,否则报错,不会从备份集判断是否存在目标表。
STRUCT:执行表结构还原,若未指定,则认为是表中数据还原;表数据还原要求还原目标表结构与备份集中完全一致,否则报错,所以表结构还原可以在表数据还原之前执行,减少报错。
KEEP TRXID:指定还原后数据页上记录的 TRXID 保持不变,若发现备份时系统最大的 TRXID 大于等于当前系统的最大 TRXID,则将当前系统最大事务 ID+1000。调整后副作用:rec_id >= next_trxid 的记录,或者 rec_id <= bak_max_trxid + 1000 的记录,可能因为执行了表还原,导致查询结果不正确,原本不可见的数据,变得可见了。
BACKUPSET:表备份时指定的备份集路径。若指定为相对路径,会在默认数据库备份目录下搜索备份集。
BACKUPNAME:表备份时指定的备份名称,在备份集搜索目录下搜索备份集。
DEVICE TYPE:指存储备份集的介质类型,表还原暂时只支持 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
IDENTIFIED BY:加密备份表时,用户设置的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵从 INI 参数 PWD_POLICY 和 PWD_MIN_LEN 指定的口令策略。
ENCRYPT WITH:加密备份表时,用户设置的加密算法。当不指定 ENCRYPT WITH 子句时,默认为 AES256_CFB 加密算法。
注意支持的内置加密算法包括:DES_ECB、DES_CBC、DES_CFB、DES_OFB、DESEDE_ECB、DESEDE_CBC、DESEDE_CFB、DESEDE_OFB、AES128_ECB、AES128_CBC、AES128_CFB 、AES128_OFB、AES192_ECB、AES192_CBC、AES192_CFB 、AES192_OFB、AES256_ECB、AES256_CBC、AES256_CFB 、AES256_OFB 、RC4支持的现有第三方加密算法包括:OPENSSL_SM4_ECB、OPENSSL_SM4_CBC、OPENSSL_SM4_CFB、OPENSSL_SM4_OFB、OPENSSL_SM4_CFB_V1、OPENSSL_SM4_OFB_V1另外,用户可也使用自行封装的加密算法,详情请参考《DM8安全管理》
TRACE FILE:指定生成的 TRACE 文件。启用 TRACE,但不指定 TRACE FILE 时,默认在 DM 数据库系统的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件;若使用相对路径,则生成在执行码同级的 log 目录下。如果指定的 TRACE 文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。TRACE FILE 不可以为 ASM 文件。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
TRACE LEVEL:是否启用 TRACE。有效值 1、2,默认为 1,表示不启用 TRACE;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。
图例:
使用说明:
仅支持对普通用户表进行还原,包括堆表。其中,系统表、临时表、物化视图表、物化视图附属表、日志表以及特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSJOB/SYSCPT/SYS)下的表不支持还原。
列类型为对象类型的表不支持表还原。
若还原表中存在位图连接索引和位图连接虚索引则不支持还原。
若为加密库,表还原时要求源库与目标库加密算法一致。
备份集路径指备份集所在目录,其中应包含完整备份数据,包括元数据文件(.meta)和备份片文件(.bak)。仅支持从表备份集中还原表。
表名设置为可选参数。若指定,则数据库中必须存在该表且表定义必须与备份表严格一致;若不指定,则使用备份集中记录的备份表作为还原目标表。
还原时若不指定目标表,则表还原操作需要 DBA 权限;若指定目标表,则目标表的创建者可以进行表还原操作。
目标表所在的表空间必须处于联机状态。
数据守护环境下,主库允许表备份还原,备库不允许。
MOUNT 和 SUSPEND 状态下不允许进行表还原。
MPP 环境不允许进行表还原。
若在语句中指定 STRUCT 关键字,则执行表结构还原。表结构还原会根据备份集中备份表还原要求,对目标表定义进行校验,并删除目标表中已存在的二级索引和约束。
若不指定 STRUCT 关键字,则执行表数据还原,表数据还原默认仅会将备份表中聚集索引上的数据进行还原。表数据还原默认仅会在目标表定义与备份表一致且不存在二级索引和约束的情况下执行。
若在未指定 STRUCT 的情况下,执行还原出现存在二级索引或冗余约束的错误,或在不指定目标表的情况下,报目标不存在的错误,可先执行 STRUCT 还原后,再继续执行实际数据的还原。
若用户指定 TRACE FILE,则指定的文件不能为已经存在的文件,否则报错;也不可以为 ASM 文件。
表还原不检查目标表的缺省表达式(default 值)。
若表列进行了加密,则表还原时不能跨库或跨表还原,只能还原到自身。
3.2.5.1.2 表还原
执行表还原,数据库必须处于 OPEN 状态,MOUNT 和 SUSPEND 状态下不允许执行表还原。表还原不需要配置归档,因为表还原是联机完全备份还原,所以不需要借助本地归档日志进行恢复。完整的表备份还原步骤如下:
保证数据库为 OPEN 状态;
创建待备份的表;
CREATE TABLE TAB_FOR_RES_01(C1 INT);
备份表数据;
BACKUP TABLE TAB_FOR_RES_01 BACKUPNAME TABLE_BAK_01 BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
校验备份,此步骤为可选;
SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_01');
还原表数据。
可以指定备份集路径进行还原:
RESTORE TABLE TAB_FOR_RES_01 FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
也可以指定备份名称进行还原:
RESTORE TABLE TAB_FOR_RES_01 FROM BACKUPNAME TABLE_BAK_01;
表还原实质是表内数据的还原,以及索引和约束等的重建。如果备份文件与目标表中都包含索引或约束该如何还原呢?下面以表中包含索引为例说明如何还原表,具体步骤如下:
保证数据库为 OPEN 状态;
创建待备份的表;
CREATE TABLE TAB_FOR_RES_02(C1 INT);
创建索引;
CREATE INDEX I_TAB_FOR_RES_02 ON TAB_FOR_RES_02(C1);
备份表;
BACKUP TABLE TAB_FOR_RES_02 BACKUPSET '/home/dm_bak/tab_bak_for_res_02';
校验备份,此步骤为可选;
SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_02');
执行表结构还原,表备份和目标表中都包含索引,如果直接执行表数据还原会报错:还原表中存在二级索引或冗余约束;
RESTORE TABLE TAB_FOR_RES_02 STRUCT FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_02';
执行表数据还原。
RESTORE TABLE TAB_FOR_RES_02 FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_02';
3.2.6 数据还原高级主题
本节介绍使用 DIsql 工具联机数据还原的高级过程,DIsql 工具仅支持对表进行还原。
本节主要内容包括:
表还原
3.2.6.1 表还原
前面已经介绍了表备份还原的基本常用操作,本节将介绍一些表还原的高级过程。主要内容包括:
指定还原时不重建索引
指定还原时不重建约束
指定还原时不重建索引
表备份时会默认备份表中的索引,还原时使用 RESTORE TABLE...WITHOUT INDEX...语句可选择不还原索引。完整示例如下:
保证数据库为 OPEN 状态;
准备数据,创建待备份的表及索引;
CREATE TABLE tab_for_idx(c1 INT);
CREATE INDEX i_tab_for_idx ON tab_for_idx (c1);
INSERT INTO tab_for_idx VALUES(1);
INSERT INTO tab_for_idx VALUES(2);
INSERT INTO tab_for_idx VALUES(3);
INSERT INTO tab_for_idx VALUES(4);
INSERT INTO tab_for_idx VALUES(5);
备份表数据;
BACKUP TABLE tab_for_idx BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
校验备份,此步骤为可选;
SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_01');
准备还原表;
CREATE TABLE tab_for_res_idx(c1 INT);
还原表数据,但不重建索引。
RESTORE TABLE tab_for_res_idx WITHOUT INDEX FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_01';
指定还原时不重建约束
表备份时会默认备份表中的约束定义,还原时使用 RESTORE TABLE...WITHOUT CONSTRAINT...语句可选择还原时不重建约束。要求还原表上不能存在任何约束,否则执行还原时将报错。
完整示例如下:
保证数据库为 OPEN 状态;
准备数据,创建待备份的表及约束;
CREATE TABLE tab_for_cons(c1 INT, c2 INT CHECK(c2<10));
INSERT INTO tab_for_cons VALUES(1,1);
INSERT INTO tab_for_cons VALUES(2,2);
INSERT INTO tab_for_cons VALUES(3,3);
INSERT INTO tab_for_cons VALUES(4,4);
INSERT INTO tab_for_cons VALUES(5,5);
备份表数据;
BACKUP TABLE tab_for_cons BACKUPSET '/home/dm_bak/tab_bak_for_res_02';
校验备份,此步骤为可选;
SELECT SF_BAKSET_CHECK('DISK','/home/dm_bak/tab_bak_for_res_02');
准备还原表,该表上不能存在任何约束;
CREATE TABLE TAB_FOR_RES_CONS(C1 INT, C2 INT);
还原表数据,但不还原约束。
RESTORE TABLE tab_for_res_cons WITHOUT CONSTRAINT FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_02';
如果直接将备份表作为还原表,由于备份表上存在约束,因此需要首先使用 RESTORE TABLE...STRUCT WITHOUT CONSTRAINT...语句还原备份表的表结构,去除表中约束后才能以不重建约束的方式还原表数据,如下所示:
首先还原表结构,不还原约束。
RESTORE TABLE tab_for_cons STRUCT WITHOUT CONSTRAINT FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_02';
还原表数据,不还原约束。
RESTORE TABLE tab_for_cons WITHOUT CONSTRAINT FROM BACKUPSET '/home/dm_bak/tab_bak_for_res_02';
3.3 使用脱机工具 DMRMAN 进行备份还原
DMRMAN(DM RECOVERY MANAGER)是 DM 的脱机备份还原管理工具,由它来统一负责库级脱机备份、脱机还原、脱机恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。
通过 DMRMAN 工具执行脱机操作过程中,仅会使用通过关键字 DATABASE 指定的目标库的本地归档配置信息,不会对本地归档配置文件中其他类型归档配置信息进行校验。例如:DATABASE 指定目标库为/opt/dmdbms/data/dm.ini,为单机环境且配置参数 ARCH_INI 为 1,那么只会相应的读取 dmarch.ini 中本地归档日志信息。此时,即使 dmarch.ini 中配置了 REALTIME、MARCH、TIMELY 等其他类型的归档日志,也不会去校验 dmmal.ini、dmtimer.ini 等是否有效。
本章节内容主要包括:
DMRMAN 概述
启动和配置 DMRMAN
数据备份
管理备份
数据库还原和恢复
表空间还原和恢复
归档还原
归档修复
查看操作日志
注意应使用与DM数据库版本配套的DMRMAN工具进行操作。当使用DM7的DMRMAN工具操作DM8数据库时,无法检测DM8数据库实例是否处于启动状态。
3.3.1 DMRMAN 概述
DMRMAN 是 DM 提供的命令行工具,无需额外安装。DMRMAN 的结构比较复杂,为了更好地使用它我们需要了解它的结构。接下来将对 DMRMAN 的重要组成部分进行介绍。
源库
源库是待备份的数据库。使用 DMRMAN 工具只可对数据库进行脱机备份,联机备份需要通过 DIsql 工具实现。DMRMAN 可以针对整个数据库执行脱机完全备份和增量备份,数据库可以配置归档也可以不配置。
目标库
目标库是待还原的数据库,即用来做还原的库,也称为目标还原库。目标库可以是通过 dm.ini 文件指定的数据库,也可以是目标文件目录。通过 dm.ini 指定库时,dm.ini 及其配置中的 CTL_PATH 必须有效,且库必须处于关闭状态;指定文件目录时,指定目录作为 SYSTEM_PATH 处理,可以存在,也可以不存在,但必须有效。目前目标库的还原仅支持脱机还原,可通过 DMRMAN 和 CONSOLE 工具实现。
DMRMAN 客户端
DMRMAN 客户端是 DM 软件的一部分,用来执行数据库的备份还原操作。DMRMAN 客户端是一个命令行工具,命令行的好处是管理员可以编写复杂的脚本,将 DMRMAN 和操作系统的任务调度结合起来可以实现备份的自动化。
备份集
利用 DMRMAN 工具将数据库中的一个或多个数据文件、数据库信息等备份到一个称为“备份集”的逻辑结构中,备份集的格式是特定的,只能由 DMRMAN 创建和访问。一个备份集中会包含一个或多个二进制文件,该二进制文件被称为备份片。备份数据库会产生一个备份集,该备份集可能包含一个或者多个备份片。备份片的个数由数据库中数据文件的大小和文件系统对文件大小的限制共同决定。如果备份的数据文件大小超过了文件系统对文件大小的限制就会产生多个备份片。
在对数据库进行备份时可以指定备份片的大小来适应存储设备的容量。例如,一个数据库产生的数据文件的大小约为 40GB,一盘磁带的容量为 10GB,这时可以指定备份片大小为 10G,备份后备份集将包含 4 个备份片,正好使用 4 盘磁带。
3.3.2 启动和配置 DMRMAN
本节介绍如何启动命令行工具 DMRMAN 并进行交互。主要内容包括:
启动和退出 DMRMAN
输入 DMRMAN 命令
DMRMAN 环境配置
3.3.2.1 启动和退出 DMRMAN
安装 DM 数据库后,DMRMAN 可执行程序与数据库其他可执行程序一样位于安装路径的执行码目录下。比如,LINUX 上数据库的执行码目录为/opt/dmdbms/bin,转到执行码目录直接在操作系统的命令行中输入以下命令就可启动 DMRMAN。若配置了环境变量 DM_HOME,可直接命令行执行:
./dmrman
启动后控制台中输入 exit 命令即可退出 DMRMAN 环境:
RMAN>exit
3.3.2.2 输入 DMRMAN 命令
DMRMAN 工具支持控制台输入命令、命令行设置参数两种操作方式。下面分别对这两种操作方式进行介绍。
DMRMAN 控制台输入命令
当 DMRMAN 客户端已经启动且可以输入命令时会显示命令提示符。如下所示:
RMAN>
输入以下用于执行的 DMRMAN 命令:
RMAN>HELP
RMAN>BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini';
大多数的 DMRMAN 命令会设置多个参数,命令的结尾可以加分号结束,也可以不使用分号。
DMRMAN 控制台还可以执行脚本。如首先创建一个名为 cmd_file.txt 的文件,文件中包含“BACKUP DATABASE'/opt/dmdbms/data/DAMENG/dm.ini'”命令,保存到/home/dm_cmd 目录下,则该文件的执行方式如下:
RMAN>`/home/dm_cmd/cmd_file.txt
DMRMAN 是按行解析命令,如果输入一行不完整的命令执行会报错,如一条完整的命令分三行输入会导致报错:
BACKUP
DATABASE
'/opt/dmdbms/data/DAMENG/dm.ini';
DMRMAN 命令行设置参数执行
DMRMAN 命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。DMRMAN 支持的参数如表 3.3 所示。
表3.3 DMRMAN参数
参数
含义
备注
CTLFILE
指定执行语句所在的文件路径,不能和 CTLSTMT 同时使用。脚本文件格式支持*.txt
可选参数
CTLSTMT
指定待执行语句,不能和 CTLFILE 同时使用。如:CTLSTMT="BACKUP DATABASE '/home/dmdbms/data/DAMENG/dm.ini'"
可选参数
DCR_INI
指定 dmdcr.ini 路径,用于 ASM 存储时访问 ASM 服务;若未指定,则认为不存在 ASM 存储。可单独使用,也可与其他参数配合使用。主要用于 DMDSC 环境
可选参数
USE_AP
指定备份还原执行策略。取值 1、2。默认为 1。 1:使用 dmap 辅助进程方式执行备份还原;执行备份还原时要求先启动 dmap 服务。 2:无辅助进程方式,由 dmrman 进程自身完成备份还原,不依赖 dmap 服务;配置成 2 的情况下,不能执行第三方备份(即指定 DEVICE TYPE 为 TAPE)。
可选参数
AP_PORT
使用 DMAP 备份还原时 DMAP 的端口号,dmap 的监听端口,监听方配置此参数,取值范围 1024~65534,默认为 4236,发起连接端的端口在 1024-65535 之间随机分配
可选参数
DMAP_INI
指定 dmap.ini 路径,用于配置使用 dmrman 执行脱机备份还原操作生成的 dmrman、BAKRES 日志的日志切换参数。dmap.ini 可配置参数详见《DM8_SQL 语言使用手册》。 需要注意的是,dmap.ini 中配置的 AP_PORT 不更改 dmrman 连接 dmap 的端口号,以指定的 AP_PORT 为准。
可选参数
HELP
打印帮助信息
可选参数
命令行指定脚本执行,要求我们先创建一个包含 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';"
注意CTLFILE中存在多条语句或CTLSTMT中一次输入多条语句时,每条语句都必须以分号结尾;执行单条语句,语句结尾可以加分号也可以不加。CTLSTMT中,待执行语句外层双引号一定要加。执行完毕后工具自动退出。CTLFILE和CTLSTMT不能同时指定。若使用DMASM文件系统,可通过DCR_INI指定目标联机的ASM服务器。
3.3.2.3 DMRMAN 环境配置
使用 CONFIGURE 命令进行 DMRMAN 的默认参数配置,配置默认的存储介质类型、跟踪日志文件、备份集搜索目录、归档日志搜索目录。
显示和清除现有参数的默认配置
配置存储介质类型:DISK 或 TAPE
配置跟踪日志文件
配置备份集搜索目录
配置归档日志搜索目录
语法如下:
CONFIGURE |
CONFIGURE CLEAR |
CONFIGURE DEFAULT
DEVICE [[TYPE <介质类型> [PARMS '<介质参数>']]|CLEAR] |
TRACE [[FILE '<跟踪日志文件路径>'][TRACE LEVEL <跟踪日志等级>]|CLEAR] |
BACKUPDIR [
ARCHIVEDIR [
OPEN FILES [<文件句柄个数> | [CLEAR]]
CONFIGURE:查看设置的默认值。
CLEAR:清理参数的默认值。
DEVICE TYPE:备份集存储的介质类型,DISK 或者 TAPE,默认 DISK,详见 1.4 介质管理层。
PARMS:介质参数,供第三方存储介质(TAPE 类型)管理使用,详见 1.4 介质管理层。
TRACE:介质存储过程中使用的跟踪日志配置,包括文件路径(TRACE FILE)和日志级别(TRACE LEVEL),其中日志级别有效值 1、2,默认为 1 表示不启用 TRACE;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。若用户指定,则指定的文件不能为 ASM 文件。如果指定的 TRACE 文件已存在,则在已有文件中继续写入日志。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
BACKUPDIR:指定默认搜集备份的目录。ADD 添加默认备份集搜索目录,若已经存在,则替换原来的。DELETE:删除指定默认备份集搜索目录。缺省为 ADD,缺省的情况下,使用新加入的目录替换掉所有已有的目录。
ARCHIVEDIR:默认搜集归档的目录。ADD 添加归档日志目录,若已经存在,则替换原来的。DELETE:删除指定归档日志目录。缺省为 ADD,缺省的情况下,使用新加入的目录替换掉所有已有的目录。
ADD:添加默认备份集搜索目录或归档日志目录,若已经存在,则替换原来的。
DELETE:删除指定默认备份集搜索目录或者归档日志目录。
OPEN FILES:库级还原时最大可打开的文件句柄上限,只对 HUGE 文件生效,还原过程中打开 HUGE 文件句柄超出该限制后将主动关闭 HUGE 文件。默认值为 0,表示不检查文件句柄上限。
图例:
sub_conf_stmt:
使用说明:
设置的参数默认值仅在此 DMRMAN 实例存活期间有效。
DMRMAN 命令中如果指定了相同的参数,会覆盖 CONFIGURE 的默认设置。
显示和清除所有默认配置项
使用 CONFIGURE 命令就可显示 DMRMAN 配置项的当前值。示例如下:
RMAN>CONFIGURE;
THE DMRMAN DEFAULT SETTING:
DEFAULT DEVICE:
MEDIA : DISK
DEFAULT TRACE :
FILE :
LEVEL : 1
DEFAULT BACKUP DIRECTORY:
TOTAL COUNT :0
DEFAULT ARCHIVE DIRECTORY:
TOTAL COUNT :0
RMAN>CONFIGURE CLEAR;
使用 CONFIGURE DEFAULT ... CLEAR 命令可恢复任意一个配置项到默认值。示例如下:
RMAN>CONFIGURE DEFAULT DEVICE CLEAR;
或使用 CONFIGURE CLEAR 命令恢复所有配置项到默认值。示例如下:
RMAN>CONFIGURE CLEAR;
配置存储介质类型:DISK 或 TAPE
备份时如果没指定备份介质类型参数,则会使用 CONFIGURE 中配置的默认介质类型。DMRMAN 默认配置的介质类型为 DISK,不需要特别指定。
修改介质类型默认配置的步骤如下:
启动 DMRMAN;
执行 CONFIGURE 命令查看介质类型当前的默认值;
RMAN>CONFIGURE;
执行 CONFIGURE DEFAULT DEVICE TYPE 修改默认值。
RMAN>CONFIGURE DEFAULT DEVICE TYPE TAPE PARMS 'command';
配置跟踪日志文件
跟踪日志文件记录了 SBT 接口的调用过程,用户通过查看日志可跟踪备份还原过程。DMRMAN 备份还原命令中不支持设置跟踪日志文件,只能用 CONFIGURE 命令配置,默认配置不记录跟踪日志。
配置跟踪日志文件步骤如下:
1)显示 TRACE 文件的默认配置;
RMAN>CONFIGURE DEFAULT TRACE;
配置默认 TRACE 文件;
RMAN>CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log';
配置默认 TRACE 级别。
RMAN>CONFIGURE DEFAULT TRACE LEVEL 2;
其中,TRACE 文件和 TRACE 级别也可以同时设置:
RMAN>CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log ' TRACE LEVEL 2;
配置备份集搜索目录
备份集搜索目录用于增量备份还原中搜索基备份。目录下文件的绝对路径长度不能超过 256 个字节,可配置的备份集搜索目录没有限制。如果不指定备份集搜索目录只会在库的默认备份目录和当前备份执行备份集目录的上级目录下搜索备份集。
配置备份集搜索目录步骤如下:
RMAN> CONFIGURE DEFAULT BACKUPDIR;
RMAN> CONFIGURE DEFAULT BACKUPDIR ADD '/home/dm_bak1’,'/home/dm_bak2';
若要增加或删除部分备份集搜索目录,不需要对所有的目录重新进行配置,只要添加或删除指定的目录即可。
RMAN>CONFIGURE DEFAULT BACKUPDIR ADD '/home/dm_bak3';
RMAN>CONFIGURE DEFAULT BACKUPDIR DELETE '/home/dm_bak3';
配置归档日志搜索目录
归档日志搜索目录用于增量备份还原中搜索归档日志。目录下文件的绝对路径长度不能超过 256 个字节,可配置的归档日志搜索目录没有限制。
配置归档日志搜索目录步骤如下:
RMAN> CONFIGURE DEFAULT ARCHIVEDIR;
RMAN> CONFIGURE DEFAULT ARCHIVEDIR ADD '/home/dm_arch1’,'/home/dm_arch2';
若要增加或删除部分归档日志搜索目录,不需要对所有的目录重新进行配置,只要添加或删除指定的目录即可。
RMAN>CONFIGURE DEFAULT ARCHIVEDIR ADD '/home/dm_arch3';
RMAN>CONFIGURE DEFAULT ARCHIVEDIR DELETE '/home/dm_arch3';
3.3.3 数据备份
本节介绍使用 DMRMAN 工具如何执行数据库和归档的备份操作。
本节内容主要包括:
备份数据库
备份归档
3.3.3.1 备份数据库
3.3.3.1.1 概述
在 DMRMAN 工具中使用 BACKUP 命令可以备份整个数据库。使用 DMRMAN 脱机备份数据库需要关闭数据库实例。若是正常退出的数据库,则脱机备份前不需要配置归档;若是故障退出的数据库,则备份前,需先进行归档修复。在 DMRMAN 中输入以下命令即可备份数据库:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
命令执行完后会在默认的备份路径下生成备份集目录。默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置 BAK_PATH,则默认使用 SYSTEM_PATH 下的 bak 目录。这是最简单的脱机数据库备份语句,如果要设置其他备份选项请参考下文的语法及使用说明。
语法如下:
BACKUP DATABASE '
[TO | BACKUPNAME <备份名>] [<备份集路径子句>]
[DEVICE TYPE <介质类型>[PARMS '<介质参数>']]
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[LIMIT
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION
[COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG][WITHOUT MIRROR]
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]]
[USE BAK_MAGIC
<备份类型>、<备份集路径子句>、<指定备份集子句>、
DATABASE:必选参数。指定备份源库的 INI 文件路径。
< 备份类型 >、< 备份集路径子句 >、< 指定备份集子句 > 、FROM LSN、CUMULATIVE:请参考 3.2.2.1.1 概述。
WITH BACKUPDIR:用于增量备份中,指定基备份的搜索目录,最大长度为 256 个字节。若缺省,自动在以下路径中搜索:默认备份目录(即 BAK_PATH 配置的路径)、CONFIGURE ADD 语句添加的搜索目录、当前备份集目录(即 BACKUPSET 指定的路径,例如 BACKUPSET 'D:\ bakrman\db_bak'的路径)、当前备份集目录的上一级目录(例如'D:\bakrman')搜索基备份。如果基备份不在上述路径下,增量备份必须指定该参数。
BASE ON BACKUPSET:用于增量备份中,指定基备份集路径。若缺省,则和 WITH BACKUPDIR 缺省时的搜索策略相同。
注意
增量备份时,DM不会在默认备份目录或当前备份目录的子目录中搜索基备份集,因此若基备份集在默认备份目录或当前备份目录的子目录中,则需要指定基备份的搜索目录或直接指定基备份集路径,否则将无法搜索到相应的基备份集,备份操作将会失败。
TO/BACKUPNAME:指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:DB_数据库名称_备份类型_备份时间。其中,备份时间为开始备份时的系统时间。例如:DB_DAMENG_FULL_20240206_143057_123456 表明该备份集为 2024 年 2 月 6 日 14 时 30 分 57 秒 123456 毫秒时生成的数据库 DAMENG 的库完全备份集。备份名区分大小写,且不允许包含转义字符“%”。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
BACKUPINFO:备份的描述信息。最大不超过 256 个字节。
MAXPIECESIZE:最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。缺省为最大取值。
LIMIT:指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵从 INI 参数 PWD_POLICY 和 PWD_MIN_LEN 指定的口令策略。
WITH ENCRYPTION:指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;1 表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2 表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。缺省值为 1,当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。缺省情况下,算法为 AES256_CFB。具体可以使用的加密算法请参考 3.2.2.1.1 概述。
COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG:脱机数据库备份是否备份 REDO 日志。正常退出的库无 REDO 日志需要备份;异常退出的库会有 REDO 日志需要备份。如果使用,则表示不备份,否则表示备份。如果使用了 WITHOUT LOG 参数,则使用 DMRMAN 工具还原时,必须指定 WITH ARCHIVEDIR 参数。
WITHOUT MIRROR:脱机数据库备份是否备份镜像文件。如果使用,则表示不备份,否则表示备份。
TASK THREAD:备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定大于当前系统主机核数,则调整为当前主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL:指定并行备份的并行数和拆分块大小。具体请参考 3.2.2.1.1 概述。
USE BAK_MAGIC:指定 DPC 备份集魔数,用于唯一标识 DMDPC 集群内同一批次的 MP 和 BP 的备份集。在对 DMDPC 节点执行脱机备份时,BAK_MAGIC 由用户指定,若不指定则默认为 0,需要确保同一批次的备份集 BAK_MAGIC 相同,以便区分不同批次的备份集,避免备份集出现混用。在连接 SP 执行集群备份时,BAK_MAGIC 由 MP 自动生成并自动同步给所有 BP 节点,无需用户指定。该参数仅在 DMDPC 环境下有效。
READ SPEED:备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED:备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
图例:
使用说明:
备份成功后会在<备份集目录>或者默认备份目录下生成备份集。备份集中包括一个备份元数据文件,后缀.meta,以及一个或多个备份片文件,后缀.bak。
对于并行备份的备份集,备份集中还包括其他子备份集目录,但每个子备份集目录中也都包含一个元数据文件,以及 0 个或多个备份片文件。
DDL_CLONE 库备份集不能作为增量备份的基备份,仅能用于库级还原。
通过指定 FROM LSN 生成的库备份集不能作为增量备份的基备份,仅能用于库级还原,且必须使用 MERGE 命令执行还原,详见 3.3.5.2.3 增量合并。
脱机备份的数据库可以是正常退出的数据库,也可以是故障退出的数据库。若是故障退出的数据库,则备份前,需先进行归档修复。
在执行脱机数据库备份过程中,如果报错归档不完整,则需要检查库是不是异常退出。如果库是异常退出,则需要先进行归档修复。
STANDBY 模式下的库不支持脱机备份。
备份还原回来的库,服务器没有经过重启的库,不支持脱机备份。
STANDBY 模式切换为 PRIMARY 模式后,服务器没有经过重启的库,不支持脱机备份。
只有建库时指定 RLOG_GEN_FOR_HUGE 参数为 1,备份数据库时才会备份 HUGE 表数据。
3.3.3.1.2 备份数据库
本节主要描述使用 DMRMAN 如何执行基本的脱机数据库备份及实施一些备份策略,包括:
设置备份选项
创建完全备份
创建增量备份
设置备份选项
备份命令如果仅指定了必选参数如“BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'”,那么 DMRMAN 会根据配置的环境及内置的参数默认值自动指定备份介质类型、备份路径、备份片大小等参数。用户备份时也可以指定这些参数来覆盖默认值,常见的备份选项有设置备份集路径、指定备份名、限制备份片大小、添加描述信息、并行备份等。DMRMAN 脱机备份数据库的语法与使用 DIsql 联机备份类似。
创建完全备份
执行数据库备份要求数据库处于脱机状态。若是正常退出的数据库,则脱机备份前不需要配置归档;若是故障退出的数据库,则备份前,需先进行归档修复。以正常退出的数据库为例,一个完整的创建脱机数据库备份的步骤如下:
保证数据库处于脱机状态;
启动 DMRMAN 命令行工具;
DMRMAN 中输入以下命令:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FULL BACKUPSET '/home/dm_bak/db_full_bak_01';
命令中的 FULL 参数表示执行的备份为完全备份,也可以不指定该参数,DMRMAN 默认执行的备份类型为完全备份。
创建增量备份
增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错。
增量备份示例如下:
1) 保证数据库处于脱机状态;
2) 启动 DMRMAN 命令行工具;
3) DMRMAN 中输入以下命令:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR
'/home/dm_bak'BACKUPSET '/home/dm_bak/db_increment_bak_02';
命令中的 INCREMENT 参数表示执行的备份为增量备份,增量备份时该参数不可省略。如果增量备份的基备份不在默认备份目录中,则必须指定 WITH BACKUPDIR 参数用于搜索基备份集,或者使用 CONFIGURE DEFAULT BACKUPDIR 命令配置默认的基备份集搜索目录。
DSC 环境下的脱机库备份与联机库备份存在相同的使用限制。由于脱机备份无法推进检查点,当不满足该约束时,备份将失败。
3.3.3.2 备份归档
3.3.3.2.1 概述
在 DMRMAN 工具中使用 BACKUP 命令可以备份库的归档。使用 DMRMAN 备份归档需要设置归档,否则会报错。关闭数据库实例,在 DMRMAN 中输入以下命令即可备份归档:
RMAN>BACKUP ARCHIVE LOG DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为 dm.ini 中 BAK_PATH 的配置值,若未配置,则使用 SYSTEM_PATH 下的 bak 目录。这是最简单的脱机归档备份语句,如果要设置其他备份选项请参考下文的语法及使用说明。
语法如下:
BACKUP
DATABASE '
<指定备份集子句>::= WITH BACKUPDIR ‘<备份集搜索路径>’{,‘<备份集搜索路径>’}
<备份集子句>::=
[<备份集路径子句>] [DEVICE TYPE <介质类型>[PARMS '<介质参数>']
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>]
[LIMIT
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION
[COMPRESSED [LEVEL <压缩级别>]][TASK THREAD <线程数>]
[PARALLEL [<并行数>][READ SIZE <拆分块大小>]]
ALL:备份所有的归档。若不指定,则默认为 ALL。
FROM LSN ,UNTIL LSN:备份的起始和截止 lsn。具体请参考 3.2.2.4.1 概述。
FROM TIME:指定备份的开始时间点。例如,'2023-12-10'。
UNTIL TIME:指定备份的截止时间点。
BETWEEN ...AND ...:指定备份的区间。指定区间后,只会备份指定区间内的归档文件。
DELETE INPUT:用于指定备份完成后,是否删除归档操作。
DATABASE:必选参数。指定备份源库的 INI 文件路径。
TO|BACKUPNAME< 备份名 >: 指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:ARCH_数据库名称_FULL_备份时间。其中,备份时间为开始备份的系统时间。例如:ARCH_DAMENG_FULL_20240206_143057_123456 表明该备份集为 2024 年 2 月 6 日 14 时 30 分 57 秒 123456 毫秒时生成的数据库 DAMENG 的归档备份集。备份名区分大小写,且不允许包含转义字符“%”。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
BACKUPINFO:备份的描述信息。最大不超过 256 个字节。
MAXPIECESIZE:最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB。缺省为最大取值。
LIMIT:指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY:指定备份时的加密密码。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。密码的设置规则遵从 INI 参数 PWD_POLICY 和 PWD_MIN_LEN 指定的口令策略。
WITH ENCRYPTION:指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;1 表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;2 表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。缺省值为 1,当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH:指定加密算法。缺省情况下,算法为 AES256_CFB。具体可以使用的加密算法请参考 3.2.2.1.1 概述。
COMPRESSED:是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;若未指定 COMPRESSED,则默认不进行压缩处理。
TASK THREAD:备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL:指定并行备份的并行数和拆分块大小。请参考 3.2.2.1.1 概述。
READ SPEED:备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED:备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
图例:
备份集子句(backupset_clause):
*<*not_backedup_spec>:请参考 3.2.2.4.1 概述中归档备份图例。
3.3.3.2.2 备份归档
本节主要描述使用 DMRMAN 如何执行基本的脱机归档备份及实施一些备份策略,包括:
设置备份选项
创建归档备份
创建设置条件的归档备份
设置备份选项
备份命令如果仅指定了必选参数如“BACKUP ARCHIVE LOG DATABASE '/opt/dmdbms/data/DAMENG/dm.ini'”,那么 DMRMAN 会根据配置的环境及内置的参数默认值自动指定备份介质类型、备份路径、备份片大小等参数。用户备份时也可以指定这些参数来覆盖默认值,常见的备份选项有设置备份集路径、指定备份名、限制备份片大小、添加描述信息、并行备份等。DMRMAN 脱机备份归档的语法与使用 DIsql 联机备份类似。
创建归档备份
执行归档备份要求数据库处于脱机状态。与联机归档备份一样,脱机归档备份需要配置归档。一个完整的创建脱机归档备份的示例如下:
配置归档;
保证数据库处于脱机状态;
启动 DMRMAN 命令行工具;
DMRMAN 中输入以下命令:
RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/arch_all_bak_01';
命令中的 ALL 参数表示执行的备份为备份所有的归档,也可以不指定该参数,DMRMAN 默认执行的备份类型为 ALL 类型归档备份。
创建设置条件的归档备份
设置条件的归档备份指通过设置 LSN 或者时间点,控制需要备份归档的范围。脱机设置条件归档备份的示例如下:
配置归档;
保证数据库处于脱机状态;
启动 DMRMAN 命令行工具;
DMRMAN 中输入以下命令:
RMAN>BACKUP ARCHIVE LOG LSN BETWEEN 50000 AND 120000 DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/arch_lsn_bak_02';
命令中的 LSN BETWEEN start AND end 表示备份 LSN 值在 start 与 end 之间的归档,也可以设置 FROM LSN(TIME)或 UNTIL LSN(TIME)。
3.3.3.3 数据备份高级主题
本节介绍使用 DMRMAN 工具执行高级的数据库脱机备份过程,主要内容包括:
加密备份
设置跟踪日志文件
加密备份
DMRMAN 同 DIsql 工具一样可使用加密的方式备份数据库,没有权限的用户无法访问加密的备份集。
DMRMAN 备份命令中通过指定 IDENTIFIED BY ... WITH ENCRYPTION ... ENCRYPT WITH ... 命令执行加密备份。其中,加密备份相关参数的含义与联机备份中的含义相同,具体请参考[3.2.3 数据备份高级主题](#3.2.3 数据备份高级主题)。
加密备份过程中参数 IDENTIFIED BY 必须指定,参数 WITH ENCRYPTION 和参数 ENCRYPT WITH 可不指定。加密备份时若不指定 WITH ENCRYPTION 参数,则该参数默认为 1,若不指定 ENCRYPT WITH 参数,则该参数默认值为 AES256_CFB。
例如,以下两种加密备份命令都是合法的:
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET
'/home/dm_bak/db_bak_for_encrypt_01' IDENTIFIED BY "Cdb546789";
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET
'/home/dm_bak/db_bak_for_encrypt_02' IDENTIFIED BY "Cdb546789" ENCRYPT WITH RC4;
若指定了加密密码,但加密类型 WITH ENCRYPTION 参数指定为 0,则为非加密备份,如下所示:
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET
'/home/dm_bak/db_bak_for_encrypt_03' IDENTIFIED BY "Cdb546789" WITH ENCRYPTION 0;
下面以数据库完全备份为例,创建加密密码为“Cdb546789”,加密算法为“rc4”的复杂加密类型的数据库加密备份,完整步骤如下:
保证数据库处于关闭状态;
备份数据库。启动 DMRMAN 工具并输入以下命令:
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET
'/home/dm_bak/db_bak_for_encrypt_04' IDENTIFIED BY "Cdb546789" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
对于增量备份加密,如果基备份存在加密,则增量备份使用的加密密码、加密类型和加密算法必须与基备份保持一致;对于基备份未进行加密处理的情况,增量备份也不能指定加密类型。
设置跟踪日志文件
DMRMAN 备份时可选择生成跟踪日志文件,跟踪日志记录了 SBT 接口的调用过程,用户通过查看日志可跟踪备份还原过程。
与生成跟踪日志文件相关的参数有两个,TRACE FILE 和 TRACE LEVEL。TRACE FILE 用于指定生成的跟踪日志文件路径。与 DIsql 工具不同的是,DMRMAN 不可在备份时指定参数生成跟踪文件,只能使用 CONFIGURE 命令进行事先配置。
使用 CONFIGURE DEFAULT TRACE FILE ... TRACE LEVEL ... 命令启用 TRACE 功能并设置 TRACE 文件路径,以下命令生成 TRACE 文件到/home/dm_trace 目录:
RMAN>CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log' TRACE LEVEL 2;
指定参数 TRACE FILE 但 TRACE LEVEL 值设置为 1 即不启用 TRACE 功能,如下所示:
RMAN>CONFIGURE DEFAULT TRACE FILE'/home/dm_log/db_trace.log' TRACE LEVEL 1;
TRACE LEVEL 值设置为 2 即启用 TRACE 功能,但若 TRACE FILE 没有指定,则系统默认在执行码路径的 log 目录下生成 DM_SBTTRACE_年月日_时_分_秒.log 文件。如下所示:
RMAN> CONFIGURE DEFAULT TRACE LEVEL 2;
若 TRACE FILE 使用相对路径,日志文件则生成在执行码同级的 log 目录下。
为数据库脱机备份设置跟踪日志文件的操作步骤如下:
保证数据库处于关闭状态;
使用 CONFIGURE 命令配置生成跟踪日志文件:
RMAN>CONFIGURE DEFAULT TRACE FILE '/home/dm_trace/trace.log' TRACE LEVEL 2;
备份数据库。启动 DMRMAN 工具输入以下命令:
RMAN>BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' BACKUPSET '/home/dm_bak/db_bak_for_trace_01' ;
查看/home/dm_trace/trace.log 文件即可跟踪本次备份的 SBT 接口调用过程。
如果指定的 TRACE 文件已存在,不会覆盖已存在的文件而是在已有文件基础上继续记录日志。TRACE FILE 不可以为 ASM 文件。如果没有指定的 TRACE FILE 路径的读写权限,则跳过 TRACE FILE 的创建,不影响备份的进行。
3.3.4 管理备份
本章节主要介绍如何使用 DMRMAN 工具管理数据库备份、表空间备份及表备份。本节内容主要包括:
概述
备份集查看
备份集校验
备份集删除
备份集导出
备份集映射文件导出
数据页和数据包导出
3.3.4.1 概述
管理备份一个重要的目的是删除不再需要的备份。DMRMAN 工具提供 SHOW、CHECK、REMOVE、LOAD 等命令分别用来查看、校验、删除和导出备份集。下文将对这些命令进行详细介绍。若命令中指定了 dm.ini,则要求 dm.ini 配置正确。
3.3.4.2 备份集查看
3.3.4.2.1 概述
DMRMAN 中使用 SHOW 命令可以查看备份集的信息,若指定具体备份集目录,则会生成相应的备份集链表信息。
语法如下:
SHOW BACKUPSET '<备份集目录>' [
SHOW BACKUPSETS [
[
WITH BACKUPDIR '<备份集搜索目录>'{,'<备份集搜索目录>'} |
DATABASE '
BACKUPSET:查看单个备份集信息,若该备份集为增量备份且同时指定 RECURSIVE,则显示以该备份集为最新备份集递归显示完整的备份集链表;否则,仅显示指定备份集本身信息。
BACKUPSETS: 批量查看备份集信息。
DEVICE TYPE:指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK,详见 1.4 介质管理层。
PARMS:只对介质类型为 TAPE 时有效,详见 1.4 介质管理层。
DATABASE:指定数据库 dm.ini 文件路径,若指定,则该数据库的默认备份目录将作为备份集搜索目录之一。
WITH BACKUPDIR:备份集搜索目录,最大长度为 256 个字节。WITH BACKUPDIR 在 SHOW BACKUPSET 和 SHOW BACKUPSETS 中用法有区别。具体如下:在 SHOW BACKUPSET 语句中,WITH BACKUPDIR 用于为基备份指定备份集搜索目录,即当 BACKUPSET 指定的备份为增量备份时,WITH BACKUPDIR 用于搜索该增量备份的基备份集。在 SHOW BACKUPSETS 语句中,WITH BACKUPDIR 用于为基备份和增量备份指定备份集搜索目录,即批量查看该目录下符合条件的所有备份集信息。
DB:显示备份集的数据库信息;
META:显示备份集的元信息;
FILE:显示备份集中文件信息,如备份数据文件 DBF 和备份片文件;
TABLESPACE:显示备份集中表空间信息,对库备份集和表空间备份集有效;
TABLE:显示备份集中表信息,仅对表备份集有效。
图例:
或
3.3.4.2.2 备份集信息介绍
备份集信息主要包括:
备份集的数据库信息
备份集的元信息
备份集的文件信息
备份集的表信息(仅对表备份集有效)
备份集的表空间信息
备份集的数据库信息
备份集的数据库信息以“
表3.4 备份集的数据库信息
属性
含义
system path
系统路径
pmnt_magic
数据库永久魔数
src_db_magic
主库魔数
db_magic
数据库魔数
dsc node
DSC 节点数
sys mode
系统模式
page check
页检查模式
rlog encrypt
REDO 日志是否加密
rlog encrypt id
日志加密算法 ID
external cipher[id/name]
外部加密算法 ID 或名称
external hash[id/name]
外部 HASH 算法 ID 或名称
length in char
VARCHAR 类型长度是否以字符为单位
use new hash
是否使用改进的字符类型 HASH 算法
page size
页大小
extent size
簇大小
case sensitive
是否大小写敏感
log page size
日志文件页大小
charset
字符集
data version
库数据版本
sys version
执行码版本
version
编码后版本信息
pseg version
数据文件对应 PSEG_VERSION 信息
enable policy
是否允许策略
archive flag
是否启用归档
blank_pad_mode
是否设置空格填充模式
crc_check
联机日志是否支持 CRC 校验
page_enc_slice_size
页加密分片大小
char_fix_storage
CHAR 是否按定长存储
sql_log_forbid
是否禁止打开 SQL 日志
secur_flag
是否为安全版
db_enc_extend_size
加密算法扩展长度
page_check_hash_size
哈希页校验值的大小
dpc_magic
DMDPC 集群魔数,用于唯一标识一个 DMDPC 集群,同一个 DMDPC 集群内的 MP 和 BP 节点拥有相同的 DPC_MAGIC 值。仅在 DMDPC 环境下有效
bak_safe_check
备份的安全检查策略。详见《DM8 系统管理员手册》
page_chksum_policy
是否使用新的页校验策略
lockid_mode
是否使用新的封锁表 id 长度
备份集的元信息
备份集的元信息以“”开头,记录了备份集的相关属性信息,如下所示:
表3.5 备份集的元信息
属性
含义
backupset sig
备份集标识
backupset version
备份集版本号
database name
源数据库名
backup name
备份集名
backupset description
备份集描述
bakset_magic
备份集魔数
parent_bakset_magic
主备份集魔数
bakset_seqno
子备份集序号
meta file size
META 文件大小
compressed level
压缩级别
encrypt type
加密类型
encrypt name
加密算法名称(仅在备份加密时显示)
parallel num
并行度
backup range
备份范围
mpp_timestamp
MPP 备份时间戳
with_huge
是否备份 HUGE 表数据
backupset_type
备份集类型
mpp_flag
是否为 MPP 库备份集
backup tsid
备份的表空间 ID
backup ts name
备份的表空间名称
arch start lsn
归档备份的 begin_lsn
arch end lsn
归档备份的 end_lsn
backup schema name
表备份的模式名
backup table name
表备份的表名
bakcup table type
备份表类型
backup level
备份级别:联机或者脱机
backup type
备份类型:完全备份或者增量备份
cumulative
是否为累积增量备份(增量备份时显示)
without log
是否备份 REDO 日志
without mirror
是否备份镜像文件
use_bct
是否使用 BCT 特性
end_lsn
备份结束时最大已刷盘日志 LSN
max_trxid
最大事务 ID
base begin_lsn
基备份集 begin_lsn
base end_lsn
基备份集 end_lsn
base_bakset_magic
基备份集魔数
from lsn
INCREMENT FROM LSN 语法指定的 LSN 值
base name
基备份名
base backupset
基备份集路径
backup time
备份开始时间
min exec ver
允许访问备份集的最小执行码版本号,已废弃
min dct ver
允许访问备份集的最小字典版本号,已废弃
pkg size
备份包大小
bak_magic
DPC 备份集魔数,用于唯一标识 DMDPC 集群内同一批次的 MP 和 BP 的备份集。仅在 DMDPC 环境下有效
l_term_id
主库的任期号,仅在 DM AFC 集群和 DMDPC 的多副本系统中有效
term_id
日志推进到的任期号,仅在 DM AFC 集群和 DMDPC 的多副本系统中有效
c_seqno
主库提交到的日志包序号,仅在 DM AFC 集群和 DMDPC 的多副本系统中有效
c_lsn
主库提交到的日志包最大 LSN 值,仅在 DM AFC 集群和 DMDPC 的多副本系统中有效
h_seqno
备库上存放的主库当前已推进到的日志包序号(信息从主库的心跳消息中取出)
h_lsn
备库上存放的主库当前已推进到的 LSN(信息从主库的心跳消息中取出)
另外,备份集的元信息中还包含了各节点的 LSN 信息,以“
表3.6 节点LSN信息
属性
含义
EP[n]
节点号
begin_pkg_seq
begin_lsn 对应的包序号
begin_lsn
备份开始时检查点 LSN
end_pkg_seq
end_lsn 对应包序号
end_lsn
备份结束时最大已刷盘日志 LSN
备份集的文件信息
备份集的文件信息以“
表3.7 备份集文件的统计信息
属性
含义
backupset directory
备份集路径
backupset piece
备份片个数
data file
数据文件个数
huge file
HUGE 数据文件个数
image copy file
镜像备份文件个数
另外,备份集的文件信息主要还包括:
备份集所属的备份片信息
备份集中包含的数据文件信息
备份集中包含的归档文件信息
备份集中包含的 HUGE 数据文件信息
备份集所属的备份片信息以“
表3.8 备份片信息
属性
含义
file_seq
备份片序号
size
备份片体积
pos_desc
路径描述
content_type
存储的数据类型
备份集中包含的数据文件信息以“
表3.9 数据文件信息
属性
含义
file_seq
文件序号
group_id
表空间 ID
group_name
表空间名
file_id
文件 ID
file_path
文件路径
mirror_path
镜像文件路径
file_len
文件长度
copy_num
兼容 DMTDD,保留属性
size_flag
兼容 DMTDD,保留属性
asm_mirror
DMDSC DMASM 镜像环境专用。数据文件副本数。取值 1、2 或 3。非镜像环境为 1
asm_striping
DMDSC DMASM 镜像环境专用。数据文件条带化粒度。取值 0、32、64、128、256。0 表示粗粒度。非镜像环境为 0
备份集中包含的归档文件信息以“
表3.10 归档文件信息
属性
含义
file_seq
文件序号
dsc_seq
所属 DSC 节点号
file_path
文件路径
file_len
文件长度
begin_seqno
起始包序号
begin_lsn
起始日志 LSN
end_seqno
结束日志包序号
end_lsn
结束日志 LSN
备份集中包含的 HUGE 数据文件信息以“
表3.11 HUGE数据文件信息
属性
含义
file_seq
文件序号
group_id
表空间 ID
schema_id
模式 ID
table_id
表 ID
column_id
列 ID
file_id
文件 ID
file_len
文件长度
file_path
文件路径
备份集中包含的镜像备份文件信息以“
表3.12 镜像备份文件信息
属性
含义
file_seq
文件序号
file_type
文件类型。0:数据文件;1:联机日志文件;2:HUGE 文件;3:配置文件;4:控制文件;5:秘钥文件;6:数据文件镜像
file_len
文件长度
src_file_path
源文件路径
dst_file_path
目标文件路径
org_file_path
控制文件中登记的路径
备份集的表空间信息(对表空间备份集和库备份集有效)
备份集的表空间信息以“
表3.13 备份集的表空间信息
属性
含义
ts_id
表空间 id
name
表空间名称
state
表空间状态
cache
表空间 cache
copy_num
兼容 DMTDD,保留属性
size_flag
兼容 DMTDD,保留属性
cipher_name
加密算法名称
opt_node
所属 DSC 节点号
备份集的表信息(仅对表备份集有效)
备份集的表信息以“