达梦数据库(DM8)的备份与还原

数据库备份是日常工作最重要的工作之一,数据库备份是为了在数据库发生故障时,通过备份还原,将数据库恢复到可用状态

DM8支持三种方式的备份:逻辑备份、使用联机SQL命令进行备份、DMRMAN工具的备份

在进行备份操作前,先说一些基本概念

数据备份

库备份:备份整个库,拷贝数据库中所有有效数据页如果是联机备份,还会拷贝归档日志

表空间备份:只支持联机状态下进行

表备份:只支持联机状态下进行,一次备份操作只能备份一张表,不支持增量

归档日志备份:既可以联机也可以停机

一致性备份和非一致性备份

一致性备份包含了完整的数据文件和归档日志信息,不指定without log参数即为一致性备份,脱机备份会将检查点之后的redo log拷贝到备份集,因此,脱机备份一定是一致性备份

非一致性备份,只包含了数据文件,没有归档日志,利用非一致性备份的库无法正常启动,必须依靠归档日志。表空间备份、指定了without log参数的联机备份一定是非一致性备份

数据库还原

联机还原:表还原可以在联机状态下进行

脱机还原:是指在数据库关闭状态下,通过dmrman进行还原。

根据备份集类型,数据库还原可以分为库还原、表空间还原和表还原。库和表空间还原必须处于脱机状态下

还原的表空间不能是TEMP表空间

还原原理

还原时,既可以还原到指定的新目录,也可以还原到一个已经存在的库

步骤包括:清理目标库环境;重建数据库文件;拷贝数据页;重建redo log;重置目标库;修改配置参数

一、清理目标库环境:如果指定已经存在的库作为还原目标,首先解析dm.ini获取dm.ctl控制文件路径,删除控制文件中的数据文件,然后根据OVERWRITE选项,如果待还原文件存在,则删除;如果不指定OVERWRITE选项,则会报错;但是会保留目标库中的日志文件、控制文件等

二、重建数据库文件:如果还原到一个已经存在的库,需要指定目标数据库的dm.ini路径作为还原参数,还原过程中会重新创建数据文件,并将相关信息写入到dm.ctl控制文件;如果还原到指定目录,则会在对应目录生成新的dm.ini文件,设置CTL_PATH、SYSTEM_PATHA指向这个新目录,并在这个目录下生成新的控制文件。DMDSC目前不支持还原到新目录

数据文件重建策略:

1)目标库和备份集中的SYSTEM_PATH路径相同,则按照备份集中记录的原始路径创建文件

2)目标库和备份集中的SYSTEM_PATH路径不同,默认在目标库的SYSTEM_PATH目录下创建文件

三、重建redo log:所有库配置文件均认为在指定目录下

四、拷贝数据页:拷贝数据页到指定的目录,由于备份过程中只备份了有效的数据页,空的数据页并没有备份

五、重置目标库:包括

1)更新日志信息,设置当前的CKPT_LSN为备份集中的BEGIN_LSN,并设置日志文件状态为INACTIVE;

2)更新DB_MAGIC,还原后,库中的PERMANENT_MAGIC仍与备份集中的相同

注:SELECT PERMANENT_MAGIC;

SELECT DB_MAGIC FROM V$RLOG;

PERMANENT_MAGIC:永久魔数

DB_MAGIC:数据库魔数,在还原后会变化

3)设置还原标志,标识当前库为指定还原的库,不允许使用

4)更新目标库中的dm.ctl控制文件,把当前库中的数据文件信息记录到控制文件,使用备份集中的秘钥生成新的秘钥文件

六、修改配置参数:

还原到指定库时,默认会保留目标库的配置参数不变,也可以指定REUSE DMINI使用备份集中的dm.ini替换原来的dm.ini文件。还原到指定目录时,生成新的dm.ini文件

表空间还原

表空间还原只可以在脱机状态下进行。通过dmrman执行。如果还原后表空间状态为RES_OFFLINE,表明表空间已经还原,但是数据不完整

查询表空间方式:

select * from dba_data_files;

select * from v$datafile;

select * from v$tablespace;查询的结果中status的取值为int类型

0:ONLIE  1:OFFLINE  2:RES_OFFLINE  3:CORRUPT

注意事项:

1)指定dm.ini必须存在,其中的CTL_PATH必须配置且必须有效

