暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8达梦数据库备份还原常见问题

原创 达梦 2021-01-31
1921

怎么配置归档,有哪些注意事项?错误号 [-8216]

错误号 -8216:指定或者默认归档目录中找不到归档日志,缺少本地或者远程归档。

DM 数据库开启归档方式:

  • SQL 方式开启归档
alter database mount;
alter database add archivelog 'dest=/d07,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=200000';
alter database archivelog;
alter database open;
  • 图形界面方式开启归档:

选择【连接】,右键【管理服务器】,如下图所示:

管理服务器

进入系统管理页面,选择【配置】,点击【转换】,提示转换成功,如下图所示:

配置

进入归档配置页面,归档模式选择【归档】,添加归档参数,填写归档目录,选择归档类型,填写文件大小,空间大小限制(注意归档路径可以有多个)。如下图所示:

选择归档模式

返回系统管理页面,状态转换选择【打开】,重新打开数据库,如下图所示:

打开数据库

  • 编辑配置文件方式开启归档

首先修改 dm.ini 文件的 arch_ini 参数为 1,然后在 dm.ini 文件目录新建 dmarch.ini 文件,添加以下内容:

ARCH_WAIT_APPLY   = 1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /d07
ARCH_FILE_SIZE = 64
ARCH_SPACE_LIMIT = 0

重启数据库即可开启归档模式。

注意

需要注意配置 ARCH_SPACE_LIMIT 参数,为 0 是不限制归档大小,其它数值为限制归档量大小,单位是 MB。

可以通过定时作业设置调度执行的数据库增量/全量备份吗

可以通过设置 job 来备份,操作方法如下:

  • 图形界面创建 job 备份数据库:

全备

点击【作业-新建作业】,如下图所示:

新建作业

作业步骤-点击【添加】,如下图所示:

作业步骤

步骤类型选择【备份数据库】,填写备份路径(服务器上有权限的合适路径),备份方式选择【完全备份】。如下图所示:

新建作业步骤

作业调度-新建调度,如下图所示:

新建调度

填写调度名称,选择调度类型为【反复执行】,频率选择每 1 周的星期日,执行一次,执行时间为【23:00:00】。如下图所示:

作业调度常规

增量备份

新建作业,如下图所示:

新建作业

作业步骤-新建步骤,步骤类型选择【备份数据库】,备份方式选择:增量备份,增量备份需要指定基备份目录(其中需要有完全备份)。如下图所示:

增量备份

作业调度-新建调度填写名称,调度类型选择【反复执行】,频率选择每 1 周的周一到周六,每天执行 1 次,执行时间为【23:00:00】。如下图所示:

设置调度

  • 通过 SQL 创建 job 备份数据库
