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\";
,这应该保持密码大小写
我正在尝试使用以下代码访问 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\";
,这应该保持密码大小写