2)若指定目录还原,则指定目录作为数据库的系统目录

3)对于增量备份的还原,需要搜集完整的备份集链表,从前到后,逐个还原备份集。鉴于增量备份的BEGIN_LSN确定规则,不需要重做归档日志

redo log与archive log

redo日志:初始化时就产生,两个,默认大小256M,可选范围为256M——2048M

如果业务变动较为频繁,建议设置2048M,即2G

可以查询v$parameter视图中 LOG_POOL_SIZE

初始化时可以指定大小

./dminit path=  page_size=16  log_size=2048

在线修改大小

ALTER DATABASE RESIZE LOGFILE 'LOG1.LOG' to 2048;

ALTER DATABASE RESIZE LOGFILE 'LOG2.LOG' to 2048;

ALTER DATABASE RESIZE LOGFILE 'LOG3.LOG' to 2048;

注意:只能调大,不能调小

archive 日志:默认不开启。生产环境建议开启归档

归档日志文件大小建议和redo log大小设置成一样。归档日志建议单独存放在一块磁盘上

查询归档配置

select * from v$dm_arch_ini;

查询归档状态

select * from v$arch_status;

在线开启方式

alter database mount;

alter database add archivelog 'dest=/dm8/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=0'

alter database archivelog;

alter database open;

也可以修改dm.ini文件中的ARCH_INI值为1

并在数据文件路径下添加dmarch.ini文件

dmarch.ini配置文件

[ARCHIVE_LOCAL1]

ARCH_TYPE     = LOCAL #本地归档类型

ARCH_DEST     = /dmarch/ #本地归档文件存放路径

ARCH_FILE_SIZE    = 2048 #单位 MB,本地单个归档文件最大值

ARCH_SPACE_LIMIT  = 10240    #单位 MB,0 表示无限制,范围 1024~4294967294 MB

归档日志切换

alter database archivelog current;

alter system archive log current;

alter system switch logfile;

三个语句都可

逻辑备份和还原

逻辑备份

4种模式

1.full全库备份

./dexp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log FULL=Y

2.用户级  OWNER

备份DMTEST用户下的表

./dexp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log OWNER=DMTEST

3.模式级  SCHEMAS

备份模式DMTEST下的表

./dexp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log SCHEMAS=DMTEST

4.表级    TABLES

备份表

./dexp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log TABLES=table1,table2,...

还原

还原数据库

./dimp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log FULL=Y

还原DMTEST用户下的表

./dimp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log OWNER=DMTEST

还原模式DMTEST下的表

./dimp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log SCHEMAS=DMTEST

还原表

./dimp USERID=SYSDBA/Dameng123:5238 FILE=db16_full.dmp DIRECTORY=/dm8/backup/ LOG=db16_full.log TABLES=table1,table2,...

联机SQL备份

数据库备份

备份方式:dmap辅助进程方式和无辅助进程方式。可以通过dm.ini的bak_use_ap参数来设定,可以取值1或者2。默认值为1

参数值1为dmap辅助进程方式,2为无辅助进程方式

查询当前实例备份路径:

select * from v$dm_ini where para_name like '%BAK_PATH%';

最简单的备份语句:

BACKUP DATABASE BACKUPSET 'db_full_bak_20220718';

备份的路径即为上边的SQL查询的结果中的路径

BACKUP DATABASE参数:

FULL 备份类型,表示全备,可以不用指定,默认为全备份

DDL_CLONE 数据库克隆,会备份Huge表。该参数只能在全备下使用

INCREMENT 备份类型,增量备份,如果要执行增量备份,则需要制定此参数

CUMULATIVE 用户增量备份中,指明增量备份的类型,如果不指定,默认为差异增量备份。

差异增量和累计增量区别:

差异增量备份:备份上级备份或者同级备份以来变化的数据块

累计增量备份:备份上级备份以来变化的数据块

WITH BACKUPDIR 用户增量备份中,指定基备份的搜索目录,若不指定,在默认的备份路径下进行寻找。如果基备份不在默认路径下,此参数必须指定

BASE ON BACKUPSET 用于增量备份中,指定基备份的路径

TO 指定生成备份的名称。如果不指定,则系统随机生成。格式为DB_库名_备份类型_备份时间   其中备份时间为开始备份的系统时间

