.NET 通過entity framework報數據庫連接錯誤:ORA-01017: invalid username/password; logon denied
如題,答案為:【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
,從大量結果中得到以下可能:
- 密碼確實有誤:可修改密碼
alter user 用戶名 identified by 新密碼;
- 密碼大小寫問題:可執行
alter system set sec_case_sensitive_logon = FALSE;
- 賬戶被鎖定:可執行
alter user 用戶名 account unlock;
- 無權限:可執行
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