1. 程式人生 > >.NET 通過entity framework報數據庫連接錯誤:ORA-01017: invalid username/password; logon denied

.NET 通過entity framework報數據庫連接錯誤:ORA-01017: invalid username/password; logon denied

ces lse rac string lec oca policy system 得到

如題,答案為:【ORA-01017】.NET程序連接數據庫失敗


轉載文章內容如下:

遇到問題

使用 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 依舊可以正常連接。

解決問題

根據主要錯誤信息百度 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

完美解決

經過大量的查閱資料,最終發現問題在是 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



作者:rochy_he
鏈接:https://www.jianshu.com/p/c301b062237b
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並註明出處。

.NET 通過entity framework報數據庫連接錯誤:ORA-01017: invalid username/password; logon denied