BACKUPSET 指定当前备份集的生成路径。若指定相对了路径,则在默认备份路径下生成。如果不指定,则在默认路径下按照预定规则生成,格式为DB_库名_备份类型_备份时间   其中备份时间为开始备份的系统时间

DEVICE TYPE 储存备份集的介质类型,支持DISK和TAPE,默认DISK

PARMS 只对介质类型为TAPE有效

BACKUPINFO 备份的描述信息

MAXPIECESIZE 最大备份片的文件大小上限。以M为单位,最小32M。32位系统最大2G,64为系统最大128G

LIMIT 备份时最大读写速率,单位为M/S,默认0表示无限制

IDENTIFIED BY 备份时加密。加密策略参照dm.ini下的PWD_POLICY

WITH ENCRYPTION 指定加密类型,0表示不加密,1表示简单加密,2表示完全加密

对于增量备份加密,如果基备份加密,则增量备份必须用同样加密方式。如果基备份没有加密,增量备份则没有要求

COMPRESSED 备份集是否进行压缩,取值0——9。数字越大,压缩率越高,速度越慢

WITHOUT LOG 是否备份日志,如果使用,则表示不备份日志。如果使用此参数,使用DMRMAN进行还原时,必须指定WITH ARCHIVEDIR参数指定归档日志路径。

TRACE FILE 指定生成的trace文件,如果不指定,则在log目录下生成DM_SBTTRACE_年月.log 文件  

TRACE LEVEL 是否启用trace文件,取值1、2,默认1,表示不启用

TASK THREAD 备份过程中的线程数,取值范围0——64,默认4。如果指定为0,则调整为1。如果超过服务器CPU核数,则调整为主机核数。线程数*并行数不超过512

PARALLEL 备份的并行数和拆分的数据块大小。取值范围0——128。默认为4。设置为0或者1代表不启用并行

设定备份集路径

/dm8/backup/db_full_bak_20220718

BACKUP DATABASE BACKUPSET '/dm8/backup/db_full_bak_20220718'

设置备份名

备份名称为WEEKLY_FULL_BAK BACKUPSET

BACKUP DATABASE TO WEEKLY_FULL_BAK BACKUPSET '/dm8/backup/db_full_bak_20220718';

增量备份指定基备份

BACKUP DATABASE INCREMENT BASE ON BACKUPSET 'db_full_bak_20220718' BACKUPSET 'db_inc_bak_20220718'; 

指定介质类型

BACKUP DATABASE INCREMENT BASE ON BACKUPSET 'db_full_bak_20220718' BACKUPSET 'db_inc_bak_20220718_1' DEVICE TYPE DISK;

添加备份描述

BACKUP DATABASE INCREMENT BASE ON BACKUPSET 'db_full_bak_20220718' BACKUPSET 'db_inc_bak_20220718_2' BACKUPINFO '增量';

限制备份片大小

BACKUP DATABASE INCREMENT BASE ON BACKUPSET 'db_full_bak_20220718' BACKUPSET 'db_inc_bak_20220718_3' MAXPIECESIZE 1024;

备份压缩

BACKUP DATABASE INCREMENT BASE ON BACKUPSET 'db_full_bak_20220718' BACKUPSET 'db_inc_bak_20220718_4' COMPRESSED LEVEL 2;

并行备份

BACKUP DATABASE INCREMENT BASE ON BACKUPSET 'db_full_bak_20220718' BACKUPSET 'db_inc_bak_20220718_5' PARALLEL 6;

表空间备份

备份表空间操作和备份数据库一样。数据库必须运行在归档模式下

最简单的备份表空间的语句

BACKUP TABLESPACE MAIN BACKUPSET 'TS_MAIN_FULL';

BACKUP TABLESPACE参数:

参考BACKUP DATABASE参数

表空间的备份和数据库的备份参数基本一致,可参考数据库的备份

表备份

和备份数据库和表空间不同,备份表不需要在归档模式下也可以进行备份

最简单的备份表的语句

BACKUP TABLE DMTEST.T1 BACKUPSET 'TABLE_T1_BAK';

BACKUP TABLE参数:

参考BACKUP DATABASE参数

归档备份

归档备份前提:

  1. 归档中的db_magic和permanent_magic和数据库的这两个值必须相同
  2. 服务器必须配置归档
  3. 归档日志必须连续,如果不连续,前面的连续部分会忽略,只会备份最近的连续的归档

