dmrman备份还原

脱机还原工具-dmrman

前言

根据达梦官网文档整理

一、概述

DMRMAN 命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。

  • 指定语句
$ DMRMAN
RMAN>BACKUP DATABASE'/dmdata/data/DAMENG/dm.ini';
  • 指定脚本

创建一个名为 cmd_file.txt 的文件,文件中包含“BACKUP DATABASE’/dmdata/data/DAMENG/dm.ini’”命令,保存到/home/dm_cmd 目录下,则该文件的执行方式如下:

$ DMRMAN
RMAN>`/home/dm_cmd/cmd_file.txt

注意文件路径的前面有一个字符**`**

1、参数说明

参数含义备注
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:无辅助进程方式,由 dmserver 进程自身完成备份还原,不依赖 dmap 服务;配置成 2 的情况下,不能执行第三方备份(即指定 DEVICE TYPE 为 TAPE)。
可选参数
AP_PORT使用 DMAP 备份还原时 DMAP 的端口号,dmap 的监听端口,监听方配置此参数,取值范围 1024~65534,默认为 4236,发起连接端的端口在 1024-65535 之间随机分配可选参数
HELP打印帮助信息可选

注意

CTLFILE中存在多条语句或CTLSTMT中一次输入多条语句时,每条语句都必须以分号结尾;执行单条语句,语句结尾可以加分号也可以不加。

CTLSTMT中,待执行语句外层双引号一定要加。执行完毕后工具自动退出。CTLFILE和CTLSTMT不能同时指定。若使用DMASM文件系统,可通过DCR_INI指定目标联机的ASM服务器。

2、DMRMAN环境变量配置

使用 CONFIGURE 命令进行 DMRMAN 的默认参数配置

  • 显示和清除现有参数的默认配置
  • 配置默认的存储介质类型(DISK 或 TAPE)
  • 跟踪日志文件
  • 备份集搜索目录
  • 归档日志搜索目录
2.1 语法
CONFIGURE | 
CONFIGURE CLEAR | 
CONFIGURE DEFAULT <sub_conf_stmt> 
<sub_conf_stmt>::= 
DEVICE [[TYPE <介质类型> [PARMS '<介质参数>']]|CLEAR] | 
TRACE [[FILE '<跟踪日志文件路径>'][TRACE LEVEL <跟踪日志等级>]|CLEAR] | 
BACKUPDIR [[ADD|DELETE] '<基备份搜索目录>'{,'<基备份搜索目录>' }|CLEAR] | 
ARCHIVEDIR [[ADD|DELETE] '<归档日志目录>'{,'<归档日志目录>'}|CLEAR] |
OPEN FILES [<文件句柄个数> | [CLEAR]]
参数说明
CONFIGURE查看设置的默认值。
CLEAR清理参数的默认值。
DEVICE TYPE备份集存储的介质类型,DISK 或者 TAPE,默认 DISK
PARMS介质参数,供第三方存储介质(TAPE 类型)管理使用
TRACE介质存储过程中使用的跟踪日志配置,包括文件路径(TRACE FILE)和日志级别(TRACE LEVEL),其中日志级别有效值 1、2,默认为 1 表示不启用 TRACE,此时若指定了 TRACE FILE,会生成 TRACE 文件,但不写入 TRACE 信息;为 2 启用 TRACE 并在 TRACE 文件中写入 TRACE 相关内容。若用户指定,则指定的文件不能为已经存在的文件,否则报错;也不可以为 ASM 文件。
BACKUPDIR指定默认搜集备份的目录。
ADD:添加默认备份集搜索目录,若已经存在,则替换原来的。
DELETE:删除指定默认备份集搜索目录。
缺省为 ADD,缺省的情况下,使用新加入的目录替换掉所有已有的目录
ARCHIVEDIR默认搜集归档的目录。
ADD: 添加归档日志目录,若已经存在,则替换原来的。
DELETE:删除指定归档日志目录。
缺省为 ADD,缺省的情况下,使用新加入的目录替换掉所有已有的目录
ADD添加默认备份集搜索目录或归档日志目录,若已经存在,则替换原来的。
DELETE删除指定默认备份集搜索目录或者归档日志目录。
OPEN FILES库级还原时最大可打开的文件句柄上限,只对 HUGE 文件生效,还原过程中打开 HUGE 文件句柄超出该限制后将主动关闭 HUGE 文件。

在这里插入图片描述

  • sub_conf_stmt:

在这里插入图片描述

注意:

  1. 设置的参数默认值仅在此 DMRMAN 实例存活期间有效。
  2. DMRMAN 命令中如果指定了相同的参数,会覆盖 CONFIGURE 的默认设置。
2.2 示例
2.2.1 显示所有配置项当前值
RMAN> configure;
THE DMRMAN DEFAULT SETTING:DEFAULT DEVICE:MEDIA : DISK
DEFAULT TRACE :FILE  : ../log/dm_SBTTRACE_202402.logLEVEL : 1
DEFAULT BACKUP DIRECTORY:TOTAL COUNT  :0DEFAULT ARCHIVE DIRECTORY:TOTAL COUNT  :0DEFAULT OPEN FILES:OPEN FILES   : 65535
2.2.2 恢复所有配置项到默认值
RMAN> configure clear;
configure default device clear successfully!
configure default trace clear successfully!
configure default backupdir clear successfully!
configure default archivedir clear successfully!
configure default open files clear successfully!
2.2.3 恢复任意一个配置项到默认值
RMAN> configure default open files clear;
configure default open files clear successfully!
2.2.4 显示任意一个配置项的值
RMAN> configure default device;
THE DMRMAN DEFAULT DEVICE SETTING:DEFAULT DEVICE:MEDIA : DISK
2.2.5 配置存储介质
RMAN> configure default device type disk;
configure default device successfully!
2.2.6 配置跟踪文件
  • 显示TRACE文件的默认配置
RMAN> configure default trace;
THE DMRMAN DEFAULT TRACE SETTING:DEFAULT TRACE :FILE  :LEVEL : 1
  • 配置默认 TRACE 文件
RMAN> configure default trace file '/dmdata/trace.log';
configure default trace successfully!
  • 配置默认TRACE级别
RMAN>CONFIGURE DEFAULT TRACE LEVEL 2;

其中,TRACE 文件和 TRACE 级别也可以同时设置

RMAN> configure default trace file '/dmdata/trace.log' trace level 2;
2.2.7 配置备份集搜索目录

备份集搜索目录用于增量备份还原中搜索基备份。单个目录最大长度为 256 个字节,可配置的备份集搜索目录没有限制。如果不指定备份集搜索目录只会在库的默认备份目录和当前备份执行备份集目录的上级目录下搜索备份集。

  • 显示备份集搜索目录
RMAN> configure default backupdir;
THE DMRMAN DEFAULT BACKUP DIRECTORY SETTING:DEFAULT BACKUP DIRECTORY:TOTAL COUNT  :0
  • 设置备份集搜索目录
RMAN> configure default backupdir '/dmdata/1','/dmdata/2';
configure default backupdir update successfully!
DEFAULT BACKUP DIRECTORY:TOTAL COUNT  :2/dmdata/1/dmdata/2

backupdir的路径必须存在,否则会报错。

  • 增加备份集搜索目录
RMAN> configure default backupdir add '/dmdata/3';
configure default backupdir add successfully!
DEFAULT BACKUP DIRECTORY:TOTAL COUNT  :3/dmdata/1/dmdata/2/dmdata/3
  • 删除备份集搜索目录
