MacOS下Python通过Oracle Instant Client TCPS连接报ORA-29024错误如何解决
ORA-29024 错误排查及解决方案
一、现有配置修正
首先排查已提交配置中的明显错误:
- 修正
sqlnet.ora中WALLET_LOCATION的DIRECTORY参数,将示例路径/instantclient_19_8/network/admin替换为你的instantclient下network/admin目录的实际绝对路径,Windows系统注意用反斜杠,Linux/macOS用正斜杠 - 修正
tnsnames.ora中{SVC_NAME的语法错误,补充闭合的}为{SVC_NAME};如果你的Python代码中已经硬编码了完整DSN,tnsnames.ora不是必须配置项,可忽略该文件 - 验证Pycharm中
TNS_ADMIN环境变量是否生效,可在代码开头加一行import os; print(os.getenv('TNS_ADMIN'))运行确认输出路径正确,避免IDE环境变量未加载的问题 - 修正Python代码中
ds n的笔误为dsn,同时确认DSN内的HOST、PORT、SERVICE_NAME与数据库实际配置完全一致 - 如果你配置了
SQLNET.WALLET_OVERRIDE = TRUE,且DBA提供的钱包中已存储了用户认证凭证,连接时可以不用传入user和password参数,避免密码输入错误
二、核心错误原因排查
ORA-29024: Certificate validation failure本质是客户端不信任数据库服务端返回的SSL证书,优先排查以下两点:
- 确认DBA提供的钱包内是否已包含数据库服务端SSL证书的根CA/中间CA证书,多数情况下DBA提供的钱包仅包含用户认证凭证,未添加服务端信任根
- 在
sqlnet.ora中新增配置指定SSL版本,避免版本不兼容问题:
若数据库使用其他TLS版本,替换为对应版本号即可SSL_VERSION = 1.2
三、orapki工具使用说明
- Oracle Instant Client默认不带orapki工具,你可以下载对应版本的完整Oracle Database Client(选择管理员安装或自定义安装选中orapki组件),或找DBA提取orapki二进制文件及依赖库,放到Instant Client根目录下即可运行
- 只要你持有钱包密码(
ewallet.p12的密码,由DBA创建时设置),或持有自动登录钱包文件cwallet.sso的读取权限,即可自行操作钱包,不需要DBA协助,常用操作命令如下:- 查看钱包内所有证书:
orapki wallet display -wallet [钱包目录绝对路径] - 向钱包内添加服务端根CA证书:
orapki wallet add -wallet [钱包目录绝对路径] -trusted_cert -cert [根证书文件路径] - 添加完成后自动登录钱包
cwallet.sso会同步更新,无需额外配置
- 查看钱包内所有证书:
四、临时快速验证方案
如果暂时无法完成钱包配置,测试环境下可修改Python代码直接指定SSL参数跳过钱包配置:
import cx_Oracle # 替换为实际的数据库连接参数 dsn = """(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCPS)(HOST={HOST_ADDRESS})(PORT={PORT_NBR})))(CONNECT_DATA=(SERVICE_NAME={SVC_NAME})))""" cx_Oracle.init_oracle_client(lib_dir='[你的instantclient实际路径]/instantclient_19_8') # 连接时新增SSL参数,ssl_server_cert_dn找DBA获取服务端证书的主体DN ora_conn = cx_Oracle.connect( user=usr, password=pw, dsn=dsn, encoding="UTF-8", ssl_context=cx_Oracle.SSLContext(cx_Oracle.SSL_VERSION_TLS_1_2), ssl_server_cert_dn="CN=服务端证书DN,OU=xxx,O=xxx" ) # 仅测试环境临时使用,生产环境禁止关闭证书验证 # ora_conn = cx_Oracle.connect(user=usr,password=pw,dsn=dsn,encoding="UTF-8",ssl_verify=False) cursor = ora_conn.cursor()
内容的提问来源于stack exchange,提问作者acvbasql
相关产品推荐
相关产品推荐

