Oracle客户端libclntsh.so.12.1缺失ons_init_wconfig_ctx符号问题求助
问题原因
该错误是由于libclntsh.so.12.1依赖的Oracle Notification Service(ONS)相关库未被正确加载,导致缺失ons_init_wconfig_ctx符号。
具体解决步骤
检查ONS库是否存在
确认Oracle客户端目录下是否有libons.so(或带版本号的libons.so.12.1),路径通常为/oracle-client/12.1.0.1/x86_64-linux-2.6-libc6/libons.so。若文件不存在,说明Oracle客户端安装不完整,需重新安装包含ONS组件的客户端版本。调整LD_LIBRARY_PATH环境变量
确保Oracle客户端的lib目录被加入到LD_LIBRARY_PATH中,执行以下命令临时生效:export LD_LIBRARY_PATH=/oracle-client/12.1.0.1/x86_64-linux-2.6-libc6:$LD_LIBRARY_PATH如需永久生效,将上述命令添加到用户的
~/.bashrc或系统的/etc/profile文件中。验证库依赖关系
使用ldd命令检查libclntsh.so.12.1的依赖状态:ldd /oracle-client/12.1.0.1/x86_64-linux-2.6-libc6/libclntsh.so.12.1查看输出中
libons.so相关条目,若显示"not found",说明路径配置有误,需确保该库在LD_LIBRARY_PATH可访问的路径下。重置Oracle客户端环境配置
若之前的环境配置被修改,重新执行Oracle客户端的环境脚本(通常为/oracle-client/12.1.0.1/x86_64-linux-2.6-libc6/bin/oraenv或coraenv),确保所有依赖库路径正确设置。检查Python Oracle驱动兼容性
若使用cx_Oracle等Python驱动,确认其版本与Oracle客户端12.1.0.1兼容。驱动版本不匹配可能引发库链接问题,建议使用对应版本的驱动。
内容的提问来源于stack exchange,提问作者svk