最简单的归档备份语句

BACKUP ARCHIVE LOG ALL BACKUPSET 'ARCH_BAK_ALL';

BACKUP ARCHIVE LOG参数

ALL 备份所有归档,默认为ALL

FROM LSN 指定起始的LSN

UNTIL LSN 指定备份截止的LSN

注意:起始和截止的LSN可以通过查询v$ARCH_FILE进程查询

select * from v$ARCH_FILE;

FROM TIME 指定备份开始的时间点

UNTIL TIME 指定备份截止的时间点

BETWEEN...AND... 指定备份的时间区间

DELETE INPUT 用来指定备份完成后是否删除归档日志

TO 指定备份的名称,如果不指定,则默认生成 ARCH_备份时间  备份时间为备份开始系统时间

BACKUPSET 指定备份集的路径。如果不指定,生成名为 ARCH_LOG_时间


其他参数参考BACKUP DATABASE参数

使用加密和跟踪日志文件

使用加密

密码长度为9——48个字节,默认的加密算法为AES256_CFB

使用加密级别为2,加密算法为RC4的加密

BACKUP DATABASE BACKUPSET 'db_full_bak_20220718_1' IDENTIFIED BY "123456789" WITH ENCRYPTION 2 ENCRYPT WITH RC4;

设置跟踪日志文件

指定了TRACE FILE但是TRACE LEVEL设定为1,会生成TRACE文件,但没有TRACE信息

BACKUP DATABASE BACKUPSET 'db_full_bak_20220718_trace' TRACE FILE '/dm8/log/DB_FULL_TRACE.log' TRACE LEVEL 1;

管理备份

备份管理相关的过程和函数

SF_BAKSET_BACKUP_DIR_ADD 添加备份目录。

设定

SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/data/DAMENG/bak');

查询,如果返回结果为1,则代表成功

select SF_BAKSET_BACKUP_DIR_ADD('DISK','/dm8/data/DAMENG/bak');

SF_BAKSET_BACKUP_DIR_REMOVE 删除内存中指定的备份目录

设定

SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/dm8/data/DAMENG/bak');

查询,返回1目录删除成功、目录不存在或者目录为空

返回0目录为库默认路径;其他情况报错

SELECT SF_BAKSET_BACKUP_DIR_REMOVE('DISK','/dm8/data/DAMENG/bak');

SF_BAKSET_BACKUP_DIR_REMOVE_ALL 删除内存中全部的备份目录

不需要添加参数

查询,返回1代表目录清楚成功

select SF_BAKSET_BACKUP_DIR_REMOVE_ALL()

SF_BAKSET_CHECK 对备份集进行校验

参数为('存储介质','备份集路径')

SELECT SF_BAKSET_CHECK('DISK','/dm8/data/DAMENG/bak/db_full_bak_20220718')

SF_BAKSET_REMOVE 删除指定设备类型和指定备份集目录的备份集

参数为('存储介质','备份路径',删除选项)

删除选项为int类型,取值为0或者1。0单独删除,1级联删除。1用于删除级联的增量备份

SELECT SF_BAKSET_REMOVE('DISK','/dm8/data/DAMENG/bak/db_full_bak_20220718',1);

SF_BAKSET_REMOVE_BATCH 批量删除满足指定条件的所有备份集

参数为('存储介质','截止时间',范围,'对象名称')

只删除截止时间以前的备份。范围 range代表备份级别1库2表空间3表4归档日志

对象名称obj_name备份集中的对象名称。仅在表空间和表级有效。

SELECT SF_BAKSET_REMOVE_BATCH ('DISK', now(), NULL, NULL);

SP_DB_BAKSET_REMOVE_BATCH 批量删除指定时间之前的数据库备份集

参数为('存储介质','截止时间')

CALL SP_DB_BAKSET_REMOVE_BATCH ('DISK', now());

SP_TS_BAKSET_REMOVE_BATCH 批量删除指定表空间对象及指定时间之前的表空间备份集

参数为('存储介质','截止时间','表空间名')

CALL SP_TS_BAKSET_REMOVE_BATCH('DISK', now(),'MAIN')

SP_TAB_BAKSET_REMOVE_BATCH 批量删除指定表对象及指定时间之前的表备份集

