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

Posted

技术标签:

【中文标题】Oracle 11g r2 ORA-01017:用户名/密码无效;通过 JDBC 驱动程序连接时登录被拒绝【英文标题】:Oracle 11g r2 ORA-01017: invalid username/password; logon denied when connecting via JDBC driver 【发布时间】:2015-06-24 02:51:49 【问题描述】:

我不是 Oracle 专家,也不是数据库管理员。但是我们有这个我们创建的 Java 程序,它使用 OCI 驱动程序连接到 Oracle 9i 数据库(Windows 环境)。

但是当我们迁移到 Oracle 11g r2(Linux 环境)时,我们在尝试运行该工具时遇到了这个错误:

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

我尝试了很多可能的代码来连接到数据库(指定主机和端口而不仅仅是 SID/服务名称、设置属性对象、使用 OracleDataSource、从 OCI 驱动程序切换到瘦驱动程序、检查 REMOTE_LOGIN_PASSWORDFILE 等。 ) 但还是同样的错误。

您认为这是驱动程序问题吗?我们需要在数据库中配置一些东西吗? 顺便说一下,这些是版本: JDBC => 11.2.0.3.0 甲骨文数据库 => 11.2.0.4.0

另外,如果我指明连接字符串,我无法连接到sqlplus:

sqlplus user@ORCL as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Apr 17 11:27:45 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Enter password: 

ERROR: ORA-01017: invalid username/password; logon denied

但是,我可以在不指示连接字符串的情况下进行连接。 ORACLE_SID 在登录服务器时设置。

sqlplus user as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Fri Apr 17 11:28:06 2015

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Enter password:

Connected to: Oracle Database 11g Enterprise Edition Release
11.2.0.4.0 - 64bit Production

是否缺少我们应该设置的配置? 提前致谢。

【问题讨论】:

ORA-01017:用户名/密码无效;登录被拒绝说明了一切 它说您的用户名/密码错误...与您的数据库团队核对正确的凭据 @theDbGuy 密码不会错,因为我使用的是一个虚拟用户,只要我以 root 用户身份连接就可以接受任何密码。 @DarshanLila 那么为什么我不指定连接字符串时可以连接?连接字符串和 ORACLE_SID 指的是我尝试连接的同一个实例 【参考方案1】:

这很可能发生,因为数据库服务器正在为此用户使用强验证器,而您的客户端(sqlplus 或 JDBC)不支持此密码验证器。您可以升级 sqlplus 和 JDBC Thin,或者让服务器同时生成强密码和弱密码验证器,以便旧客户端仍然可以连接。为此,请遵循以下程序:

在服务器上的sqlnet.ora中设置登录版本为10:

allowed_logon_version=10

并重新生成用户密码(重新生成验证者):

ALTER USER user IDENFIFIED BY "newpassword";

【讨论】:

谢谢,这解决了我将 OC4J 10.1.3.3.0 连接到 Oracle 12c 的问题。 设置登录版本后需要重新生成用户密码是解决问题的一点!【参考方案2】:

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

正如其他人所说,此错误消息说明了一切。您没有指定有效的用户名/密码组合。就是这么简单。有一些 Oracle 错误消息可能不清楚,但这不是其中之一。

指定数据库中Oracle用户的用户名和密码,您的登录应该会成功。

我使用的用户可以接受任何密码,只要我以 root 用户身份连接即可。

您在登录到数据库运行的同一台计算机时使用 SQL*Plus,并且您以具有dba 组成员身份的用户身份登录到 Linux。在这种情况下,无论您指定什么用户名或密码,您都可以登录。其实我只是试着跑了

sqlplus blah/blah as sysdba

连接到我的 Oracle 11g XE 数据库,并且连接正常,尽管我的数据库没有 blah 用户。

另请注意,如果您以这种方式连接,您将以 Oracle SYS 用户身份连接,您可以通过运行查询 select user from dual; 来确认这一事实。

请不要假设您可以使用您的操作系统用户凭据连接到 Oracle。您可以使用您的操作系统用户名和无密码登录到 SQL*Plus,但这只是因为在您的情况下,无论您的凭据如何,SQL*Plus 都允许您登录。 Oracle 用户与 OS 用户是分开的。仅仅因为您可以使用给定的用户名和密码登录操作系统,并不意味着您可以使用相同的凭据登录 Oracle。

您的应用程序连接的 9i 数据库中大概有一个 Oracle 用户?您的 11g 数据库中是否存在类似的 Oracle 用户?您是否尝试过以该用户身份连接?您是否尝试过重置其密码? (连接为SYS,然后输入alter user username identified by "newpassword";。)

一旦您可以使用连接字符串成功登录 SQL*Plus,然后您可以查看在 JDBC 中使用相同的用户名、密码和连接字符串。

【讨论】:

> 有一些 Oracle 错误消息可能不清楚,但这不是其中之一。请不要断言我现在面临非常奇怪的登录情况,这一点都不明显community.oracle.com/message/13110674#13110674【参考方案3】:

我的猜测是您的密码有大小写问题。 oracle 更改了 11g 中密码的处理方式,现在它们区分大小写,而在 9i 版本中则不区分大小写。

【讨论】:

我使用的用户可以接受任何密码,只要我以 root 用户身份连接即可。这并不能解释为什么我可以在不指定连接字符串的情况下进行连接【参考方案4】:

可能是以下帮助之一:

    根据数据库配置检查并选择正确的连接字符串样式:

    来自 ORACLE 瘦风格syntax description:

    Connection conn = DriverManager.getConnection
             ("jdbc:oracle:thin:scott/tiger@//myhost:1521/myservicename");
    

    与 SID 连接(来自 ORACLE documentation):

    Connection conn = DriverManager.getConnection
             ("jdbc:oracle:thin:@myhost:1521:orcl", "scott", "tiger");
    

    检查您是否在用户名中添加了"as sysdba"(查看常见问题解答here)

    不太可能但可能:检查您的用户名和/或密码是否区分大小写。在这种情况下,它们将它们包含在"

【讨论】:

【参考方案5】:

你必须在程序中检查你的数据库的用户名和密码以及连接字符串,改变CASE会导致这个错误

【讨论】:

【参考方案6】:

我安装了 oracle 客户端 11g R2 和 oracle 数据库 12.2 版本,然后使用客户端 PC 的 BIN 文件夹下的 NETCA 创建了 tnsnames.ora, 然后我将以下行添加到数据库服务器中的 SQLNET.ora 文件中:

SQLNET.ALLOWED_LOGON_VERSION_CLIENT = 8
SQLNET.ALLOWED_LOGON_VERSION_SERVER = 8

之后我只能使用系统用户登录,当我尝试使用任何其他用户登录时出现错误`

ORA-01017: invalid username/password; logon denied`

最后我通过在客户端 SQL 中从系统用户更改其他用户的密码来解决它。这就是我解决错误的方法。

【讨论】:

以上是关于Oracle 11g r2 ORA-01017:用户名/密码无效;通过 JDBC 驱动程序连接时登录被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

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

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

oracle12c 可行的解决办法:ORA-01017: invalid username/password; logon denied

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

使用Navicat连接Oracle数据时的一些问题,连接时错误:ORA-28547,新建用户后连接时错误:ORA-01017

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