首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle11g r2 ORA-01017:无效用户名/密码;通过JDBC驱动程序连接时拒绝登录

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

Stack Overflow用户
提问于 2015-04-17 09:58:20
回答 6查看 16.5K关注 0票数 1

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

但是,当我们迁移到Oracle11g r2 (Linux环境)时,当我们尝试运行这个工具时,我们得到了这个错误:

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

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

你觉得这是司机的问题吗?我们需要在数据库中配置什么吗?顺便提一下,这些版本是: JDBC => 11.2.0.3.0 Oracle => 11.2.0.4.0

此外,如果指示连接字符串,则无法连接到sqlplus:

代码语言:javascript
复制
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是在登录服务器时设置的。

代码语言:javascript
复制
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

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

EN

回答 6

Stack Overflow用户

发布于 2015-04-28 19:17:44

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

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

代码语言:javascript
复制
allowed_logon_version=10

并重新生成用户的密码(以重新生成验证器):

代码语言:javascript
复制
ALTER USER user IDENFIFIED BY "newpassword";
票数 3
EN

Stack Overflow用户

发布于 2015-04-17 20:36:37

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

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

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

我使用的用户接受任何密码,只要我作为根用户连接。

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

代码语言:javascript
复制
sqlplus blah/blah as sysdba

连接到我的Oracle11gXE数据库,并且连接得很好,尽管我的数据库没有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中使用相同的用户名、密码和连接字符串。

票数 2
EN

Stack Overflow用户

发布于 2015-04-17 10:15:30

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29696059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档