参数('存储介质','截止时间','模式名','表名')

CALL SP_TAB_BAKSET_REMOVE_BATCH('DISK',NOW(),'DMTEST','T1')

SP_ARCH_BAKSET_REMOVE_BATCH 批量删除指定条件的归档备份集

参数('存储介质','截止时间')

CALL SP_ARCH_BAKSET_REMOVE_BATCH('DISK',NOW())

备份管理相关动态视图

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:显示当前备份任务待备份数据文件列表

表还原

简单的表还原语句

RESTORE TABLE DMTEST.T1 FROM BACKUPSET 'TABLE_T1_BAK';

RESTORE TABLE参数

表名 指定需要还原的表名,指定表名时,数据库必须存在该表,否则报错,不会再备份集中判断是否存在该表

STRUCT 执行表结构还原,如果不指定,则认为是还原表数据。表数据还原要求还原目标表与备份集中完全一致。

KEEP TRXID 指定还原后数据页上的记录的TRXID保持不变,若发现备份时系统最大TRXID大于等于当前系统的最大TRXID,则将当前系统的最大事务ID+1000。调整后副作用,rec_id>=next_trxid的记录,或者rec_id<=bak_max_trxid+1000的记录,可能因为还原后,原来删除的数据,又可见了。

BACKUPSET、DEVICE TYPE 、PARMS 、IDENTIFIED BY 、ENCRYPT WITH 、TRACE FILE 、TRACE LEVEL 参数请参考BACKUP DATABASE中对应的参数

使用说明:

  1. 仅支持普通用户表进行还原,包括堆表。系统表、临时表、物化视图表、物化视图附属表、日志表以及特定模式(DBG_PKG/INFORMATION_SCHEMA/INFO_SCHEM/SYSREP/SYSGEO/SYSJOB/SYSCPT/SYS)下的表不支持还原
  2. 列类型为对象类型的表不支持还原
  3. 若还原表中存在位图连接索引或者位图连接虚拟索引则不支持还原
  4. 若为加密库,表还原时要求与目标库加密算法一致
  5. 备份集路径应包含完整的备份。包括.meta和.bak文件
  6. 目标表所在表空间必须处于脱机状态
  7. 守护集群,允许主库还原,备库不允许
  8. MOUNT和SUSPEND状态不可以进行还原
  9. MPP不允许还原表
  10. 如果指定了STRUCT参数,执行表结构还原,会根据备份集中的备份表还原要求,对目标表进行校验。并删除目标表中的二级索引和约束
  11. 若不指定 STRUCT 关键字,则执行表数据还原,表数据还原默认仅会将备份表中聚集索引上的数据进行还原。表数据还原默认仅会在目标表定义与备份表一致且不存在二级索引和约束的情况下执行
  12.  若用户指定 TRACE FILE,则指定的文件不能为已经存在的文件,否则报错;也不可以为 ASM 文件
  13. 表还原不会检查默认值

若表列进行了加密,不能跨库,只能还原到备份库

举例

表中不存在索引

CREATE TABLE TAB_FOR_RES_01(C1 INT);

BACKUP TABLE TAB_FOR_RES_01 BACKUPSET 'tab_bak_for_res_01';

SELECT SF_BAKSET_CHECK('DISK','tab_bak_for_res_01');

RESTORE TABLE TAB_FOR_RES_01 FROM BACKUPSET 'tab_bak_for_res_01'

备份和还原时可以不用指定路径,默认存放的路径为v$dm_ini的BAK_PATH对应的路径下

表中存在索引,需要先使用STRUCT参数进行表结构还原

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 'tab_bak_for_res_02';

SELECT SF_BAKSET_CHECK('DISK','tab_bak_for_res_02');

RESTORE TABLE TAB_FOR_RES_02 STRUCT FROM BACKUPSET 'tab_bak_for_res_02';

RESTORE TABLE TAB_FOR_RES_02 FROM BACKUPSET 'tab_bak_for_res_02';

还原时不重建索引或者不重建约束

不重建索引使用WITHOUT INDEX

RESTORE TABLE TAB_FOR_RES_01 WITHOUT INDEX FROM BACKUPSET 'tab_bak_for_res_01';

不重建约束使用WITHOUT CONSTRAINT

