ORA-01005 连接 ODP.Net 时出错

ORA-01005 error connecting with ODP.Net

我正在尝试使用以下代码访问 Oracle 数据库(版本 10.2.0.4.0),但是在调用打开方法时连接引发了 "ORA-01005: Null password given; logon denied" 异常。

        var connBuilder = new OracleConnectionStringBuilder();
        connBuilder.DataSource = "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = MyHost.Address)(PORT = ####)) )(CONNECT_DATA =(SERVICE_NAME = MyService)))";
        connBuilder.UserID = "validUserId";
        connBuilder.Password = "validPassword";
        connBuilder.PersistSecurityInfo = true;
        var connString = connBuilder.ToString();
        using (var con = new OracleConnection(connString))
        {
            con.Open();
        }

如果我更改用户名,则会收到以下信息; "ORA-01017: invalid username/password; logon denied" 如果我用 con.OpenWithNewPassword("validPassword");

更改连接上的打开调用也是这种情况

如果我尝试使用已弃用的 Oracle 客户端,它可以正常连接:

        using (var depCon = new System.Data.OracleClient.OracleConnection
           ("Data Source=MyHost.Address:####/MyService;Persist Security Info=True;
             User ID=validUsername;Password=validPassword;Unicode=True"))
        {
            depCon.Open();
        } 

我(显然)喜欢使用最新的 Odp.Net 驱动程序,但似乎无法解决这个问题。有人有什么想法吗?

这样操作是否有效:

var connBuilder = new Common.DbConnectionStringBuilder();
connBuilder.Add("Data Source", "(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = MyHost.Address)(PORT = ####)) )(CONNECT_DATA =(SERVICE_NAME = MyService)))";
connBuilder.Add("User Id", "validUserId");
connBuilder.Add("Password", "validPassword");

您使用哪个版本的ODP.NET?当您使用 "old" ODP.NET 提供商连接到 "new" Oracle 数据库并使用区分大小写的密码时存在已知问题,请参见此处:https://community.oracle.com/message/2198228

为了在您的数据库上验证运行这个命令:

ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE;

查看此线程以了解有关 FIPS 合规性的问题:

https://community.oracle.com/thread/2557592?start=0&tstart=0

还有: Oracle.ManagedDataAccess and ORA-01017: invalid username/password; logon denied

区分大小写以及 ODP.Net 驱动程序和不同数据库版本的问题应该是一个简单的修复。将您的连接字符串密码用引号 (") 括起来,例如 Password=\"password\";,这应该保持密码大小写