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
解决建议
匹配Instant Client与Python/dbt位数
你当前使用的是32位目录下的Instant Client,但Windows环境下的Python、dbt基本为64位版本,必须安装64位Oracle Instant Client,解压路径改为C:\Program Files\Oracle\instantclient_21_6(移除路径中的(x86))。修正环境变量并重启生效
- 将
ORACLE_HOME指向64位Instant Client的完整路径 - 在
PATH中添加该路径,且移至所有Oracle相关路径的最前端,避免版本冲突 - 重启终端、IDE及Dagster服务,确保环境变量重新加载
- 将
安装Visual Studio运行库
Oracle Instant Client依赖64位Visual Studio Redistributable(推荐2019及以上版本),下载对应版本安装即可。单独验证cx_Oracle连接
脱离dbt/Dagster环境,用简单脚本测试连接是否正常:import cx_Oracle # 替换为你的实际连接信息 connection = cx_Oracle.connect("用户名", "密码", "主机地址:端口/服务名") print(f"Oracle版本: {connection.version}") connection.close()脚本执行成功后,再回到dbt/Dagster运行任务。
核对依赖版本兼容性
确保cx_Oracle版本与Oracle Instant Client兼容(21.x客户端对应cx_Oracle 8.0及以上版本),同时dbt-oracle适配器版本需与cx_Oracle匹配。
内容的提问来源于stack exchange,提问作者Lorenzo
相关产品推荐
相关产品推荐

