ORA-01017 从 9i 客户端连接到 11g 数据库时用户名/密码无效

Posted

技术标签:

【中文标题】ORA-01017 从 9i 客户端连接到 11g 数据库时用户名/密码无效【英文标题】:ORA-01017 Invalid Username/Password when connecting to 11g database from 9i client 【发布时间】:2013-01-06 18:21:10 【问题描述】:

我正在尝试从带有 9i (v9.2.0.1) 客户端的 PC 连接到 11g (v11.2.0.1.0) 上的架构。它似乎可以很好地连接到某些模式,但不是这个 - 它每次都会返回 ORA-01017 Invalid Username/Password 错误。

用户名和密码绝对正确 - 谁能想到这不起作用的原因?

9i 和 11g 之间是否存在根本的不兼容?

【问题讨论】:

密码全小写。我们在登录时输入的是小写密码。 好的,我将把它贴在这里,因为这是 Google 抛出的第一个结果,我浪费了很多时间试图解决这个问题:如果你使用的是 UNIX,你正在启动命令 isql user/pass@host并且您的密码包含 $,用单引号将 user/pass@host 部分括起来(unix 试图用 env var 替换) 只需重设一次密码,对我有用。 在 Oracle 19c 上遇到类似问题。但是,只有当我尝试使用带有密码的连接字符串时,例如 sqlplus username/password@tns_service_name. 当我不包含密码时,例如 sqlplus username@tns_service_name,它才会提示输入密码,并成功登录。这是什么原因造成的 【参考方案1】:

用户名和密码肯定不正确。 Oracle 11g 凭据区分大小写。

尝试 ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE; 并更改密码。

http://oracle-base.com/articles/11g/case-sensitive-passwords-11gr1.php

【讨论】:

