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

Windows环境下Dagster+DBT连接Oracle遇DPI-1047错误求助

Windows端dbt+Dagster连接Oracle报错排查

错误信息

ERROR  oracle adapter: Got an error when attempting to open an Oracle connection:
'DPI-1047: Cannot locate a 64-bit Oracle Client library:
"failed to get message for Windows Error 126".
See https://cx-oracle.readthedocs.io/en/latest/user_guide/installation.html for help'

INFO  oracle adapter: Rolling back transaction.

已执行操作

  • 下载Oracle Instant Client并解压至C:\Program Files (x86)\Oracle\instantclient_21_6
  • 设置ORACLE_HOME和PATH环境变量
  • 安装并导入cx_Oracle
  • 初始化cx_Oracle

解决建议

  1. 匹配Instant Client与Python/dbt位数
    你当前使用的是32位目录下的Instant Client,但Windows环境下的Python、dbt基本为64位版本,必须安装64位Oracle Instant Client,解压路径改为C:\Program Files\Oracle\instantclient_21_6(移除路径中的(x86))。

  2. 修正环境变量并重启生效

    • 将ORACLE_HOME指向64位Instant Client的完整路径
    • 在PATH中添加该路径,且移至所有Oracle相关路径的最前端,避免版本冲突
    • 重启终端、IDE及Dagster服务,确保环境变量重新加载
  3. 安装Visual Studio运行库
    Oracle Instant Client依赖64位Visual Studio Redistributable(推荐2019及以上版本),下载对应版本安装即可。

  4. 单独验证cx_Oracle连接
    脱离dbt/Dagster环境,用简单脚本测试连接是否正常:

    import cx_Oracle
    # 替换为你的实际连接信息
    connection = cx_Oracle.connect("用户名", "密码", "主机地址:端口/服务名")
    print(f"Oracle版本: {connection.version}")
    connection.close()
    

    脚本执行成功后,再回到dbt/Dagster运行任务。

  5. 核对依赖版本兼容性
    确保cx_Oracle版本与Oracle Instant Client兼容(21.x客户端对应cx_Oracle 8.0及以上版本),同时dbt-oracle适配器版本需与cx_Oracle匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:03:22