.NET 经过entity framework报数据库链接错误:ORA-01017: invalid username/password; logon denied

如题,答案为:【ORA-01017】.NET程序链接数据库失败javascript


 转载文章内容以下:java

遇到问题

使用 C#/.NET 开发的一个客户端程序,须要链接 ORACLE 数据库,使用 Oracle.ManagedDataAccess 配合上 PetaPoco 能够大大简化数据库的操做。数据库

一次偶然的事件,遇到了如下错误:安全

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() 

程序没法正常链接数据库,可是使用 PL/SQL 依旧能够正常链接。ide

解决问题

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

  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 deniedcode

完美解决

通过大量的查阅资料,最终发现问题在是 FIPS 兼容性问题。orm

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

.NET 程序能够经过再其 .config文件中添加如下配置来关闭 FIPS 校验:事件

<configuration>  
    <runtime> <enforceFIPSPolicy enabled="false"/> </runtime> </configuration> 

一样能够经过修改注册表的方式关闭 FIPS 校验,修改
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled 值为 0

经验证修改注册表,而后重启有效。 做者:rochy_he 连接:https://www.jianshu.com/p/c301b062237b 來源:简书 简书著做权归做者全部,任何形式的转载都请联系做者得到受权并注明出处。
相关文章
相关标签/搜索