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

使用SQLAPI++连接C++与Oracle时出现TNS及ORA-01017错误如何解决

根因前置判断

空用户名密码时返回ORA-01017: Invalid username / password说明TNS连接串本身合法,客户端已经成功和目标Oracle监听器建立通信、且找到对应服务名实例,首次出现的TNS:could not resolve the connect identifier specified报错与连接串语法无关,大概率为偶发网络波动、客户端库加载异常或账号校验触发的前置误报。

排查解决步骤
  • 校验账号有效性
    用代码中填写的用户名、密码,通过本地sqlplus工具执行以下命令验证登录能力:
    sqlplus UsrName/Password@"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=192.168.1.XXX) (PORT=1521))(CONNECT_DATA = (SERVICE_NAME = SERVICE_NAME )))"
    
    若登录失败,直接确认账号密码是否正确、账号是否被锁定、是否允许从当前客户端IP访问。
  • 修正连接串语法
    检查当前连接串的括号匹配问题,避免多余或缺失的括号导致解析异常,也可以改用EZCONNECT短连接串简化格式,降低语法出错概率:
    con.Connect("192.168.1.XXX:1521/SERVICE_NAME", "UsrName", "Password", SA_Oracle_Client);
    
    使用短串前确认Oracle客户端sqlnet.ora配置中NAMES.DIRECTORY_PATH参数包含EZCONNECT选项。
  • 特殊字符转义处理
    如果密码包含@、/、(、)等特殊字符,需要用双引号包裹密码字符串,或在代码中对特殊字符做转义处理。
  • 确认客户端环境一致性
    检查运行程序的环境变量ORACLE_HOME、TNS_ADMIN配置正确,若本地安装了多个Oracle客户端,确保SQLAPI++加载的oci.dll与sqlplus测试用的客户端版本一致,避免不同客户端配置不互通导致偶发解析失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:06:06