如題,答案爲:【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
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
。code
通過大量的查閱資料,最終發現問題在是 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
。