You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipelines中cx_Oracle连接Oracle遇DPI-1047错误求助

解决cx_Oracle连接Oracle时的DPI-1047错误

你遇到的DPI-1047错误,核心原因是系统找不到libclntsh.so文件——虽然你安装了Oracle Instant Client,但包里只有带版本号的libclntsh.so.21.1,没有cx_Oracle需要的通用软链接,同时可能存在运行时库路径未正确配置的问题。

以下是修复后的完整Dockerfile及调整说明:

修改后的Dockerfile

FROM python:3.9-slim-buster

# 合并安装依赖,清理apt缓存减小镜像体积
RUN apt-get update && apt-get install -y git telnet gcc wget unzip libaio1 && rm -rf /var/lib/apt/lists/*

# 下载并解压Oracle Instant Client
RUN wget https://download.oracle.com/otn_software/linux/instantclient/215000/instantclient-basic-linux.x64-21.5.0.0.0dbru.zip
RUN unzip instantclient-basic-linux.x64-21.5.0.0.0dbru.zip && \
    # 创建libclntsh.so软链接,匹配cx_Oracle的查找要求
    ln -s /instantclient_21_5/libclntsh.so.21.1 /instantclient_21_5/libclntsh.so && \
    # 配置系统库路径并刷新
    sh -c "echo /instantclient_21_5 > /etc/ld.so.conf.d/oracle-instantclient.conf" && \
    ldconfig

# 清理临时文件和不需要的工具
RUN apt-get purge -y unzip && rm instantclient-basic-linux.x64-21.5.0.0.0dbru.zip

# 设置运行时库路径环境变量,确保进程能加载到Oracle库
ENV LD_LIBRARY_PATH=/instantclient_21_5:$LD_LIBRARY_PATH

CMD ["/bin/sh"]

关键调整点

  • 创建软链接:手动将带版本号的libclntsh.so.21.1链接为libclntsh.so,满足cx_Oracle的文件查找规则。
  • 设置LD_LIBRARY_PATH:明确指定运行时库路径,避免部分场景下ldconfig配置未生效的问题。
  • 优化镜像构建:合并安装命令、清理apt缓存,减少镜像层数和体积。

内容的提问来源于stack exchange,提问作者Maria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 21:45:32