达梦数据库管道超库还原后实例无法启动库还原后无法进行增量备份等问题的解决
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了达梦数据库管道超库还原后实例无法启动库还原后无法进行增量备份等问题的解决相关的知识,希望对你有一定的参考价值。
达梦DB遇到的若干障碍
- 管道连接超时
“管道连接超时”问题由于提示信息非常少,令人费解。尤其按照网上方法仍无法解决后,就更令人难以捉摸了。此问题还可从下列2方面进行排查:
1) 如果关闭了DMAPService,请看情况1;
2) 如果用root进行了DM7安装,请看情况2。
1.1. 情况1,报错信息含有“DM_PIPE_DMAP_RD”或“DM_PIPE_DMAP_WR”
这种情况,大多是因为关闭了DmAPService“数据库插件服务”:
DmAPService服务在关闭时,会自动删除”/dm7/bin/ DM_PIPE_DMAP_WR”以及”/dm7/bin/ DM_PIPE_DMAP_RD”这2个文件。但是在执行备份时,dmrman需要这2个文件才可正常工作。如果文件不存在,就会报前述的错误。因此,调用dmrman进行备份时,切勿关闭DmAPService服务。如果关闭了,也不要紧,启动DmAPService后,它会自动创建这2个文件。然后再尝试进行dmrman备份即可正常执行。
1.2. 情况2,只报错“管道连接超时”
如果DmAPService服务没有关闭,报错信息就会非常单纯,具体如下:
解决办法:执行su – dmdba,然后执行dmrman就可以了。
原因分析:这种情况很可能是因为安装过程中混用了root权限。
进一步观察,发现在root下安装完毕DM7时,安装程序会自动创建dmdba账户(试了很多次才发现密码为空)。如果通过root强制修改dmdba密码后执行dmrman,那么,恭喜你要掉进第3个坑了(后面介绍)。
此时,应执行su – dmdba命令。于是,一个不寻常的情况出现了,前面不再是熟悉的[dmdba@xxx]$,而是:
这个比较唬人,但是影响不大。出现-sh-4.1$主要是因为安装时只创建了/home/dmdba空目录,其下没有任何配置文件导致的。大胆执行dmrman命令就可以顺利完成备份了:
1.3. 修改dmdba密码的后果
在解决问题的过程中也尝试过su -dmdba的方式,但是被那串奇怪的开头给唬住了:
于是,注销、切换用户希望进入dmdba账户下进行操作。然而尝试了多个密码均无法登入。遂切回root->passwd dmdba修改密码->再次su – dmdba后,发现竟然没让输密码!!又出现了那串奇怪的开头。好吧,注销、进入dmdba,执行dmrman,惊喜的是“管道超时”消失了,但是新的错误出来了。一旦修改了dmdba的密码,即便在root下 su – dmdba,再次执行dmrman也于事无补了,都会报出如下的错误:
所以,一旦改了密码,就不容易找到解决办法了。
1.4. “DM_PIPE_DMAP_RD”和“DM_PIPE_DMAP_WR”的作用
“DM_PIPE_DMAP_RD”和“DM_PIPE_DMAP_WR”这两个文件对于DmAPService来说,有一个比较有意思的现象:
如果操作系统意外关机,会导致这2个文件残留。而后,就会导致DmAPService无法启动。报错提示“管道文件已经存在”。这种情况下,只需手动将”/dm7/bin/ DM_PIPE_DMAP_WR”以及”/dm7/bin/ DM_PIPE_DMAP_RD”删除,即可正常启动DmAPService。启动后,它又会自动创建这2个文件。
dmrman在执行过程中需要读取这2个文件。如果此前关闭了DmAPService,就会导致“DM_PIPE_DMAP_RD”和“DM_PIPE_DMAP_WR”被自动删除。造成dmrman无法正常运行,报出如“情况1”所示的错误。当启动DmAPService后,这2个文件会被自动创建,再次执行dmrman,就不报错了。
1.5. 导致“DM_PIPE_DMAP_RD”和“DM_PIPE_DMAP_WR”遗留的原因
通过服务管理器关闭DmAPService后,其会自动删除“DM_PIPE_DMAP_RD”和“DM_PIPE_DMAP_WR”两个文件。但是,如果虚机突然断电或者在未停止DmAPService的情况下手动关机,也会导致这两个文件遗留。因此,正确的关机姿势是:停止DmAPService服务、关闭虚机。
1.6. “DM_PIPE_DMAP_RD”和“DM_PIPE_DMAP_WR”遗留还会导致哪些问题
导致界面进行备份时出现管道超时。这种情况下,有两种解决办法:
1) 本文前述的方法
2) 如果无效,请去掉备份界面的“使用DMAP”方式: - 数据库还原后实例无法启动
2.1. 解决办法
导致实例无法启动的原因是由于数据库恢复后下列文件访问权限被置为root,导致dmdba无法访问。利用chown dmdba:dinstall /xxx将下列目录置为dmdba权限即可启动(数据库目录为‘/dm7/data/DM01/’):
chown dmdba:dinstall /dm7/data/DM01/DM0101.log
chown dmdba:dinstall /dm7/data/DM01/DM0102.log
chown dmdba:dinstall /dm7/data/DM01/dm_service.prikey
chown -R dmdba:dinstall /dm7/data/DM01/HMAIN
chown dmdba:dinstall /dm7/data/DM01/MAIN.DBF
chown dmdba:dinstall /dm7/data/DM01/ROLL.DBF
chown dmdba:dinstall /dm7/data/DM01/SYSTEM.DBF
2.2. 原因分析
恢复前目录权限如下:
恢复后目录权限如下:
通过对比,可发现,前述7个文件及目录,访问权限被置为root,从而导致DB服务无法访问关键文件,无法启动。 - 还原后无法增量备份
解决方法同2.1.
以上是关于达梦数据库管道超库还原后实例无法启动库还原后无法进行增量备份等问题的解决的主要内容,如果未能解决你的问题,请参考以下文章