Apache Airflow连接Oracle 19c报错DPY-3015寻求解决方案
解决Airflow Oracle Provider连接Oracle 19c时的DPY-3015错误
错误原因:python-oracledb的thin模式不支持Oracle 19c默认使用的SHA-512密码验证器(类型0x939),而Airflow Oracle Provider默认采用thin模式连接。
方案1:切换至python-oracledb厚模式(Thick Mode)
厚模式兼容所有密码验证器类型,但需依赖Oracle Instant Client:
- 安装对应Oracle 19c版本的Instant Client,配置系统环境变量(如
LD_LIBRARY_PATH或PATH)使其可被识别。 - 在Airflow的Oracle连接配置中,修改Extra字段添加启用参数:
{"thick_mode": true} - 若需指定Instant Client路径,补充参数:
{"thick_mode": {"lib_dir": "/path/to/instantclient_19_19"}}
方案2:修改Oracle用户密码验证器类型
生成兼容thin模式的SHA-1验证器(无需依赖客户端):
- 以DBA权限登录Oracle,执行命令更新目标用户密码(替换
<username>、<password>、<old_password>):
执行后用户会同时生成SHA-1和SHA-512验证器,thin模式将自动使用兼容的SHA-1版本。ALTER USER <username> IDENTIFIED BY <password> REPLACE <old_password>; - (可选)确保数据库参数配置兼容:
修改后需重启数据库生效。ALTER SYSTEM SET SQLNET.ALLOWED_LOGON_VERSION_SERVER = 11 SCOPE=SPFILE;
方案3:升级python-oracledb版本
升级至最新稳定版(如2.5+),新版本对密码验证器的支持做了优化:
pip install --upgrade python-oracledb
内容的提问来源于stack exchange,提问作者Mahardian Yusuf Gintz
相关产品推荐
相关产品推荐

