故障011:dmap服务缺失libnsl.so修复
- 1. 问题描述
- 2. 解决方法
- 2.1 初步分析
- 2.2 动手实操
- 2.2.1 模糊搜索大法
- 2.2.2 僵桃代李大法
DM技术交流QQ群:940124259
1. 问题描述
今天遇二期XC环境,达梦DM 7.6的DmAPService备份辅助进程服务无法启动,导致近一个月的定时备份作业执行失败,没有备份是多么可怕的活儿。
幸好王大佐发现及时,让我过去瞅瞅问题咋样,试试可否解决!毕竟那专用机环境操作本来就不方便,尽量从简搞定。
报错信息:缺失libnsl.so.1链接库
经过搜索大法了解libnsl是Unix/Linux系统下的一个开源C语言库,全称为“network services library”,提供对许多网络服务程序的网络接口调用。
其主要功能包括获取主机名、网络名称解析、套接字操作、RPC服务等等。很显然dmap对这个依赖特别关键。
2. 解决方法
2.1 初步分析
当时在现场根本没有多想,什么搜索大法都是后话,只是为了在解决问题后,更深入了解这玩意到底有啥作用(因为安装Oracle时经常遇到它安装依赖),对于专业搞C/C++开发的人来说,再熟悉不过。
一般情况下,面对缺少动态链接库这事,首先立马联想现役操作系统是否存在类似libnsl.so的链接文件,利用find命令和rpm -qa模糊搜索一番(麒麟V10),如果能找得到,万幸,推测系统自带的libnsl版本过高,默认名称不对应,此时可以通过软链接方法解决(当然得尝试)。
软链接方法行不通,再找麒麟系统镜像打上(专用机环境比较麻烦,省略)。
2.2 动手实操
2.2.1 模糊搜索大法
找到类似的名称,再对类似名称的文件找到真实的实体文件.
find / -name "libnsl"
ls -l /usr/lib64/libsnl.2
2.2.2 僵桃代李大法
通过软链接代替libnsl依赖
in -s /usr/lib64/libnsl.so.2.0.0 /usr/lib64/libnsl.so.1
再尝试启动DmAPService服务
cd /opt/dmdbms/bin/bin
./DmAPService start
再手工调度一次定时备份,备份成功,收工。。。。。。。