达梦logminer归档日志生产环境libdmlogmnr_client.so: libdmdpi.so: cannot open shared object file: No such file x

1. 问题描述

本地windows进行达梦logminer日志分析正常,部署到线上环境通过kafka-connect进行操作后报错

java.lang.UnsatisfiedLinkError: /app/data/kafka/kafka_2.13-3.4.0/dmlib/bin/libdmlogmnr_client.so: libdmdpi.so: cannot open shared object file: No such file or directory
        at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
        at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2445)
        at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2501)
        at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2700)
        at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2662)
        at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830)
        at java.base/java.lang.System.loadLibrary(System.java:1873)

 该问题通过网上资料查询就是动态文件未正常获取到,所以我进行了系统环境变量的配置

export LD_LIBRARY_PATH=/your_oath/dm/bin:$LD_LIBRARY_PATH 

,一般来说到这里就解决问题了,但是程序运行依旧报错,我反复在排查文件读写权限以及进程运行权限、环境变量是否配置成功的情况;有以上问题大家也可以排查,但是我确定了我的文件都是开放所有用户,环境变量也配置成功了;

2. 解决方式、

通过配置环境变量、检查文件权限、检验.so文件完整性依旧没发现问题,最后在kafka-connect的bin目录下connect-distributed.sh文件中,增加配置

export LD_LIBRARY_PATH=/app/data/kafka/kafka_2.13-3.4.0/dmlib/bin:$LD_LIBRARY_PATH

运行成功;一开始其实也百度到了这个配置,但是它是这么配置的:

JAVA_TOOL_OPTIONS=-Djava.library.path=达梦bin路径

作为java运行参数去配,运行参数也确实配进去了但是并没有效果,运维大哥修改为以上后就成功了;

3. 总结

        线上环境很费排查精力和时间,对自身能力还有很大考验,还得多多学习。准确定位到问题后逐个去排查,此次问题耗费三天才解决。有很多原因导致卡顿,比如上述配置第一步,在同事的电脑上直接就成功了,所以我才会一直想到底是为什么A服务器能生效B服务器不生效,反复去校验权限问题没有进展。

        排查问题也要具备相关思路,报错是从下往上看,因为后者,导致的前者,比如因为此处的因为动态库文件加载出错,所以导致后面LogmnrDll的初始化报错;

        附上问题部分截图,希望对大家有帮助,对了,达梦的归档日志分析,logmnr包所在的服务器,必须也是归档文件所在的服务器,否则logmnrDll.addFile()方法会报错。这个和oracle不一样。

学而不思则罔,思而不学则殆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值