RESTORE TABLE TAB_FOR_RES_01 WITHOUT CONSTRAINT FROM BACKUPSET 'tab_bak_for_res_01';

DMRMAN工具备份

DMRMAN是DM数据库脱机备份还原的工具

DMRMAN的组成部分:

源库

待备份的库。使用DMRMAN工具只能进行脱机备份。可以对数据库进行脱机完全备份和增量备份。既可以在归档模式下运行,也可以在非归档模式下

目标库

待还原的库。是可以通过dm.ini文件指定的库,也可以是目标文件目录。通过dm.ini指定,目标库必须处于关闭状态。指定文件目录作为SYSTEM_PATH处理,目录可以存在也可以不存在,但必须有效,且必须处于脱机状态

DMRMAN客户端

用来做数据库的备份还原操作。

备份集

将数据库中的一个或多个数据文件,数据库信息等备份到一个“备份集”的逻辑结构中,备份集的格式是特定的,只能由DMRMAN创建和访问。

DMRMAN备份数据库

DMRMAN参数说明

backup database '/dm8/data/DAMENG/dm.ini';

DATABASE 必选参数,指定源库的INI文件路径

FULL 备份类型,默认全备,可以不指定

DDL_CLONE 数据库克隆,此参数只能出现在完全备份中,表示仅拷贝元数据不拷贝数据,对于表来说,只拷贝表定义

INCREMENT 备份类型,增量备份

CUMULATIVE 用于增量备份中,此参数说明为累积增量备份,如果不指定,则为差异增量备份

WITH BACKUPDIR 用于增量备份中,指定基备份的搜索目录。如果不指定,则在默认备份路径和当前路径下搜索基备份。如果基备份不在默认路径或者当前路径下,必须指定此参数。

BASE ON BACKUPSET 用于增量备份中,指定基备份的路径。若没指定,则搜索最近的一个可用的基备份

TO 指定备份的名称,若不指定,则用默认的DB_库名_备份类型_备份时间。其中备份时间为备份开始的时间

BACKUPSET 指定当前备份集生成路径。若为相对路径,则在指定路径下生成。若不指定,则在默认路径下生成DB_库名_备份类型_备份时间。其中备份时间为备份开始的时间

DEVICE TYPE 存储介质,支持DISK和TAPE,默认为DISK

PARMS 只有对存储介质为TAPE时生效

BACKUPINFO 备份说明信息

MAXPIECESIZE 最大备份片文件大小上限,单位为M,最小32M。32位系统最大2G,64位系统最大128G

LIMIT 备份时最大读写速率,单位为M/S,默认0表示无限制

IDENTIFIED BY 备份时加密。加密策略参照dm.ini下的PWD_POLICY

WITH ENCRYPTION 指定加密类型,0表示不加密,1表示简单加密,2表示完全加密

对于增量备份加密,如果基备份加密,则增量备份必须用同样加密方式。如果基备份没有加密,增量备份则没有要求

COMPRESSED 备份集是否进行压缩,取值0——9。数字越大,压缩率越高,速度越慢

WITHOUT LOG 是否备份日志,如果使用,则表示不备份日志。如果使用此参数,使用DMRMAN进行还原时,必须指定WITH ARCHIVEDIR参数指定归档日志路径。

TRACE FILE 指定生成的trace文件,如果不指定,则在log目录下生成DM_SBTTRACE_年月.log 文件  

TRACE LEVEL 是否启用trace文件,取值1、2,默认1,表示不启用

TASK THREAD 备份过程中的线程数,取值范围0——64,默认4。如果指定为0,则调整为1。如果超过服务器CPU核数,则调整为主机核数。线程数*并行数不超过512

USE BAK_MAGIC 指定备份魔数集,用于指定DMDPC集群中的MP和BP的备份,该参数在DMDPC环境下有效

备份数据库

完全备份

DMRMAN备份数据库必须在脱机状态下进行

BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' FULL BACKUPSET 'db_full_bak_20220719';

增量备份

BACKUP DATABASE '/dm8/data/DAMENG/dm.ini' INCREMENT WITH BACKUPDIR '/dm8/data/DAMENG/bak' BACKUPSET 'db_inc_bak_20220719';

备份归档

归档参数说明

ALL 备份所有归档,默认为ALL

