.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 來源:簡書 簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。
相關文章
相關標籤/搜索