RMAN> configure default backupdir delete '/dmdata/1';
configure default backupdir delete successfully!
DEFAULT BACKUP DIRECTORY:TOTAL COUNT  :2/dmdata/2/dmdata/3

2.2.8 配置归档日志搜索目录

归档日志搜索目录用于增量备份还原中搜索归档日志。单个目录最大长度为 256 个字节,可配置的归档日志搜索目录没有限制。

  • 显示归档日志搜索目录
RMAN> configure default archivedir;
THE DMRMAN DEFAULT ARCHIVE DIRECTORY SETTING:DEFAULT ARCHIVE DIRECTORY:TOTAL COUNT  :0
  • 设置归档日志搜索目录
RMAN> configure default archivedir '/dmdata/1','/dmdata/2';
configure default archivedir update successfully!
DEFAULT ARCHIVE DIRECTORY:TOTAL COUNT  :2/dmdata/1/dmdata/2

backupdir的路径必须存在,否则会报错。

  • 增加归档日志搜索目录
RMAN> configure default archivedir add '/dmdata/3';
configure default archivedir add successfully!
DEFAULT ARCHIVE DIRECTORY:TOTAL COUNT  :3/dmdata/1/dmdata/2/dmdata/3
  • 删除归档日志搜索目录
RMAN> configure default archivedir delete '/dmdata/1';
configure default archivedir delete successfully!
DEFAULT ARCHIVE DIRECTORY:TOTAL COUNT  :2/dmdata/2/dmdata/3

二、数据备份

1、数据库备份

在 DMRMAN 工具中使用 BACKUP 命令可以备份整个数据库。使用 DMRMAN 脱机备份数据库需要关闭数据库实例。若是正常退出的数据库,则脱机备份前不需要配置归档;若是故障退出的数据库,则备份前,需先进行归档修复。在 DMRMAN 中输入以下命令即可备份数据库:

RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini';

命令执行完后会在默认的备份路径下生成备份集目录。默认的备份路径为 dm.ini 中 BAK_PATH 配置的路径,若未配置 BAK_PATH,则默认使用 SYSTEM_PATH 下的 bak 目录。这是最简单的脱机数据库备份语句,如果要设置其他备份选项请参考下文的语法及使用说明。

1.1 语法
BACKUP DATABASE '<INI文件路径>' [<备份类型>][<指定备份集子句>][TO <备份名>] [BACKUPSET '<备份集路径>']
[DEVICE TYPE <介质类型>[PARMS '<介质参数>'] 
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] 
[LIMIT <read_limit>|<write_limit>] 
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]][WITHOUT LOG][WITHOUT MIRROR]
[TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]]
[USE BAK_MAGIC <备份集魔数>];
<备份类型><read_limit><write_limit>::
参数说明
备份类型1️⃣FULL:完全备份,完全备份生成的备份集包含了指定库(或者表空间)的全部有效数据页。
2️⃣DDL_CLONE:数据库克隆,该参数只能用于完全备份中,对于数据库中的表来说,只备份表的定义不备份表中数据。表空间和表备份不支持该参数,数据库克隆必须备份日志
3️⃣SHADOW:影子备份,该参数只能用于完全备份中,表示生成影子备份集,只备份源库的 SYSTEM.DBF 及日志相关信息表空间和表备份不支持该参数,影子备份必须备份日志
4️⃣INCREMENT:增量备份
TO指定生成备份名称(管理工具中可以查看)。若未指定,系统随机生成,默认备份名格式为:DB备份类型备份时间。
BACKUPSET指定当前备份集目录。若指定为相对路径,例如 BACKUPSET ‘db_bak_01’,则在默认备份目录中生成备份集。若不指定(命令不写),则在默认备份目录中按约定规则,生成默认备份集目录。 SQL> backup database full;
DEVICE TYPE指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK
PARMS只对介质类型为 TAPE 时有效
BACKUPINFO备份的描述信息。
MAXPIECESIZE最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB,缺省为最大取值
LIMIT指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY指定备份时的加密密码
WITH ENCRYPTION指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理; 1默认值,表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储; 2:表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。 当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
COMPRESSED是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0(默认值) 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。 若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1; 若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG联机数据库备份是否备份联机日志。如果使用,则表示不备份,否则表示备份。
WITHOUT MIRROR联机数据库备份是否备份镜像文件。如果使用,则表示不备份,否则表示备份。
TASK THREAD备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL指定**并行备份的并行数和拆分块大小**。并行数取值范围 0~128。若不指定并行数,则默认为 4,若指定为 0 或者 1 均认为非并行备份。若未指定关键字 PARALLEL,则认为非并行备份。
USE BAK_MAGIC指定备份集魔数,用于唯一标识 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 表示无限制。
1.2 完全备份

完全备份数据库步骤如下:

  1. 保证数据库处于脱机状态;
  2. 启动 DMRMAN 命令行工具;
  3. DMRMAN 中输入以下命令:
RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' FULL BACKUPSET '/dmdata/dmbak/db_full_bak_01';

备份语句中的参数 FULL 可以省略,不指定备份类型会默认指定备份类型为完全备份。

1.3 增量备份

增量备份指基于指定的库的某个备份(完全备份或者增量备份),备份自该备份以来所有发生修改了的数据页。脱机增量备份要求两次备份之间数据库必须有操作,否则备份会报错

RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR
'/dmdata/dmbak'BACKUPSET '/dmdata/dmbak/db_increment_bak_02';

命令中的 INCREMENT 参数表示执行的备份为增量备份,增量备份时该参数不可省略。如果增量备份的基备份不在默认备份目录中,则必须指定 WITH BACKUPDIR 参数用于搜索基备份集,或者使用 CONFIGURE DEFAULT BACKUPDIR 命令配置默认的基备份集搜索目录

DSC 环境下的脱机库备份与联机库备份存在相同的使用限制。由于脱机备份无法推进检查点,当不满足该约束时,备份将失败。


2、归档备份

在 DMRMAN 工具中使用 BACKUP 命令可以备份库的归档。使用 DMRMAN 备份归档需要设置归档,否则会报错。关闭数据库实例,在 DMRMAN 中输入以下命令即可备份归档:

RMAN>BACKUP ARCHIVE LOG DATABASE '/dmdata/data/DAMENG/dm.ini';

命令执行完后会在默认的备份路径下生成备份集目录,默认的备份路径为 dm.ini 中 BAK_PATH 的配置值,若未配置,则使用 SYSTEM_PATH 下的 bak 目录。这是最简单的脱机归档备份语句,如果要设置其他备份选项请参考下文的语法及使用说明。

