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

求助:Oracle 11.2.0连接报错DPY-4011(Python 3.10.3)

解决Oracle 11.2.0与Python oracledb连接报错DPY-4011的问题

核心问题排查与修复步骤

1. 修正DSN格式错误

你定义的TEST变量格式不符合oracledb的DSN规范,错误格式会导致数据库无法解析连接请求,直接引发连接中断。正确格式如下:

  • 简易格式:"主机名:端口/服务名"
  • 规范生成方式:使用oracledb.makedsn()函数

示例修正:

# 方式1:直接写正确格式的DSN
TEST = "xxxx:XXX/XXX"

# 方式2:用makedsn生成(更规范)
TEST = oracledb.makedsn("xxxx", "XXX", service_name="XXX")

2. 修复代码语法错误

你的with语句末尾缺少冒号:,这会触发Python语法错误,间接导致连接流程异常。修正后代码:

import oracledb

# 正确生成DSN
TEST = oracledb.makedsn("xxxx", "XXX", service_name="XXX")

# 修正with语句语法
with oracledb.connect(user="xxx", password="xxx", dsn=TEST, disable_oob=True):
    print("连接成功")
    # 后续数据库操作逻辑

3. 适配Oracle 11g的oracledb配置

Oracle 11.2.0属于旧版本,oracledb默认的Thin模式对其支持有限,需切换到厚模式(Oracle Client模式):

  • 先安装匹配Oracle 11g的Oracle Instant Client(建议11.2或兼容版本)
  • 在代码中启用厚模式:
import oracledb

# 启用厚模式,指定Instant Client路径
oracledb.init_oracle_client(lib_dir="你的Oracle Instant Client安装路径")

TEST = oracledb.makedsn("xxxx", "XXX", service_name="XXX")
with oracledb.connect(user="xxx", password="xxx", dsn=TEST, disable_oob=True):
    # 执行数据库操作
    pass

4. 网络与权限排查

  • 确认数据库服务器端口(默认1521)对外开放,本地可通过telnet测试端口连通性
  • 检查数据库用户权限,确保该用户允许从当前IP地址发起连接
  • 验证密码正确性,避免特殊字符未正确转义的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:37:35