DATABASE 必选参数,指定数据库的ini文件路径

FROM LSN 指定起始的LSN

UNTIL LSN 指定备份截止的LSN

注意:起始和截止的LSN可以通过查询v$ARCH_FILE进程查询

select * from v$ARCH_FILE;

FROM TIME 指定备份开始的时间点

UNTIL TIME 指定备份截止的时间点

BETWEEN...AND... 指定备份的时间区间

DELETE INPUT 用来指定备份完成后是否删除归档日志

TO 指定备份的名称,如果不指定,则默认生成 ARCH_备份时间  备份时间为备份开始系统时间

BACKUPSET 指定备份集的路径。如果不指定,生成名为 ARCH_LOG_时间

其他参数参考BACKUP DATABASE参数

备份所有归档

BACKUP ARCHIVE LOG ALL DATABASE '/dm8/data/DAMENG/dm.ini' BACKUPSET 'all_arch_bak_20220719';

备份部分归档

BACKUP ARCHIVE LOG LSN BETWEEN 50000 AND 120000 DATABASE '/dm8/data/DAMENG/dm.ini' BACKUPSET 'lsn_arch_bak_20220719';

管理备份

查看备份信息

查看单个备份集信息

show backupset '/dm8/data/DAMENG/bak/all_arch_bak_20220719';

查看多个备份集信息

SHOW BACKUPSETS WITH BACKUPDIR '/dm8/data/DAMENG/bak';

如果是多个路径,用逗号分隔

校验备份

CHECK BACKUPSET '/dm8/data/DAMENG/bak/all_arch_bak_20220719';

删除备份

删除特定备份集

REMOVE BACKUPSET '/dm8/data/DAMENG/bak/all_arch_bak_20220719';

如果是基备份删除,可以使用CASCADE级联删除增量备份

REMOVE BACKUPSET '/dm8/data/DAMENG/bak/db_full_bak_20220719' CASCADE;

删除所有备份集

REMOVE BACKUPSETS WITH BACKUPDIR '/dm8/data/DAMENG/bak';

删除指定时间之前的备份集

REMOVE BACKUPSETS WITH BACKUPDIR '/dm8/data/DAMENG/bak' UNTIL TIME '2022-07-19 00:00:00';

备份集导出

例如:导出磁带上/dev/nst0的备份

需要先设置环境变量

export TAPE=/dev/nst0

LOAD BACKUPSETS FROM DEVICE TYPE TAPE TO BACKUPDIR '/dm8/data/DAMENG/bak';

DMRMAN还原和恢复数据库

还原数据库

RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/db_full_bak_20220719';

参数

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

BACKUPSET 指定用于还原目标数据库的备份集路径。若指定为相对路径,会在默认备份目录下搜索备份集

DEVICE TYPE 指存储备份集的介质类型,包括DISK和TAPE,默认为 DISK

PARMS 只有对存储介质为TAPE时生效

RENAME TO 还原时是否进行重命名

OVERWRITE 还原时,遇到重名控制文件,是否进行覆盖

其他参数参考DMRMAN参数

恢复数据库

还原后需要使用RECOVER命令来进行恢复

RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' FROM BACKUPSET '/dm8/data/DAMENG/bak/db_full_bak_20220719';

还原和恢复表空间

还原

RESTORE DATABASE '/dm8/data/DAMENG/dm.ini' TABLESPACE MAIN FROM BACKUPSET '/dm8/data/DAMENG/bak/db_full_bak_20220719';

恢复

RECOVER DATABASE '/dm8/data/DAMENG/dm.ini' TABLESPACE MAIN;

注意:表空间还原后,表空间的状态为RES_OFFLINE,并标记FIL_TS_RECV_STATE_RESTORED,表示数据已经还原,但不完整

还原归档和修复归档

还原归档

RESTORE ARCHIVE LOG FROM BACKUPSET '/dm8/data/DAMENG/bak/all_arch_bak_20220719' TO ARCHIVEDIR '/dm8/arch/' OVERWRITE 2;

OVERWRITE 取值为1、2、3  1:跳过已存在的日志2直接报错返回 3覆盖

修复归档

REPAIR ARCHIVELOG DATABASE '/dm8/data/DAMENG/dm.ini';

更多信息请访问达梦官网

达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台


版权声明:本文为a_zhangxuan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。