2.1 语法
BACKUP <ARCHIVE LOG | ARCHIVELOG> [ALL | [FROM LSN <lsn>]|[UNTIL LSN <lsn>] | [LSN BETWEEN < lsn> AND < lsn>] | [FROM TIME '<time>'] | [UNTIL TIME '<time>'] | [TIME BETWEEN '<time>' AND '<time>']] [<notBackedUpSpec>][<指定备份集子句>][DELETE INPUT]
DATABASE '<INI文件路径>' [TO <备份名>][<备份集子句>];
<备份集子句>::= [BACKUPSET '<备份集路径>'] [DEVICE TYPE <介质类型>[PARMS '<介质参数>'] 
[BACKUPINFO '<备份描述>'] [MAXPIECESIZE <备份片限制大小>] 
[LIMIT <read_limit>|<write_limit>]
[IDENTIFIED BY <密码>|"<密码>" [WITH ENCRYPTION <TYPE>][ENCRYPT WITH <加密算法>]]
[COMPRESSED [LEVEL <压缩级别>]][TASK THREAD <线程数>][PARALLEL [<并行数>][READ SIZE <拆分块大小>]]
<notBackedUpSpec> 请参考3.2.2.4.1概述
<read_limit>::= READ SPEED <读速度上限> [WRITE SPEED <写速度上限>]
<write_limit>::= WRITE SPEED <写速度上限>

参数说明:

参数说明
ALL备份所有的归档。若不指定,则默认为 ALL。
FROM LSN指定备份的起始 lsn。
UNTIL LSN指定备份的截止 lsn。
FROM TIME指定备份的开始的时间点。
UNTIL TIME指定备份的截止的时间点。
BETWEEN … AND …指定备份的区间。指定区间后,只会备份指定区间内的归档文件。
DELETE INPUT用于指定备份完成之后,是否删除归档操作。
DATABASE必选参数。指定备份源库的 INI 文件路径。
TO指定生成备份名称。若未指定,系统随机生成,默认备份名格式为:ARCH_LOG_备份时间。其中,备份时间为开始备份的系统时间。
BACKUPSET指定当前备份集目录。若指定为相对路径,例如 BACKUPSET ‘db_bak_01’,则在默认备份目录中生成备份集。若不指定(命令不写),则在默认备份目录中按约定规则,生成默认备份集目录。
SQL> backup database full;
DEVICE TYPE指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK
PARMS只对介质类型为 TAPE 时有效
BACKUPINFO备份的描述信息。
MAXPIECESIZE最大备份片文件大小上限,以 MB 为单位,最小 128MB,32 位系统最大 2GB,64 位系统最大 128GB,缺省为最大取值
LIMIT指定备份时最大的读写文件速度,单位为 MB/S,默认为 0,表示无速度限制。
IDENTIFIED BY指定备份时的加密密码
WITH ENCRYPTION指定加密类型,取值范围 0、1、2。0 表示不加密,不对备份文件进行加密处理;
1默认值,表示简单加密,对备份文件设置口令,但文件内容仍以明文方式存储;
2:表示完全数据加密,对备份文件进行完全的加密,备份文件以密文方式存储。
当不指定 WITH ENCRYPTION 子句时,采用简单加密。
ENCRYPT WITH指定加密算法。当不指定 ENCRYPT WITH 子句时,使用 AES256_CFB 加密算法。
COMPRESSED是否对备份数据进行压缩处理。LEVEL 表示压缩等级,取值范围 0~9:0(默认值) 表示不压缩;1 表示 1 级压缩;9 表示 9 级压缩。压缩级别越高,压缩速度越慢,但压缩比越高。
若指定 COMPRESSED,但未指定 LEVEL,则压缩等级默认 1;
若未指定 COMPRESSED,则默认不进行压缩处理。
WITHOUT LOG联机数据库备份是否备份联机日志。如果使用,则表示不备份,否则表示备份。
TASK THREAD备份过程中数据处理过程线程的个数,取值范围 0~64,默认为 4。若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。线程数(TASK THREAD)*并行数(PARALLEL)不得超过 512。
PARALLEL指定**并行备份的并行数和拆分块大小**。并行数取值范围 0~128。若不指定并行数,则默认为 4,若指定为 0 或者 1 均认为非并行备份。若未指定关键字 PARALLEL,则认为非并行备份。
READ SPEED备份时读速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
WRITE SPEED备份时写速度上限,取值范围 0~2147483647,单位为 MB/S,0 表示无限制。
2.2 备份步骤
  1. 配置归档;
  2. 保证数据库处于脱机状态;
  3. 启动 DMRMAN 命令行工具;
2.3 创建普通归档备份
RMAN>BACKUP ARCHIVE LOG ALL DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET '/dmdata/dmbak/arch_all_bak_01';

命令中的 ALL 参数表示执行的备份为备份所有的归档,也可以不指定该参数,DMRMAN 默认执行的备份类型为 ALL 类型归档备份。

2.4 创建设置条件的归档备份

设置条件的归档备份指**通过设置 LSN 或者时间点,控制需要备份归档的范围**。脱机设置条件归档备份的示例如下:

RMAN>BACKUP ARCHIVE LOG LSN BETWEEN 50000 AND 120000 DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET '/dmdata/dmbak/arch_lsn_bak_02';

命令中的 LSN BETEEWN start AND end 表示备份 LSN 值在 start 与 end 之间的归档,也可以设置 FROM LSN(TIME)或 UNTIL LSN(TIME)。


三、高级数据备份

1、加密备份

DMRMAN 同 disql工具一样可使用加密的方式备份数据库,没有权限的用户无法访问加密的备份集。

DMRMAN 备份命令中通过指定 IDENTIFIED BY … WITH ENCRYPTION … ENCRYPT WITH … 命令执行加密备份。其中,加密备份相关参数的含义与联机备份中的含义相同。

加密备份过程中参数 IDENTIFIED BY 必须指定,参数 WITH ENCRYPTION 和参数 ENCRYPT WITH 可不指定。加密备份时若不指定 WITH ENCRYPTION 参数,则该参数默认为 1,若不指定 ENCRYPT WITH 参数,则该参数默认值为 AES256_CFB。

  • 简单加密(WITH ENCRYPTION 1)
RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET
'/dmdata/dmbak/db_bak_for_encrypt_01' IDENTIFIED BY "cdb546789";RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET
'/dmdata/dmbak/db_bak_for_encrypt_02' IDENTIFIED BY "cdb546789" ENCRYPT WITH RC4;
  • 复杂加密(WITH ENCRYPTION 2)
RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET
'/dmdata/dmbak/db_bak_for_encrypt_01' IDENTIFIED BY "cdb546789" WITH ENCRYPTION 2;RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET
'/dmdata/dmbak/db_bak_for_encrypt_02' IDENTIFIED BY "cdb546789" WITH ENCRYPTION 2 ENCRYPT WITH RC4;
  • 若指定了加密密码,但加密类型 WITH ENCRYPTION 指定为 0,则为非加密备份
RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini' BACKUPSET
'/dmdata/dmbak/db_bak_for_encrypt_03' IDENTIFIED BY "cdb546789" WITH ENCRYPTION 0;

注意:

  • 对于增量备份加密,如果基备份存在加密,则增量备份使用的加密密码、加密类型和加密算法必须与基备份保持一致;
  • 如果基备份未进行加密处理,则对增量备份使用的加密密码、加密类型和加密算法没有特殊要求。

2、设置跟踪日志文件

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;
2.1 指定TRACE FILE
  • TRACE LEVEL = 1(默认值)
RMAN>CONFIGURE DEFAULT TRACE FILE'1.log' TRACE LEVEL 1;
-- 1.log日志内容为空,保存在$DM_HOME/bin/1.log
RMAN>BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini';

指定参数 TRACE FILE 但 TRACE LEVEL 值设置为 1 即不启用 TRACE 功能,则会生成 TRACE 文件,但不会写入 TRACE 信息。

  • TRACE LEVEL = 2
RMAN> CONFIGURE DEFAULT TRACE FILE '2.log' TRACE LEVEL 2;
-- 2.log日志内容不为空,保存在$DM_HOME/bin/2.log
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini';

注意:

  • 若 TRACE FILE 使用相对路径,日志文件生成在执行码同级目录下**$DM_HOME/bin**。
  • 若 TRACE FILE 使用绝对路径,日志文件生成在指定的绝对路径。
  • 如果指定的 TRACE 文件已存在,则报错
2.2 不指定TRACE FILE
  • TRACE LEVEL = 2
RMAN> CONFIGURE DEFAULT TRACE LEVEL 2;
-- 在$DM_HOME/log路径下生成.log文件
RMAN> BACKUP DATABASE '/dmdata/data/DAMENG/dm.ini';  

TRACE LEVEL 值设置为 2 即启用 TRACE 功能,但若 TRACE FILE 没有指定,则系统默认在执行码路径的 log 目录$DM_HOME/log生成 DM_SBTTRACE_年月.log 文件


四、管理备份

管理备份一个重要的目的是删除不再需要的备份。DMRMAN 工具提供 SHOW、CHECK、REMOVE、LOAD 等命令分别用来查看、校验、删除和导出备份集。

1、备份集查看

DMRMAN 中使用 SHOW 命令可以查看备份集的信息,若指定具体备份集目录,则会生成相应的备份集链表信息。

1.1 语法
-- 两种语法
SHOW BACKUPSET '<备份集目录>' [<device_type_stmt>][RECURSIVE] [<database_bakdir_lst_stmt>] [<info_type_stmt>] [<to_file_stmt>]; |SHOW BACKUPSETS [<device_type_stmt>] <database_bakdir_lst_stmt> [<info_type_stmt>] [<use_db_magic_stmt>] [<to_file_stmt>]; 
<device_type_stmt>::= DEVICE TYPE <介质类型> [PARMS '<介质参数>'] <database_bakdir_lst_stmt>::= DATABASE '<INI_PATH>' | WITH BACKUPDIR '<备份集搜索目录>'{,'<备份集搜索目录>'} | DATABASE '<INI_PATH>' WITH BACKUPDIR '<备份集搜索目录>'{, '<备份集搜索目录>'} <info_type_stmt>::= INFO <信息类型> <use_db_magic_stmt>::= USE DB_MAGIC <db_magic> <to_file_stmt>::= TO '<输出文件路径>' [FORMAT TXT | XML] 
参数说明
BACKUPSET查看单个备份集信息,若该备份集为增量备份且同时指定 RECURSIVE,则显示以该备份集为最新备份集递归显示完整的备份集链表;否则,仅显示指定备份集本身信息。
BACKUPSETS批量查看备份集信息。
DEVICE TYPE指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK。
PARMS只对介质类型为 TAPE 时有效
DATABASE指定数据库 dm.ini 文件路径,若指定,则该数据库的默认备份目录将作为备份集搜索目录之一。
WITH BACKUPDIR备份集搜索目录,最大长度为 256 个字节。WITH BACKUPDIR 在 SHOW BACKUPSET 和 SHOW BACKUPSETS 中用法有区别。具体如下:
1️⃣在 SHOW BACKUPSET 语句中,WITH BACKUPDIR 用于为基备份指定备份集搜索目录,即当 BACKUPSET 指定的备份为增量备份时,WITH BACKUPDIR 用于搜索该增量备份的基备份集。
2️⃣在 SHOW BACKUPSETS 语句中,WITH BACKUPDIR 用于为基备份和增量备份指定备份集搜索目录,即批量查看该目录下符合条件的所有备份集信息。
info_type_stmt定显示备份集信息内容,可以组合指定,不同信息类型之间用逗号间隔,若未指定该项,则显示全部。信息类型包括:
DB:显示备份集的数据库信息;
META:显示备份集的元信息;
FILE:显示备份集中文件信息,如备份数据文件 DBF 和备份片文件;
TABLESPACE:显示备份集中表空间信息,对库备份集和表空间备份集有效;
TABLE:显示备份集中表信息,仅对表备份集有效。
use_db_magic_stmtSHOW BACKUPSETS 可以指定仅显示指定 DB_MAGIC 即指定数据库的备份集信息。
to_file_stmt指定备份集信息输出的目标文件路径,若不指定,仅控制台打印。
1.2 备份集信息查看
1.2.1 查看单个备份集信息
RMAN> backup database '/dmdata/data/DAMENG/dm.ini';
……
Processing backupset /dmdata/dmbak/DB_DAMENG_FULL_20240222_211554_932211
# 显示信息很多,用户可根据自身需要只显示部分备份集信息。
RMAN> show backupset 'DB_DAMENG_FULL_20240222_211554_932211';
<DB INFO>
……
<META INFO>
……
<EP INFO>
……
<FILE INFO>
……
<TABLESPACE INFO>
1.2.2 批量显示备份集信息

SHOW BACKUPSETS…命令用于批量显示指定搜索目录下的备份集信息。如需要查看的多个备份集不在同一个目录下,可通过 WITH BACKUPDIR 参数指定多个备份集搜索目录,同时查看所有的备份集。

RMAN> backup database '/dmdata/data/DAMENG/dm.ini' backupset '/dmdata/dmbak2/full';RMAN> show backupsets with backupdir '/dmdata/dmbak','/dmdata/dmbak2';
1.2.3 查看指定数据库的备份集

如果指定的备份搜索目录下包含不同数据库的备份集,而我们只想查看某个特定数据库的所有备份集信息,此时可以使用 SHOW BACKUPSETS ... USE DB_MAGIC ... 命令实现。

  • 备份不同数据库实例到同一个目录/dmdata/dmbak
RMAN> backup database '/dmdata/data/DAMENG/dm.ini' backupset 'db1';
RMAN> backup database '/dmdata/data/db2/dm.ini' backupset 'db2';
  • 查看指定数据库备份集信息,获取DB_MAGIC信息
RMAN> show backupset 'db1' info DB;
<DB INFO>
system path:           /dmdata/data/DAMENG
pmnt_magic:            1121452896
src_db_magic:          883368136
db_magic:              883368136
dsc node:              1
……
  • 查看指定目录下,查看指定目录下数据库/dmdata/data/DAMENG/dm.ini 的所有备份集信息
RMAN> show backupsets with backupdir '/dmdata/dmbak' info db use db_magic 883368136;
1.2.4 指定显示备份集信息

SHOW BACKUPSET ... INFO ... 命令可以显示部分备份集信息,例如 SHOW BACKUPSET…INFO META 命令可以查看备份集的元数据信息。

RMAN> show backupset 'db1' info db;
RMAN> show backupset 'db1' info meta;
RMAN> show backupset 'db1' info file;
RMAN> show backupset 'db1' info TABLESPACE;
RMAN> show backupset 'db1' info TABLE;
1.2.5 以 xml 格式输出备份信息到文件
RMAN> show backupset 'db1' to '/dmdata/1.txt' format XML;

1.3 备份集校验

DMRMAN 中使用 CHECK 命令对备份集进行校验,校验备份集是否存在及合法。

CHECK BACKUPSET '<备份集目录>'[DEVICE TYPE <介质类型> [PARMS '<介质参数>']][DATABASE '<INI_PATH>'];
image-20240222215414473
  • 检查备份集db1
RMAN> check backupset '/dmdata/dmbak/db1';
RMAN> check backupset '/dmdata/dmbak/db1' database '/dmdata/data/DAMENG/dm.ini';
check backupset '/dmdata/dmbak/db1' database '/dmdata/data/DAMENG/dm.ini';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
check backupset successfully.
1.4 删除备份集

DMRMAN 中使用 REMOVE 命令删除备份集,可删除单个备份集,也可批量删除备份集。单个备份集删除时并行备份中的子备份集不允许单独删除;在指定备份集搜索目录中,发现存在引用待删除备份集作为基备份的需要执行级联删除,默认报错。批量删除备份集时,跳过收集到的单独的子备份集。

1.4.1 语法
REMOVE BACKUPSET '<备份集目录>' [<device_type_stmt>][<database_bakdir_lst_stmt>][CASCADE]; |REMOVE [<备份集类型>] BACKUPSETS [<device_type_stmt>] <database_bakdir_lst_stmt> [[UNTIL TIME '<截止时间串>'] | [BEFORE <n_day>]];<device_type_stmt>::= DEVICE TYPE <介质类型> [PARMS '<介质参数>']<database_bakdir_lst_stmt>::= DATABASE '<INI_PATH>' | WITH BACKUPDIR '<备份集搜索目录>' {, '<备份集搜索目录>' } | DATABASE '<INI_PATH>' WITH BACKUPDIR '<备份集搜索目录>' {, '<备份集搜索目录>' } <备份集类型>::= DATABASE | TABLESPACE[ <ts_name>] | TABLE ["<schema_name>"."<tab_name>"] | ARCHIVELOG| ARCHIVE LOG 
参数说明
BACKUPSET查看单个备份集信息,若该备份集为增量备份且同时指定 RECURSIVE,则显示以该备份集为最新备份集递归显示完整的备份集链表;否则,仅显示指定备份集本身信息。
BACKUPSETS批量查看备份集信息。
DEVICE TYPE指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK。
PARMS只对介质类型为 TAPE 时有效
DATABASE指定数据库 dm.ini 文件路径,若指定,则该数据库的默认备份目录将作为备份集搜索目录之一。
WITH BACKUPDIR备份集搜索目录,最大长度为 256 个字节。WITH BACKUPDIR 在 SHOW BACKUPSET 和 SHOW BACKUPSETS 中用法有区别。具体如下: 1️⃣在 SHOW BACKUPSET 语句中,WITH BACKUPDIR 用于为基备份指定备份集搜索目录,即当 BACKUPSET 指定的备份为增量备份时,WITH BACKUPDIR 用于搜索该增量备份的基备份集。 2️⃣在 SHOW BACKUPSETS 语句中,WITH BACKUPDIR 用于为基备份和增量备份指定备份集搜索目录,即批量查看该目录下符合条件的所有备份集信息。
CASCADE当目标备份集已经被其他增量备份引用为基备份集,默认不允许删除,若指定 CASCADE,则递归删除所有引用的增量备份。
备份集类型DATABASE|TABLESPACE|TABLE|ARCHIVELOG|ARCHIVE LOG:指定待删除备份集的类型,分别为库级备份、表空间级备份、表级备份以及归档级备份,其中 ARCHIVELOG 和 ARCHIVE LOG 等价。若不指定备份集类型,则全部删除。指定 TABLESPACE 时,若指定目标表空间名,则仅会删除满足条件的指定表空间名称的表空间备份集,否则,删除所有满足条件的表空间备份集。指定 TABLE 时,若指定目标表名,则仅会删除满足条件的指定表名的表备份集,否则,删除所有满足条件的表备份集。
UNTIL TIME删除备份集生成的最大时间,即删除指定时间之前的备份集,若未指定,则删除所有备份集。
BEFORE删除距离当前时间前 n_day 天产生的备份集;n_day 取值范围 0~365,单位:天

在这里插入图片描述

<backupset_type>:

在这里插入图片描述

1.4.2 删除特定的备份集

使用 REMOVE BACKUPSET ... 命令可删除特定备份集,每次只能删除一个备份集。若删除备份集已经被引用为其他备份集的基备份且未指定 CASCADE,则报错。

  • 指定路径删除
RMAN> remove backupset '/dmdata/dmbak/db1';
  • 如果备份集在数据库默认备份目录下还可使用以下方式删除备份集
RMAN> remove backupset 'db1' database '/dmdata/data/DAMENG/dm.ini'; #正确删除
RMAN> remove backupset 'db1';  # [-10001]:[错误码:-127]无效的备份集目录[/dmdata/dmbak/db1]

如果待删除备份集为其他增量备份的基备份,且待删除备份集和增量备份都在数据库默认备份目录下还可使用以下方式删除备份集:

RMAN> backup database '/dmdata/data/DAMENG/dm.ini' backupset 'db1';
RMAN> backup database '/dmdata/data/DAMENG/dm.ini' increment backupset 'inc';RMAN> remove backupset 'db1' database '/dmdata/data/DAMENG/dm.ini';
remove backupset 'db1' database '/dmdata/data/DAMENG/dm.ini';
[-8202]:[/dmdata/dmbak/inc]的基备份,不能删除RMAN> remove backupset 'db1' database '/dmdata/data/DAMENG/dm.ini' cascade; #删除db1和inc两个文件夹
1.4.3 批量删除所有备份集

使用 REMOVE ... BACKUPSETS ... 命令可批量删除备份集。批量删除可选择备份集的备份类型,备份类型包括数据库备份、表空间备份、表备份以及归档备份,不指定备份类型则全部删除。

RMAN> remove backupsets with backupdir '/dmdata/dmbak'  #全删
RMAN> REMOVE database backupsets with backupdir '/dmdata/dmbak';  #删数据库备份
RMAN> remove tablespace backupsets with backupdir '/dmdata/dmbak';  #删全部表空间备份
1.4.4 批量删除指定时间之前的备份集

REMOVE ... BACKUPSETS ... UNTIL TIME 命令用来批量删除指定时间之前的备份集。通常情况下,用户并不想删除指定目录下所有的备份集,这时可以选择只删除指定时间之前的备份集。如何确定删除备份的截止时间点,需要结合用户的备份计划合理指定。若用户每周做一次完全备份,每天进行增量备份,那么删除的时间可指定为 7 天前的某个特定时间。假设今天的日期为 2024-2-8,要删除 7 天前/dmdata/dmbak 目录下的所有备份在 DMRMAN 中输入以下命令:

RMAN>REMOVE BACKUPSETS WITH BACKUPDIR '/dmdata/dmbak' UNTIL TIME '2024-2-1 00:00:00';

五、数据还原

1、数据库还原

数据库还原分为两个步骤:

  • 数据库还原
  • 数据库恢复一致性
1.1 数据库还原

使用 RESTORE 命令完成脱机还原操作,在还原语句中指定库级备份集,可以是脱机库级备份集,也可以是联机库级备份集。数据库的还原包括数据库配置文件还原和数据文件还原,目前可能需要还原的数据库配置文件包括 dm.ini、dm.ctl、服务器秘钥文件(dm_service.prikey 或者 dm_external.config,若备份库指定 usbkey 加密,则无秘钥文件)、联机日志文件。

1.1.1 语法
RESTORE DATABASE <restore_type> FROM BACKUPSET '<备份集路径>' 
[<device_type_stmt>] 
[IDENTIFIED BY <密码>|"<密码>" [ENCRYPT WITH <加密算法>]] 
[WITH BACKUPDIR '<基备份搜索目录>'{,'<基备份搜索目录>'}] 
[MAPPED FILE '<映射文件路径>'][TASK THREAD <任务线程数>] 
[RENAME TO '<数据库名>'] [USE BAK_MAGIC <备份集魔数>]; 
<restore_type>::=<type1>|<type2> 
<type1>::='<ini_path>'[TO SHADOW] [WITH CHECK] [REUSE DMINI] [WITHOUT MIRROR][WITHOUT SPACE] [AUTO EXTEND] [OVERWRITE]
<type2>::= TO '<system_dbf_dir>' [TO SHADOW] [WITH CHECK] [OVERWRITE] [WITHOUT MIRROR] 
<device_type_stmt>::= DEVICE TYPE <介质类型> [PARMS '<介质参数>']
参数说明
DATABASE指定数据库 dm.ini 文件路径,若指定,则该数据库的默认备份目录将作为备份集搜索目录之一。
BACKUPSET查看单个备份集信息,若该备份集为增量备份且同时指定 RECURSIVE,则显示以该备份集为最新备份集递归显示完整的备份集链表;否则,仅显示指定备份集本身信息。
DEVICE TYPE指存储备份集的介质类型,支持 DISK 和 TAPE,默认 DISK。
PARMS只对介质类型为 TAPE 时有效
IDENTIFIED BY指定备份时使用的加密密码,供还原过程解密使用。密码可以用双引号括起来,这样可以避免一些特殊字符通不过语法检测。
ENCRYPT WITH指定备份时使用的加密算法,供还原过程解密使用,若未指定,则使用默认算法 AES256_CFB。
WITH BACKUPDIR用于增量备份的还原中,指定基备份的搜索目录。用于增量备份还原中,指定基备份的搜索目录,最大长度为 256 个字节。若缺省,自动在以下路径中搜索:CONFIGURE ADD 语句添加的搜索目录、当前备份集目录的上一级目录(例如:当前增量备份集目录为 BACKUPSET D:\ bakrman\db_bak的路径,则上一级目录为D:\bakrman)搜索基备份。如果基备份不在上述路径下,增量备份必须指定该参数。
MAPPED FILE指定存放还原目标路径的映射文件路径。当参数 BACKUPSET 指定的路径和 MAPPED FILE 中指定的路径不一致时,以 MAPPED FILE 中指定的路径为主
TASK THREAD指定还原过程中用于处理解压缩和解密任务的线程个数。若未指定,则默认为 4;若指定为 0,则调整为 1;若指定超过当前系统主机核数,则调整为主机核数。
RENAME TO指定还原数据库后是否更改库的名字,若指定该参数则将还原后的库改为指定的数据库名,默认使用备份集中的 db_name 作为还原后库的名称。
USE BAK_MAGIC指定备份集魔数,若不指定,则默认为 0。使用备份集进行还原恢复时指定的 BAK_MAGIC 需要与备份集的 BAK_MAGIC 一致,用户可通过 DMRMAN 工具的 SHOW BACKUPSET 命令查看备份集的 BAK_MAGIC。该参数仅在 DMDPC 环境下有效。
TO SHADOW指定该关键字,将目标库还原成影子库。
WITH CHECK指定还原前校验备份集数据完整性。缺省不校验。
REUSE DMINI指定 REUSE DMINI 子句进行数据库还原,此时会将备份集中备份的 dm.ini 中除路径相关的 INI 参数外,均拷贝到当前 dm.ini 上。
WITHOUT SPACE指定还原数据库时不再为数据文件尾部未使用的数据页分配磁盘,不指定则默认分配。
WITHOUT MIRROR指定还原数据库时不还原镜像文件,不指定则默认进行还原。
AUTO EXTEND还原数据库时设置文件自动拓展,避免指定 WITHOUT SPACE 关键字后,由于源库未设置文件自动拓展,从而导致恢复过程或从 DDL_CLONE 库还原后更新 DB_MAGIC 时存储空间不足。
OVERWRITE还原数据库时,存在重名的数据文件时,是否覆盖重建,不指定则默认报错。

注意

如果使用影子备份集进行还原,无论是否指定TO SHADOW关键字,目标库都被还原成影子库。如果使用普通备份集进行还原,指定TO SHADOW关键字,目标库被还原成影子库;不指定TO SHADOW关键字,目标库被还原成普通库。

还原时指定OVERWRITE选项,所有重名的文件和非空目录均会删除重建,该过程是无法撤销的。为避免删除重要的文件,还原前请务必确保数据库系统路径下未存放无关文件。

1.1.2 使用举例

通过 RESTORE 命令还原后的数据库不可用,需进一步执行 RECOVER 命令,将数据库恢复到备份结束时的状态。

数据库备份集分为联机和脱机两种类型。通常情况下,用户会在联机状态下备份数据库,因此下面以联机数据库备份为例说明使用 DMRMAN 如何执行数据库还原操作。

  1. 联机备份数据库,保证数据库运行在归档模式及 OPEN 状态;
SQL> BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_full_bak_for_restore';
  1. 准备目标库。还原目标库可以是已经存在的数据库,也可使用 dminit 工具初始化一个新库。如下所示:
dminit path=/dmdata/data db_name=DAMENG_FOR_RESTORE
  1. 校验备份集

  2. 还原数据库

    • 直接指定还原目标库的 dm.ini 进行数据库还原
    RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_full_bak_for_restore';
    
    • 指定 REUSE DMINI 子句进行数据库还原
    RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' REUSE DMINI FROM BACKUPSET '/dmdata/dmbak/db_full_bak_for_restore';
    

当使用指定 FROM LSN 生成的库备份集进行数据库还原时,存在以下限制

  1. 还原目标库必须为正常退出的数据库。
  2. 在集群环境下,源库和目标库必须从属于同一集群,且目标库必须为集群中的备库。
  3. 备份时指定的 FROM LSN 必须小于等于目标库最小的 APPLY_LSN。
  4. 备份集的 END_LSN(即备份结束时系统的 CUR_LSN)必须大于等于目标库最大的 APPLY_LSN。
  5. 备份时指定的 FROM LSN 必须小于等于目标库检查点 LSN。

1.2 数据库恢复一致性

使用 RECOVER 命令完成数据库恢复工作,数据库恢复是指重做 REDO 日志。可以是基于备份集的恢复工作,也可以是使用本地归档日志的恢复工作。

如果还原后,不需要重做日志,数据就已经处于一致性状态了(例如正常关闭库的脱机备份还原),则可以跳过这一步,直接进入数据库更新阶段。

数据库恢复是指重做 REDO 日志,有两种方式:从备份集恢复,即重做备份集中的 REDO 日志;从归档恢复,即重做归档中的 REDO 日志。由于日志重做过程中,修改好的数据页首先存入缓冲区,缓冲区分批次将修改好的数据页写入磁盘,如果在此过程中发生异常中断,可能导致缓冲区中的数据页无法写入磁盘,造成数据的不一致,数据库启动时校验失败,所以数据库恢复过程中不允许异常中断。数据库恢复后,还需要执行数据库更新操作,将数据库调整为可正常工作的库才算完成。下面逐一进行说明。

1.2.1 从备份集恢复

如果备份集在备份过程中生成了日志,且这些日志在备份集中有完整备份(如联机数据库备份),在执行数据库还原后,可以重做备份集中备份的日志,将数据库恢复到备份时的状态,即从备份集恢复。完整的示例如下:

  1. 启动 DIsql 联机备份数据库;
BACKUP DATABASE BACKUPSET '/dmdata/dmbak/db_full_bak_for_recover_backupset';
  1. 准备目标库,可以使用备份库,也可以重新生成库;

重新生成库操作如下:

./dminit path=/dmdata/data db_name=DAMENG_FOR_RESTORE auto_overwrite=1
  1. 启动 RMAN,校验备份;
RMAN> CHECK BACKUPSET '/dmdata/dmbak/db_full_bak_for_recover_backupset';
  1. 还原数据库;
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_full_bak_for_recover_backupset';
  1. 恢复数据库。
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' FROM BACKUPSET '/dmdata/dmbak/db_full_bak_for_recover_backupset';

1.2.2 从归档恢复

从归档恢复是利用重做本地归档日志来恢复数据的过程。从归档恢复允许恢复到指定的时间点及指定的 LSN 值。若同时指定了时间点和 LSN,则以较早的为结束点。

注意

  1. 使用DDL CLONE方式备份的数据库,不支持指定归档恢复。

  2. 指定归档恢复时,不建议使用联机状态下源库的归档,此时无法保证归档的完整性

  3. 由于从本地归档恢复允许使用 USE DB_MAGIC 指定待收集归档的 DB_MAGIC,那么就会存在跨库恢复情况,所以,归档日志的正确使用完全由用户保证。因此,为了保证用户能正确使用从归档恢复,除了下文这两种情况,其他情况(可能导致数据被破坏)不建议用户使用从本地归档恢复

使用异常退出源库的归档文件进行恢复

数据库运行过程中,持续写入 REDO 日志到本地联机日志文件,并同步到归档文件。一般认为,源库故障后,使用备份集和归档文件可以将目标库数据恢复到最新状态,这样的假设并不总是成立,考虑如下场景:

  1. 创建数据库 D1;
  2. 操作数据库并执行备份,产生备份集 B1;
  3. 继续操作数据库,操作过程中数据库故障,产生归档 A1。

如果故障发生在 REDO 日志已写入联机日志,但未写入归档文件时,由于归档文件缺少部分 REDO 日志,此时使用备份集 B1 及归档 A1 无法将目标数据库恢复到最新状态。

对于这样的情况,需要使用联机日志修复归档后,才可使用归档文件将目标数据库恢复到最新状态。

  1. 联机备份D1全库
SQL> backup database backupset 'B1';
  1. 循环插入100W条记录
CREATE TABLE TABLE_3
(i int
);beginfor i in 1..1000000loopinsert into TABLE_3 values(i);if i%50 = 0 THENcommit;end if;end loop;
end;
  1. 强杀达梦进程,异常退出

  2. 准备目标库D2,即待还原的库

dminit path=/dmdata/data db_name=D2
  1. 修复D1归档日志
RMAN> REPAIR ARCHIVELOG DATABASE '/dmdata/data/D1/dm.ini';
  1. 使用备份集 B1 及归档 A1 将目标库 D2 恢复到最新状态
# 还原数据库到D2
RMAN> RESTORE DATABASE '/dmdata/data/D2/dm.ini' FROM BACKUPSET '/dmdata/dmbak/B1';
# 使用归档文件恢复到最新状态
RMAN> RECOVER DATABASE '/dmdata/data/D2/dm.ini' WITH ARCHIVEDIR '/dmdata/dmbak/arch';
1.3 更新DB_MAGIC
RMAN>RECOVER DATABASE '/dmdata/data/D2/dm.ini' UPDATE DB_MAGIC;

2、表空间还原

使用 RESTORE 命令完成表空间的脱机还原,还原的备份集可以是联机或脱机生成的库备份集,也可以是联机生成的表空间备份集。脱机表空间还原仅涉及表空间数据文件的重建与数据页的拷贝。不需要事先置目标表空间为 OFFLINE 状态

表空间还原后,表空间状态被置为 RES_OFFLINE,并设置数据标记 FIL_TS_RECV_STATE_RESTORED,表示已经还原但数据不完整。

2.1 语法
RESTORE DATABASE '<ini_path>' TABLESPACE <表空间名> [with check] [DATAFILE <文件编号> {,<文件编号>} | '<文件路径>' {,'<文件路径>'}] FROM BACKUPSET '<备份集路径>' [<device_type_stmt>] [IDENTIFIED BY <密码>|"<密码>"] [ENCRYPT WITH <加密算法>] [WITH BACKUPDIR '<基备份搜索目录>' {,'<基备份搜索目录>'}] [MAPPED FILE '<映射文件路径>'] [TASK THREAD <线程数>];<device_type_stmt>::= DEVICE TYPE <介质类型> [PARMS '<介质参数>']

使用说明:

  1. 表空间还原不能是 TEMP 表空间,指定文件还原也不能为 TEMP 表空间中文件。
  2. 表空间还原要求还原目标库与备份库为同一个库,否则将报错
  3. 还原目标库不能为已经执行过 RESTORE 但未执行过 RECOVER 的库。
  4. 处于 RES_OFFLINE 或 CORRUPT 状态的表空间不允许指定表空间中数据文件还原。
  5. 整个还原过程中不会修改数据库本身状态或者调整 CKPT_LSN。
  6. 不管是 DSC 环境,还是单机环境,若异常退出,需手动指定各节点归档修复后,使用各节点完整的归档日志执行还原恢复;否则,将可能无法恢复到最新状态。
  7. 若目标库中 SYSTEM 表空间故障,则必须优先还原 SYSTEM 表空间
  8. 在 DMDSC 环境中进行表空间还原,需要先确保所有节点实例都已退出,此时在任一节点上使用该节点的备份集均可进行表空间还原操作,且只要在一个节点上执行目标表空间还原即可。
  9. 如果 SYSTEM 表空间处于 ONLINE/OFFLINE 状态且文件丢失,则必须要通过库还原修复,不支持对其执行表空间还原。

以联机表空间备份集为例,展示 DMRMAN 如何完成表空间的还原:

  1. 联机备份表空间,保证数据库运行在归档模式及 OPEN 状态;
BACKUP TABLESPACE MAIN BACKUPSET '/dmdata/dmbak/ts_full_bak_for_restore';
  1. 校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;
RMAN> CHECK BACKUPSET '/dmdata/dmbak/ts_full_bak_for_restore';
  1. 还原表空间。需要注意,表空间还原的目标库只能是备份集产生的源库,否则将报错。
RMAN> RESTORE DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dmdata/dmbak/ts_full_bak_for_restore';
  1. 恢复表空间
RMAN> RECOVER DATABASE '/dmdata/data/DAMENG_FOR_RECOVER/dm.ini' TABLESPACE MAIN;

3、归档还原

使用 RESTORE 命令完成脱机还原归档操作,在还原语句中指定归档备份集。备份集可以是脱机归档备份集,也可以是联机归档备份集。

3.1 语法
RESTORE <ARCHIVE LOG | ARCHIVELOG> [WITH CHECK] FROM BACKUPSET '<备份集路径>'[<device_type_stmt>] [IDENTIFIED BY <密码>|"<密码>" [ENCRYPT WITH <加密算法>]] [TASK THREAD <任务线程数>] [NOT PARALLEL] [ALL | [FROM LSN <lsn>] | [UNTIL LSN <lsn>] | [LSN BETWEEN <lsn> AND <lsn>] | [FROM TIME '<time>'] | [UNTIL TIME '<time>'] | [TIME BETWEEN '<time>' AND '<time>'] ] TO <还原目录> [OVERWRITE <level>]; <device_type_stmt>::= DEVICE TYPE <介质类型> [PARMS '<介质参数>']<还原目录>::= ARCHIVEDIR '<归档日志目录>' | DATABASE '<ini_path>' 
参数说明
WITH CHECK指定还原前校验备份集数据完整性。缺省不校验。
BACKUPSET指定用于还原归档的备份集路径。若指定为相对路径,会在 < 还原目录 > 指定的 DATABASE 对应的默认数据库备份目录下搜索备份集。例如:在 RESTORE ARCHIVE LOG FROM BACKUPSET ‘ARCH_LOG_00’ TO DATABASE ‘D:\HY\DAMENG\dm.ini’ OVERWRITE 2;语句中,因为备份集 ARCH_LOG_00 为相对路径,所以会在还原目标库 D:\HY\DAMENG 的默认数据库备份目录中搜索 ARCH_LOG_00。如果 < 还原目录 > 中指定的是 ARCHIVEDIR,则 BACKUPSET 必须指定绝对路径。
NOT PARALLEL指定并行备份集使用非并行方式还原。对于非并行备份集,不论是否指定该关键字,均采用非并行还原
ALL还原所有的归档。若不指定,则默认为 ALL。
FROM LSN,FROM TIME指定还原的起始 LSN 或者开始的时间点。真正的起始点为该 LSN 或该时间点所在的整个归档日志文件作为起始点。例如,指定 FROM 10001,而归档日志文件 X 的 LSN 为 9000-12000,那么就会将该归档日志文件 X 作为起始归档日志文件。
UNTIL LSN,UNTIL TIME指定还原的截止 LSN 或者截止的时间点。真正的截止点为该 LSN 或该时间点所在的整个归档日志文件作为截止归档日志文件。
BETWEEN … AND …
ARCHIVEDIR指定还原的目标归档日志目录。
DATABASE指定还原目标库的 dm.ini 文件路径,将归档日志还原到该库的归档日志目录中。
OVERWRITE还原归档时,指定归档日志已经存在时的处理方式。可取值 1、2、3。1:跳过已存在的归档日志,继续其他日志的还原。跳过的日志信息会生成一条日志记录在安装目录的 log 目录中的 dm_BAKRES_年月.log 日志文件中。2:直接报错返回。3:强制覆盖已存在的归档日志。缺省为 1。

使用说明:

  1. 联机备份归档,保证数据库运行在归档模式及 OPEN 状态;
BACKUP ARCHIVE LOG ALL BACKUPSET '/dmdata/dmbak/arch_all_for_restore';
  1. 校验备份,校验待还原备份集的合法性。校验备份有两种方式,联机和脱机,此处使用脱机校验;
RMAN> CHECK BACKUPSET '/dmdata/dmbak/arch_all_for_restore';
  1. 还原归档。启动 DMRMAN,设置 OVERWRITE 为 2,如果归档文件已存在,会报错。

指定还原的目标归档日志目录:

RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dmdata/dmbak/arch_all_for_restore' TO ARCHIVEDIR'/dmdata/data/DAMENG_FOR_RESTORE/arch_dest' OVERWRITE 2;

指定还原目标库的 dm.ini 文件路径:

RMAN> RESTORE ARCHIVE LOG FROM BACKUPSET '/dmdata/dmbak/arch_all_for_restore' TO DATABASE '/dmdata/data/DAMENG_FOR_RESTORE/dm.ini' OVERWRITE 2;

4、归档修复

使用 REPAIR 命令完成指定数据库的归档修复,归档修复会对目标库 dmarch.ini 中配置的所有本地归档日志目录执行修复。若目标库没有配置本地归档,则不执行修复执行修复时,目标库一定不能处于运行状态。一般建议在数据库故障后,应立即执行归档修复,否则后续还原恢复将会导致联机日志中未刷入本地归档的 REDO 日志丢失,届时再利用本地归档恢复将无法恢复到故障前的最新状态。

REPAIR <ARCHIVE LOG | ARCHIVELOG> DATABASE '<ini_path>';
  • 单机环境下,确保目标库已经停止工作后,执行归档修复
RMAN> REPAIR ARCHIVELOG DATABASE '/dmdata/data/DAMENG/dm.ini';
  • DSC 环境下,需要每个节点停止工作后,每个节点独立执行修复操作
# 对于两节点 DSC01、DSC02 执行修复如下
RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm01.ini';RMAN> REPAIR ARCHIVELOG DATABASE '/opt/dmdbms/dsc/dm02.ini';

达梦社区:https://eco.dameng.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/493636.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【前端素材】推荐优质后台管理系统Qovex平台模板(附源码)

一、需求分析 1、定义 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作&#xff0c;用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心&#xff0c;管理员可以通过后台系统进行各种管理…

消息中间件之RocketMQ源码分析(十八)

Broker CommitLog索引机制中的构建过程 1.创建ConsumeQueue和IndexFile。 ConsumeQueue和IndexFile两个索引都是由ReputMessageService类创建的 RequestMessageService类图 ReputMessageService服务启动后的执行过程。 doReput()方法用于创建索引的入口&#xff0c;通常通过…

1.0 RK3399项目开发实录-Ubuntu环境搭建(物联技术666)

1.下载Ubuntu所需的版本&#xff1a;Index of /releases 2.安装vmplayer:Download VMware Workstation Player | VMware 3.安装Ubuntu时&#xff0c;磁盘空间尽量大些&#xff0c;开发板系统包都比较大&#xff0c;避免存不下&#xff0c;建议空间100G。 关闭Ubuntu自动更新…

全新颜料转现项目,日引500+老色批 可不加好友立即转现 小白上手日入700

颜料市场始终广阔&#xff0c;只要男性用户存在&#xff0c;颜料行业就能持续发展&#xff0c;只是快速变现的策略在不断更新。 今天我要分享一个长期有效的策略&#xff0c;适用于全网平台&#xff0c;操作简便&#xff0c;新手也能轻松掌握。新项目的实例教程非常全面&#…

RabbitMQ服务启动失败

报错信息&#xff1a; 在服务中启动RabbitMQ服务显示&#xff1a; RabbitMQ 服务正在启动 . RabbitMQ 服务无法启动。 系统出错。 发生系统错误 1067。 进程意外终止 报错原因&#xff1a; 1.Erlang与RabbitMQ是否匹配 2.Erlang与RabbitMQ安装路径是否存在中文或空格 3.电…

【前端素材】推荐优质后台管理系统Space平台模板(附源码)

一、需求分析 综上所述&#xff0c;后台管理系统在多个层次上提供了丰富的功能和细致的管理手段&#xff0c;帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 当我们从多个层次来详细分析后台…

Nest.js权限管理系统开发(七)用户注册

创建user模块 先用nest的命令创建一个 user 模块&#xff0c; nest g res user 实现user实体 然后就生成了 user 模块,在它的实体中创建一个用户表user.entity.ts&#xff0c;包含 id、用户名、密码,头像、邮箱等等一些字段&#xff1a; Entity(sys_user) export class Us…

【Linux操作系统】死锁 | 预防、避免死锁

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;Linux系列专栏&#xff1a;Linux基础 &#x1f525; 给大家…

SSM框架学习笔记07 | Spring MVC入门

文章目录 1. HTTP协议2. Spring MVC2.1. 三层架构2.2. MVC&#xff08;解决表现层的问题&#xff09;2.3. 核心组件 3. Thymeleaf3.1. 模板引擎3.2. Thymeleaf3.3. 常用语法 代码 1. HTTP协议 网址&#xff1a;https://www.ietf.org/ &#xff08;官网网址&#xff09; https:…

探索 Sora 视频模型背后的基础算法

2024年2月16日&#xff0c;OpenAI发布Sora文生视频模型&#xff0c;一石激起千层浪&#xff0c;迅速刷屏爆火于整个AI圈。一方面&#xff0c;Sora从文本、图像迈向视频大模型&#xff0c;这可以说是通向通用人工智能的里程碑事件&#xff1b;另一方面&#xff0c;训练和推理需求…

ETL数据仓库的使用方式

一、ETL的过程 在 ETL 过程中&#xff0c;数据从源系统中抽取&#xff08;Extract&#xff09;&#xff0c;经过各种转换&#xff08;Transform&#xff09;操作&#xff0c;最后加载&#xff08;Load&#xff09;到目标数据仓库中。以下是 ETL 数仓流程的基本步骤&#xff1a…

系统找不到xinput1_3.dll怎么办?试试这五种解决方法轻松搞定

在计算机系统运行过程中&#xff0c;当我们遭遇“找不到xinput1_3.dll”这一错误提示时&#xff0c;实际上正面临一个软件兼容性、系统组件缺失以及游戏或应用程序无法正常启动的关键问题。深入探究这一现象&#xff0c;我们会发现它可能引发一系列连带问题&#xff0c;例如某些…