这成功了!那么 9i 客户端在您输入密码后是否会对您的密码进行某些操作,例如将其更改为大写? @user1578653 oracle9i 默认为大写,因为它不区分大小写。您可以通过将密码粘贴在双引号中来连接,而不是将数据库更改为不敏感,例如 `sqlplus youruser/"Password"@db 以传递混合大小写。 为什么修改后还要修改密码? 在 Windows 上,当使用 C# 应用程序使用 oracle.dataaccess 10g 连接到 11g 数据库时,我遇到了这个问题。这两种技术都对我有用:1.在密码上使用引号。 2. 更改区分大小写。我也在使用没有这个问题的 C++/OO4O 客户端和 SQLPLUS。 我在使用 C# 应用程序连接时也遇到了类似的问题,使用 using Oracle.ManagedDataAccess.Client,但是在尝试从服务器连接时,在我的连接字符串中添加 \" 并没有帮助.在我的 VS 2015 项目中,我可以使用任何一种方式进行连接——有或没有额外的引号。试图弄清楚为什么从一个位置连接相同的代码可以工作,但从另一个位置连接却不行。甚至在Oracle SQL Developer中尝试了ALTER SYSTEM命令并验证它改变了,但是当我在服务器上刷新我的网页并再次尝试时,它仍然给了我同样的错误。【参考方案2】:

对于 oracle 版本 12.2.x,用户无法使用不区分大小写的密码登录,即使 SEC_CASE_SENSITIVE_LOGON = FALSE 如果用户的 PASSWORD_VERSIONS 不是 10g。

以下 sql 应显示用户的 PASSWORD_VERSIONS。

select USERNAME,ACCOUNT_STATUS,PASSWORD_VERSIONS from dba_users;
USERNAME          ACCOUNT_STATUS    PASSWORD_VERSIONS 
---------------   --------------    -----------------
dummyuser         OPEN              11G 12C

使 PASSWORD_VERSIONS 与 10g 兼容

在数据库的 sqlnet.ora 中添加/修改行以使 SQLNET.ALLOWED_LOGON_VERSION_SERVER=8 重启数据库 更改/过期现有用户的密码 创建的新用户也将具有相同的设置 经过上述步骤后,PASSWORD_VERSIONS 应该是这样的

select USERNAME,ACCOUNT_STATUS,PASSWORD_VERSIONS from dba_users;
USERNAME          ACCOUNT_STATUS    PASSWORD_VERSIONS 
---------------   --------------    -----------------
dummyuser         OPEN              10G 11G 12C

【讨论】:

【参考方案3】:

前段时间我也遇到过类似的问题。您必须小心使用引号和双引号。建议使用管理员凭据重置用户密码。

ALTER USER user_name IDENTIFIED BY new_password;

但不要在两个参数中都使用双引号。

【讨论】:

解决问题时尽量不要使用特殊字符作为密码【参考方案4】:

如果一切都失败了,请尝试将密码重置为相同的值。我遇到了这个错误并且无法解决它,但只需将密码重置为相同的值即可解决问题。

【讨论】:

11.2.0.3.0 有这个 重置为相同值是什么意思?怎么样? @user586399 alter user <user_name> identified by Pass2019$;(减去<> 并将user_name 替换为您正在使用的架构帐户的名称)。【参考方案5】:

您可以使用 sqlplus 连接到 Oracle 数据库:

sqlplus "/as sysdba"

然后创建新用户并分配权限。

grant all privileges to dac;

【讨论】:

【参考方案6】:

我不是专家。如果您在尝试从 Oracle 11g 中的 SQL Developer 连接 HR 模式时遇到 ORA-01017 请尝试如下解锁HR

更改由 hr 标识的用户 HR DEFAULT 表空间用户 临时表空间 temp 帐号解锁;

【讨论】:

【参考方案7】:

我遇到了同样的错误,但是当我连接时,脚本中的其他先前语句之前运行良好! (所以连接已经打开,一些成功的语句在 auto-commit 模式下运行良好) 该错误可重现几分钟。然后它就消失了。 我不知道是否有人或某些内部机制在这段时间内做了一些维护工作或类似的工作——也许吧。

关于我的环境的更多事实:

11.2 连接为:sys as sysdba 所涉及的操作...从all_tablesall_views 读取并为其他用户授予select它们

【讨论】:

【参考方案8】:

我有同样的问题,并在用户名和密码周围加上双引号,它的工作原理: 使用“TEST”创建由“opps”标识的公共数据库链接“opps”;

【讨论】:

【参考方案9】:

Oracle 11 G 和 12 C 版本建议使用更复杂的密码,虽然在用户创建过程中没有问题。密码必须是字母数字和特殊字符。

验证用户的密码版本和状态:

select * from dba_users where username = <user_name>;

如果是11G 12C,修改如下:

alter user <user_name> identified by Pass2019$;

现在测试连接!

【讨论】:

【参考方案10】:

我最近在使用 Oracle 12c 时也遇到了类似的问题。在我更改了使用的 ojdbc jar 的版本后,它得到了解决。将 ojdbc14 替换为 ojdbc6 jar。

【讨论】:

【参考方案11】:

我遇到了类似的问题。我使用的 id/pw 是正确的,但我只在一个特定的连接上获得了 ORA-01017 Invalid Username/Password

原来我在 Oracle SQL Developer 中的连接设置在“代理用户”选项卡中打开了“使用数据库代理身份验证”。好久没注意到了。

在我取消选中该选项后,它工作正常。

【讨论】:

【参考方案12】:

关于 Oracle 的 OTN 的提示 = 当您尝试连接时不要在 TOAD 中输入您的密码,让它弹出 一个对话框输入您的密码。 在那里输入密码,它就会起作用。不确定他们在 TOAD 中使用密码做了什么,但这是一种解决方法。它与 11g 中区分大小写的密码有关。我认为如果您将密码更改为全部大写,它将适用于 TOAD。 https://community.oracle.com/thread/908022

【讨论】:

【参考方案13】:

通过代理用户通过 odp.net 连接时,我也收到了相同的 sql 错误消息。

我的错误是我的用户是用引号创建的(例如“rockerolf”),然后我还必须在连接字符串中将我的用户指定为 User Id=\"rockerolf\"..

最后我删除了带引号的用户并创建了一个没有引号的新用户..

掌心

【讨论】:

【参考方案14】:

我最近在使用 Oracle 12c 时遇到了类似的问题。我使用小写密码创建了一个新用户,并且能够从数据库服务器正常登录,但所有客户端都失败并出现 ORA-01017。 最终修复结果很简单(将密码重置为大写),但付出了很多令人沮丧的努力。

【讨论】:

【参考方案15】:

凭据可能是正确的,也可能是其他错误。我的 pluggable DB 连接字符串基于它的 container DB。而不是原来的parent.example.com 服务名称,正确的似乎是pluggable.example.com

【讨论】:

【参考方案16】:

我知道这篇文章是关于 11g 的,但是如果你决定使用它并且你自己:

不存在密码区分大小写的问题(即您尝试ALTER SYSTEM SET SEC_CASE_SENSITIVE_LOGON = FALSE 并重置密码但仍然无效), 在连接字符串中为密码加上引号,但仍然没有帮助, 您已经验证了所有环境变量(ORACLE_HOMEPATHTNS_ADMIN),并且HKLM\Software\Oracle\KEY_OraClient12Home 处的TNS_ADMIN 注册表字符串已就位, 您已验证您的连接字符串和用户名/密码组合在网络管理器中有效,并且 您可以使用 SQL*Plus、Oracle SQL Developer 使用相同的凭据进行连接。

所有基本检查。

修复:尝试在注册表 (regedit) 中将 HKLM\System\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy\Enabled 设置为 0 以禁用 FIPS。

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

ORA-01005 error connecting with ODP.Net

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

https://dba.stackexchange.com/questions/142085/ora-01017-invalid-username-passwordlogon-denied/142149#142149

【讨论】:

对不起,downvoter,但我发布这个是有原因的 - 这里有一个人可能想要做的检查,即使是 11g,遇到同样的错误但有 12c 的人,谷歌搜索这个错误可能来到这篇文章,想知道其他可能导致这个错误的事情。这里的其他东西都没有帮助我,所以我找到了这些东西。【参考方案17】:

在我使用 tableplus build 373 on my m1 device 的 oracle 数据库的情况下 在另一个文本编辑器中输入用户名和密码,copy and paste 在 tableplus 中输入用户名和密码。当我输入in tableplus the text automatically changes to lowercase。因为我对 sqldeveloper 没有任何问题,但是在尝试 tableplus 时它总是拒绝,现在我已经解决了。我不知道为什么它在应用程序或其他方面出现问题,但我已经通过技巧解决了。

【讨论】:

以上是关于ORA-01017 从 9i 客户端连接到 11g 数据库时用户名/密码无效的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 9i:ORA-01017:用户名/密码无效;登录被拒绝

Oracle 11g r2 ORA-01017:用户名/密码无效;通过 JDBC 驱动程序连接时登录被拒绝

oracle 数据库 显示新建数据库连接失败 错误原因ora-01017:用户名 口令无效 登陆被拒绝

Oracle JDBC:用户名/密码无效 (ora-01017)

突然ora01017怎么解决

Oracle.ManagedDataAccess 和 ORA-01017:用户名/密码无效;登录被拒绝