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

Apache Airflow 3.0.6 Oracle连接配置异常排查求助

解决Airflow 3.0.6 Docker环境中Oracle连接的两个问题

问题描述

  • 在DAG文件中执行from airflow.providers.oracle.hooks.oracle import OracleHook时,触发ModuleNotFoundError: No module named 'airflow.providers.oracle'错误
  • Airflow后台Admin->Connections->Add Connections页面中,找不到Oracle连接类型选项

配置问题排查

从提供的配置文件中,发现三个核心问题:

  1. 依赖重复安装:Dockerfile中先单独用pip安装了Oracle provider等包,之后又通过requirements.txt重复安装相同依赖,容易导致安装冲突或失败
  2. Oracle Provider版本不兼容:使用的apache-airflow-providers-oracle==4.2.0不支持Airflow 3.0.x版本,版本匹配错误
  3. 缺少Oracle客户端依赖:cx_Oracle需要Oracle Instant Client才能正常工作,Dockerfile中未安装该组件

修复步骤

1. 修正Dockerfile,添加Oracle客户端依赖并简化安装逻辑

更新后的Dockerfile如下:

FROM apache/airflow:3.0.6

USER root

# Install Java and build tools
ENV DEBIAN_FRONTEND=noninteractive

# Update apt and install required packages
RUN apt-get update --allow-releaseinfo-change && \
    apt-get install -y \
        default-jdk \
        build-essential \
        python3-dev \
        wget \
        curl \
        unzip \
        libaio1 \  # Oracle客户端依赖库
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 安装Oracle Instant Client(cx_Oracle运行必需)
RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
    unzip instantclient-basiclite-linuxx64.zip && \
    mkdir -p /opt/oracle && \
    mv instantclient_* /opt/oracle/instantclient && \
    rm instantclient-basiclite-linuxx64.zip && \
    echo "/opt/oracle/instantclient" > /etc/ld.so.conf.d/oracle-instantclient.conf && \
    ldconfig

# Fix ownership for Airflow directories
RUN mkdir -p /opt/airflow/plugins /opt/airflow/config \
    && chown -R airflow:root /opt/airflow/dags /opt/airflow/plugins /opt/airflow/logs /opt/airflow/config

USER airflow

# 统一通过requirements.txt安装所有依赖,避免重复
COPY requirements.txt /requirements.txt
RUN pip install --no-cache-dir --trusted-host pypi.org --trusted-host files.pythonhosted.org -r /requirements.txt

2. 更新requirements.txt中的Oracle Provider版本

将Oracle相关依赖更新为适配Airflow 3.0.6的版本:

# Oracle
apache-airflow-providers-oracle==5.1.0  # 兼容Airflow 3.0.x的最低版本
cx_Oracle==8.3.0     # Oracle DB driver

3. 重新构建镜像并重启服务

执行以下命令完成部署:

# 停止当前运行的Airflow服务
docker-compose down

# 重新构建自定义镜像
docker-compose build

# 启动更新后的服务
docker-compose up -d

4. 验证修复结果

  • 进入任意Airflow服务容器(如airflow-worker),执行pip list | grep airflow-providers-oracle,确认版本为5.1.0
  • 测试DAG中的OracleHook导入语句,确认不再报错
  • 刷新Airflow后台的连接添加页面,确认Oracle连接类型已出现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 05:40:56