--周日全备
call SP_CREATE_JOB('backupfull',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('backupfull');
call SP_ADD_JOB_STEP('backupfull', 'step', 5, '01000/d07', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('backupfull', 'schedule', 1, 2, 1, 1, 0, '23:00:00', NULL, '2020-02-11 22:18:19', NULL, '');
call SP_JOB_CONFIG_COMMIT('backupfull');

--周一至周六增备
call SP_CREATE_JOB('backupinc',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('backupinc');
call SP_ADD_JOB_STEP('backupinc', 'step', 5, '11000/d07|/d07', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('backupinc', 'schedule', 1, 2, 1, 126, 0, '23:00:00', NULL, '2020-02-11 22:28:44', NULL, '');
call SP_JOB_CONFIG_COMMIT('backupinc');

执行备份命令报错[-137]

【问题现象】

Linux 环境,数据库实例服务开启状态下,使用 dmdba 用户在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-137]: 服务器正在运行或者存在其他进程正在操作同一个库。

报错信息

【问题原因】

DmServerDMSERVER 服务没有关闭。DMRMAN 是脱机备份,备份时一定要关闭数据库。

【解决方法】

使用 root 执行如下命令关闭数据库实例服务(DMSERVER 是数据库实例名)即可。

[root@localhost ~]# systemctl stop DmServiceDMSERVER.service

执行备份命令报错[-135]

【问题现象】

Windows 10 环境,数据库实例服务开启状态下,在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-135]: 创建信号量失败。

报错信息

【问题原因】

DmServerDMSERVER 服务没有关闭。

【解决方法】

使用 DM 服务查看器关闭 DmServerDMSERVER 服务。

周期性备份脚本

--周日全备
call SP_CREATE_JOB( 'back_up_db_full',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('back_up_db_full');
call SP_ADD_JOB_STEP('back_up_db_full', 'back_up_full_on_sunday', 5, '01000E:\dbdata\DAMENG\bak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_up_db_full', 'back_full_once_a_week', 1, 2, 1, 1, 0, '20:20:20', NULL, '2019-11-08 16:20:41', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_up_db_full');

--周一至周六增备
call SP_CREATE_JOB('back_up_db_incr',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('back_up_db_incr');
call SP_ADD_JOB_STEP('back_up_db_incr', 'back_db_inc_days', 5, '11100E:\dbdata\DAMENG\bak|E:\dbdata\DAMENG\bak', 1, 2, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('back_up_db_incr', 'once_a_day', 1, 2, 1, 126, 0, '20:20:20', NULL, '2019-11-08 16:22:28', NULL, '');
call SP_JOB_CONFIG_COMMIT('back_up_db_incr');

也可以通过定时作业设置调度执行的。

表空间还原时报错:表空间名不能为空

在进行表空间备份还原时,表空间名如果未选择,直接进行还原,会报【表空间名不能为空】错误,并且在查看还原表空间的 DDL 时发现,表空间名不存在。

报错信息

DDL语句

正确还原表空间的方法如下:

在联机还原表空间时,选择需要还原的表空间备份,在表空间名选项中,下拉框中选择需要还原的表空间名即可进行还原。

选择表空间名

还原成功后,会弹出提示界面。

恢复成功

自带的备份还原工具与 dmrman 的区别

DM 数据库​安装完成后,在程序目录 bin 下有自带的 dmbackup/dmresore 工具,这两个工具一般用来选择 DM 数据库早期的备份还原,不是基于备份集组织的备份还原,即适用于 V1.0 版本备份还原。

​而新版 DM 数据库引入了备份片、元数据文件、备份集等概念,提供第三方备份(TAPE 类型)接口,支持 RAC 备份,使用 DMRMAN 工具进行脱机备份还原,即 V2.0 版本备份还原。综合性能和灵活性优先推荐使用 V2.0 版本备份还原方式。

查看当前环境备份最便捷的方式是,查看每一次备份目录下是否有 .meta 元数据文件,如果有则是 V2.0 备份集备份方式,如果没有则是 V1.0 备份方式。

​具体使用方法和配置方法详见《DM 备份与还原手册》。(手册位于数据库安装路径 /dmdbms/doc/special 文件夹下)。

dmrman 的用途

类似于 Oracle 的 rman 工具,DM 数据库提供了脱机备份还原管理工具 dmrman,由它来统一负责库级脱机备份、脱机还原、数据库恢复等相关操作,该工具支持命令行指定参数方式和控制台交互方式执行,降低了用户的操作难度。

当安装 DM 数据库后,dmrman 可执行程序就位于程序目录 bin 下,直接使用 ./dmrman 就可以进入 dmrman 命令行交互环境中,具体使用方法和配置方法详见《DM 备份与还原手册》。(手册位于数据库安装路径 /dmdbms/doc/special 文件夹下)。

备份集还原报错[管道连接失败]

DM 数据库通过备份集方式进行的物理完全备份时,在 restore 或者 recover 阶段可能会报错 CMD END.CODE: [-7105],DESC: [管道连接超时] [-7105]: 管道连接超时。

遇到这样的问题一般是在 restore 阶段,需要检查两点:

  1. dmap 是否启动,需要使用 dmap 来进行备份集还原
  2. 使用正确的用户启动 dmap,需要保证存放备份集文件的备份集目录有读取权限

如果在 resore 阶段成功,在 recover 阶段报如上错误,则有可能是 dmap 问题,需要直接使用 dmrman 来进行 recover,命令如下:

./dmrman use_ap=2

参数 use_ap=2 表示直接使用 dmrman 来还原,默认为使用 dmap。

  • ​[-7105]: 管道连接超时,pipe connect timeout

【问题现象】

中标麒麟 7 环境,使用 root 用户启动 DMRMAN 工具,执行备份命令报错 [-7105]: 管道连接超时。

错误信息

【问题原因】

DM 数据库不是通过 root 用户安装,所以不能使用 root 启动 DMRMAN 工具,需要使用 DM 数据库安装用户启动。

【解决方法 1】

使用 DM 安装用户 dmdba 启动 DMRMAN 工具,执行备份命令即正常。

【解决方法 2】

需要启动 dmap 服务,可以查看 dmap 服务是否开启 ps -ef|grep dmap,启动 DMAP 服务在 /opt/dmdbms/bin 目录下,执行 ./dmap

具体使用方法和配置方法详见《DM 备份与还原手册》。(手册位于数据库安装路径 /dmdbms/doc/special 文件夹下)。

DAMP 服务:https://www.cndba.cn/dave/article/3579

dmap 启动报管道已存在连接失败

  • dmap 服务启动报错: [-7157] Name pipe exits

报错信息

提示管道文件已经存在。

  • 原因分析:dmap 服务没有正常关闭,如直接 kill dmap 服务,管道文件没有释放。
  • 解决方法:切换到 dmdbms/bin 下面,找到原来的管道文件,删除,重新启动 dmap 服务。

成功信息

  • dmap 服务的启动用户,必须是 DM 数据库的安装用户。例如:数据库是用 dmdba 用户安装的,那么就要用 dmdba 用户去启动;如果是 root 用户安装的,就用 root 用户去启动。
  • 如果命令配置了环境变量,则必须到 dmdbms/bin 目录下面,执行 ./dmap 启动 dmap 服务,否则备份数据库报错 Pipe connect failure!

启动服务

[-7103]: 创建命名管道失败

【问题现象】

中标麒麟 7 环境,在将 DM 数据库 bin 路径配置到环境变量 path 中,可以在任意目录下执行 DMRMAN 命令,但是进入 DMRMAN 后执行备份命令,会有如下报错 [-7103]: 创建命名管道失败。

创建失败

【问题原因】

当执行 DMRMAN 命令进行备份操作的时,会根据 DMRMAN 命令所在路径下寻找由 DM_PIPE_ 开头的管道文件,而不是通过 path 设置的环境变量路径来寻找对应的管道文件,DM_PIPE_ 一般是在 bin 目录下生成。

【解决方法 1】

使用 DM 数据库安装用户 dmdba 进入 DM 数据库安装路径 …/bin 目录下启动 DMRMAN 工具,执行备份脚本提示成功。

执行备份

【解决方法 2】

DM 数据库备份还原依赖 dmap 服务,必须启动,且一定要正确的用户启动。

  1. 如果 dmserver 是 dmdba 用户启动的,则 dmap 也要用 dmdba 用户启动。
  2. 前端命令启动方式
cd /home/dmdba/dmdbms/bin
./dmap
  1. 也可通过操作系统服务的方式启动
systemctrl start DmAPService

否则会报错,如下所示:

os_pipe2_create_server_with_name, name:[ /DM_PIPE_DMRMAN-3676_1_RD], error:[2]

假如 1、2 或者 1、3 都无问题,依旧报错

os_pipe2_create_server_with_name, name:[ /DM_PIPE_DMRMAN-3676_1_RD], error:[2]

可进行以下操作:

cd /home/dmdba/dmdbms/bin
rm -rf DM_PIPE_*

完成后再依次进行 1、2 或者 1、3 操作步骤。

[-8109]: 创建 dmap 管道失败

【问题现象】

中标麒麟 7 环境,dmdba 在 bin 目录下启动 DMRMAN 工具,执行备份命令报错 [-8109]: 创建 dmap 管道失败,请检查 dmap 是否已经启动。

失败信息

【问题原因】

没有启动 DmAPService 服务。

【解决方法】

使用 root 用户执行如下命令启动 DmAPService 服务,启动后执行备份命令正常。

[root@localhost ~]# systemctl start DmAPService.service

信息

如若 Windows 10 环境下,DmAPService 服务已启动,仍然报这个错误,请使用以管理员身份运行 cmd 命令;同样如果在控制台工具上也报此错误,请使用以管理员身份运行控制台工具。

管理员身份运行

备份报错 [-8084]: 起始 LSN [47619] 小于等于基备份结束 LSN [47631]

【解决方法】

未找到基备份,如果未指定基备份,DM 数据库会去默认的路径下查找基备份,默认路径可执行以下语句。

select para_name,para_value from v$dm_ini where para_name='BAK_PATH';

【解决方法】

增量备份时指基备份集,使用以下命令。

backup database increment with backupdir ‘基备份路径‘ backupset ‘备份路径’;

原文链接:https://blog.csdn.net/fffpppccc/article/details/104506961

同时注意全量备份后需要对数据操作一下,例如加一条数据之类的,要不然没有增量,自然不能增量备份。

备份的时候报错:创建 dmap 管道失败

【用户场景】

用户用的是 root 安装 DM 数据库,用 root 启动的 DM 数据库服务,用 root 做的备份操作,用 root 在 bin 目录下启动的 dmap 服务并且可以看到 dmap 服务已经启动。

【解决方法】

  1. 按照安装手册,用 dmdba 用户安装并启动 DM 数据库服务,用 dmdba 启动 dmap 服务,不要使用 root 用户。
  2. dm.ini 里面 BAK_USE_AP 改成 2 ,重启实例(如果您用 dmran 话,需要将 dmrman use_ap 修改为 2)。

Windows 下配置归档目录报错:归档目标无效

举例如下:

ALTER DATABASE ADD ARCHIVELOG 'DEST = d:/test, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';

报错:归档目标无效

【解决方法】

ALTER DATABASE ADD ARCHIVELOG 'DEST = D:/test, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';

修改 DEST 路径,建议选择路径的时候直接复制文件路径,不要自己写,避免写错。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论