ORA-01017 .NET 程序连接数据库失败

遇到问题

之前因为项目需求使用 C#/.NET 开发了一个过磅客户端,客户端需要与 Oracle 数据库建立链接存储实时过磅信息。

随着项目的推进,越来越多的新厂部署了过磅客户端,偶尔在一个新厂遇到了数据库链接失败的问题,报错信息如下:

ORA-01017: invalid username/password; logon denied     在 OracleInternal.ConnectionPool.PoolManager`3.Get(ConnectionString csWithDiffOrNewPwd, Boolean bGetForApp, CriteriaCtx criteriaCtx, String affinityInstanceName, Boolean bForceMatch)
   在 OracleInternal.ConnectionPool.OraclePoolManager.Get(ConnectionString csWithNewPassword, Boolean bGetForApp, CriteriaCtx criteriaCtx, String affinityInstanceName, Boolean bForceMatch)
   在 OracleInternal.ConnectionPool.OracleConnectionDispenser`3.Get(ConnectionString cs, PM conPM, ConnectionString pmCS, SecureString securedPassword, SecureString securedProxyPassword, CriteriaCtx criteriaCtx)
   在 Oracle.ManagedDataAccess.Client.OracleConnection.Open()
复制代码

非常奇怪的是:.NET 程序无法正常连接数据库,但是使用 PL/SQL 依旧可以正常连接。

寻找解决方案

根据主要错误信息百度 ORA-01017: invalid username/password; logon denied ,从大量结果中得到以下可能:

  1. 密码确实有误:可修改密码 alter user 用户名 identified by 新密码;
  2. 密码大小写问题:可执行 alter system set sec_case_sensitive_logon = FALSE;
  3. 账户被锁定:可执行 alter user 用户名 account unlock;
  4. 无权限:可执行 grant connect, resource, dba to 用户名;

还有其他修改 java.security 等无意义的解决方法。然而尝试了上面全部的方法都未能解决问题,.NET程序还是报同样的错误 ORA-01017: invalid username/password; logon denied

完美解决

一两个小时过去了,问题依旧没有得到解决。

既然百度无法解决问题,那自然是选择使用谷歌,然而由于某些原因无法直接访问,因此选择使用微软的必应国际版,同时更换了搜索词 .net ORA-01017: invalid username/password; logon denied

很快便找到了问题根源:FIPS 兼容性问题。

FIPS:全称是 Federal Information Processing Standard ,中文名叫联邦信息处理标准,FIPS 是由两个政府主体开发的标准。一个是美国国家标准和在美国境内的技术。另一种是通信安全机构,在加拿大。FIPS 是建议或要求使用 (美国或加拿大) 的联邦政府操作 IT 系统中的标准。

.NET 程序可以通过再其 .config文件中添加以下配置来关闭 FIPS 校验:

<configuration>  
    <runtime>  
        <enforceFIPSPolicy enabled="false"/>  
    </runtime>  
</configuration>  
复制代码

同样可以通过修改注册表的方式关闭 FIPS 校验,修改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled 值为 0 即可。

总结

通过上图可以看到,解决方案的提供者近乎花费了一两周来解决这个问题,这样的问题其实是比较玄乎的,不到最后一步很难知道是 .NET 平台的限制。

本文解决的问题不是很技术,主要阐述了解决问题的思路和途径,仅供大家参考,希望对大家有所帮助。


追求高效、有节奏的研发过程; 打造高质量、创新的研发产品。 专注技术、钟情产品!

欢迎扫码关注『朗坤极客驿站』,遇见更优秀的自己。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值