我们在使用DMRMAN工具脱机备份时总是遇到各种问题,今天整理了以下常见问题及解决方法,供大家参考。
常见错误
[-7103]:创建命名管道失败
【问题现象】:
中标麒麟7环境,将达梦数据库bin路径配置到环境变量path中,可以在任意目录下执行DMRMAN命令,但是进入DMRMAN后执行备份命令,会有如下报错:[-7103]:创建命名管道失败。
【问题原因】:
当执行DMRMAN命令进行备份操作时,会根据DMRMAN命令所在路径寻找DM_PIPE_开头的管道文件,而不是通过path设置的环境变量路径来寻找对应的管道文件,DM_PIPE_一般是在bin目录下生成。
【解决方法】:
使用DM安装用户dmdba进入DM安装bin目录下启动DMRMAN工具,执行备份脚本提示成功。
[-7105]:管道连接超时
【问题现象】:
中标麒麟7环境,使用root用户启动DMRMAN工具,执行备份命令报错[-7105]:管道连接超时。
【问题原因】:
root用户不是DM数据库安装用户,不能使用root启动DMRMAN工具。
【解决方法】:
使用DM安装用户dmdba启动DMRMAN工具,执行备份命令即正常。
[-8109]:创建dmap管道失败,
请检查dmap是否已经启动
【问题现象】:
中标麒麟7环境,dmdba在bin目录下启动DMRMAN工具,执行备份命令报错[-8109]:创建dmap管道失败。
【问题原因】:
没有启动DmAPService服务。
【解决方法】:
使用root用户执行如下命令启动DmAPService服务。启动后执行备份命令正常。
[root@localhost~]# systemctl start DmAPService.service
如若Windows10环境下,DmAPService服务已启动,仍然报这个错误,请使用以管理员身份运行cmd命令;同样如果在控制台工具上也报此错误,请使用以管理员身份运行控制台工具。
[-137]:服务器正在运行或者
存在其他进程正在操作同一个库
【问题现象】:
中标麒麟7环境,数据库实例服务开启状态下,使用dmdba用户在bin目录下启动DMRMAN工具,执行备份命令报错[-137]:服务器正在运行或者存在其他进程正在操作同一个库。
【问题原因】:
DmServerDMSERVER服务没有关闭。DMRMAN是脱机备份,备份时一定要关闭数据库。
【解决方法】:
使用root执行如下命令关闭数据库实例服务(DMSERVER是数据库实例名)即可。
[root@localhost~]# systemctl stop DmServiceDMSERVER.service
[-135]:创建信号量失败
【问题现象】:
Windows10环境,数据库实例服务开启状态下,在bin目录下启动DMRMAN工具,执行备份命令报错[-135]:创建信号量失败。
【问题原因】:
同上,DmServerDMSERVER服务没有关闭。
【解决方法】:
使用DM服务查看器关闭DmServerDMSERVER服务。
DMRMAN备份使用总结
最后,我们来总结一下,使用DMRMAN注意事项:
1. DMRMAN是脱机备份工具,使用其备份时需关闭数据库实例;
2. 默认DMRMAN使用DmAPService服务备份数据库,所以使用DMRMAN需保证DmAPService是开启状态。
管道连接失败相关错误基本上都与DmAPService服务相关。在排查DmAPService已经是启动状态,仍报此类错误的情况下,可以尝试重启DmAPService服务,Windows系统可尝试使用“以管理员身份运行”。
3. 启动DMRMAN需要使用DM安装用户在安装bin目录下启动。
注意:以上是DMRMAN备份在DM8版本中的问题现象,DM7版本DMRMAN备份错误码和错误描述会有所差异,但解决思路类同。比如[-7109]:管道连接失败,问题原因可能是DmAPService没有开启或没有在bin目录下启动DMRMAN;DM7启动DmAPService服务可能报错[-7157]:管道文件已存在,这时需要删除bin目录下DM_PIPE_DMAP_LSNR_RD和DM_PIPE_DMAP_LSNR_WR两个文件。