遇到問題
使用 C#/.NET
開發(fā)的一個(gè)客戶端程序聚假,需要連接 ORACLE
數(shù)據(jù)庫(kù)遵堵,使用 Oracle.ManagedDataAccess
配合上 PetaPoco
可以大大簡(jiǎn)化數(shù)據(jù)庫(kù)的操作多搀。
一次偶然的事件,遇到了以下錯(cuò)誤:
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()
程序無法正常連接數(shù)據(jù)庫(kù)茅郎,但是使用
PL/SQL
依舊可以正常連接患雏。
解決問題
根據(jù)主要錯(cuò)誤信息百度 ORA-01017: invalid username/password; logon denied
,從大量結(jié)果中得到以下可能:
- 密碼確實(shí)有誤:可修改密碼
alter user 用戶名 identified by 新密碼;
- 密碼大小寫問題:可執(zhí)行
alter system set sec_case_sensitive_logon = FALSE;
- 賬戶被鎖定:可執(zhí)行
alter user 用戶名 account unlock;
- 無權(quán)限:可執(zhí)行
grant connect, resource, dba to 用戶名;
還有其他修改 java.security
等無意義的解決方法捏萍。然而嘗試了上面全部的方法都未能解決問題太抓,.NET程序還是報(bào)同樣的錯(cuò)誤 ORA-01017: invalid username/password; logon denied
。
完美解決
經(jīng)過大量的查閱資料令杈,最終發(fā)現(xiàn)問題在是 FIPS 兼容性問題走敌。
FIPS:全稱是 Federal Information Processing Standard ,中文名叫聯(lián)邦信息處理標(biāo)準(zhǔn)逗噩,F(xiàn)IPS 是由兩個(gè)政府主體開發(fā)的標(biāo)準(zhǔn)悔常。一個(gè)是美國(guó)國(guó)家標(biāo)準(zhǔn)和在美國(guó)境內(nèi)的技術(shù)。另一種是通信安全機(jī)構(gòu)给赞,在加拿大机打。FIPS 是建議或要求使用 (美國(guó)或加拿大) 的聯(lián)邦政府操作 IT 系統(tǒng)中的標(biāo)準(zhǔn)。
.NET 程序可以通過再其 .config
文件中添加以下配置來關(guān)閉 FIPS 校驗(yàn):
<configuration>
<runtime>
<enforceFIPSPolicy enabled="false"/>
</runtime>
</configuration>
同樣可以通過修改注冊(cè)表的方式關(guān)閉 FIPS 校驗(yàn)片迅,修改
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled
值為 0
残邀。
參考文章
- ORA-01017 Invalid Username/Password when connecting to 11g database from 9i client
- Oracle.ManagedDataAccess and ORA-01017: invalid username/password; logon denied
- ora-01017-invalid-username-passwordlogon-denied
- 解決“此實(shí)現(xiàn)不是 Windows 平臺(tái) FIPS 驗(yàn)證的加密算法的一部分”
- .NET程序與FIPS兼容性問題
- https://blog.csdn.net/qq_32451373/article/details/75972534
- https://blog.csdn.net/antoniochan/article/details/14091203