spring 给出正确的用户名和密码,得到 ORA-01017: invalid username/password; 登录被拒绝
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11266280/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
giving correct username& password, get ORA-01017: invalid username/password; logon denied
提问by lucky_start_izumi
I have oracle database configuration in tomcat's server.xml
我在 tomcat 的 server.xml 中有 oracle 数据库配置
<Resource name="jdbc/sgfdb" auth="Container"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@databaseurl:1521:schema"
username="username" password="password" maxActive="20" maxIdle="10"
maxWait="-1"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
type="oracle.jdbc.pool.OracleDataSource"/>
Then in my web app (spring mvc project), i declear this in context.xml
然后在我的网络应用程序(spring mvc 项目)中,我在 context.xml 中明确了这一点
<Context>
<ResourceLink name="jdbc/sgfdb"
global="jdbc/sgfdb"
type="javax.sql.DataSource"/>
</Context>
I was able to connect to this database before. I didn't work on it for a week. Then now when i try to start it, always get:
我以前能够连接到这个数据库。我有一个星期没有工作。然后现在当我尝试启动它时,总是得到:
SEVERE: Servlet.service() for servlet [action] in context with path [/WebUI] threw exception [Request processing failed; nested exception is javax.persistence.QueryTimeoutException: Could not open connection] with root cause
**java.sql.SQLException: ORA-01017: invalid username/password; logon denied**
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:440)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:573)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:445)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:191)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:366)
at oracle.jdbc.driver.T4CTTIoauthenticate.doOAUTH(T4CTTIoauthenticate.java:752)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:366)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSource.java:280)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:207)
at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:157)
at org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider.getConnection(InjectedDataSourceConnectionProvider.java:70)
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:278)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.extractPhysicalConnection(ConnectionProxyHandler.java:82)
at org.hibernate.engine.jdbc.internal.proxy.ConnectionProxyHandler.continueInvocation(ConnectionProxyHandler.java:138)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at $Proxy36.prepareStatement(Unknown Source)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.doPrepare(StatementPreparerImpl.java:147)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:166)
at org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:145)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1720)
at org.hibernate.loader.Loader.doQuery(Loader.java:828)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
at org.hibernate.loader.Loader.doList(Loader.java:2447)
at org.hibernate.loader.Loader.doList(Loader.java:2433)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263)
at org.hibernate.loader.Loader.list(Loader.java:2258)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:470)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:355)
at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:195)
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1215)
at org.hibernate.internal.QueryImpl.list(QueryImpl.java:101)
at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:284)
at org.hibernate.ejb.criteria.CriteriaQueryCompiler.getSingleResult(CriteriaQueryCompiler.java:258)
at mycompany.services.impl.JobServiceImpl.getNumberOfJobs(JobServiceImpl.java:51)
at mycompany.controller.ExecJobController.execJobList(ExecJobController.java:78)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
I am sure the username and password are correct. Could anyone please give me some hint about what's going on here?
我确定用户名和密码是正确的。任何人都可以给我一些关于这里发生了什么的提示吗?
采纳答案by lucky_start_izumi
Solved. The problem is I shouldn't use
解决了。问题是我不应该使用
factory="oracle.jdbc.pool.OracleDataSourceFactory"
After remove that, it works good!
删除后,它工作得很好!
回答by RBennitt
Just solved a problem similar to this. If an 11g database is configured for case sensitive passwords, but you're trying to connect using a 10g client, the 10g client will send the password all in upper case to the database, hence an invalid password when the password you typed in is clearly correct. So you need to upgrade the client to 11g to get it to send the password in the correct case (but for a quick test you can change your password to all upper case and you'll be able to connect).
刚刚解决了一个类似的问题。如果 11g 数据库配置为区分大小写的密码,但您尝试使用 10g 客户端进行连接,则 10g 客户端会将密码全部以大写形式发送到数据库,因此当您输入的密码明确时,密码无效正确的。因此,您需要将客户端升级到 11g 以使其以正确的大小写发送密码(但为了快速测试,您可以将密码更改为全部大写,您将能够连接)。
回答by isepun
Bumped into this thread because I was facing the same problem. The username and password were perfect. Was able to login using those credentials in SQLPlus and from other applications. The datasource.url was also perfect.
撞到这个线程是因为我面临同样的问题。用户名和密码是完美的。能够在 SQLPlus 和其他应用程序中使用这些凭据登录。datasource.url 也很完美。
While analyzing the errors, found that the ojdbc6.jar that I was using was trying to connect to Oracle 11.1.0.7 whereas my Oracle was 11.2.0.4. Downloaded the latest ojdbc6.jar and tried to connect and voila!
在分析错误时,发现我使用的 ojdbc6.jar 试图连接到 Oracle 11.1.0.7 而我的 Oracle 是 11.2.0.4。下载了最新的 ojdbc6.jar 并尝试连接,瞧!
回答by wweicker
- The username could be incorrect.
- The password could be incorrect.
- The server/instance you are connecting to could be incorrect, or different between your machine and the server, or between the application and SQL Developer.
- The database might be configured to use case sensitive passwords.
- The password might contain a semicolon
;character causing the connection string to get truncated when the application builds the connection string, but allowing you to use it from SQL Developer(?) - You could have a typo somewhere(?)
- 用户名可能不正确。
- 密码可能不正确。
- 您连接到的服务器/实例可能不正确,或者您的机器和服务器之间或应用程序和 SQL Developer 之间不同。
- 数据库可能被配置为使用区分大小写的密码。
- 密码可能包含分号
;字符,导致应用程序构建连接字符串时连接字符串被截断,但允许您从 SQL Developer(?) - 你可能在某处打错字(?)
回答by Dosto Kamil
If your password and username are lowercase and their uppercase mode have different value (like i, ? in Turkish) this might cause the problem. Some Java- Oracle connection libraries make them uppercase without watching the culture differences.
如果您的密码和用户名是小写的,并且它们的大写模式具有不同的值(如土耳其语中的 i、?),这可能会导致问题。一些 Java-Oracle 连接库在不注意文化差异的情况下将它们设为大写。
回答by MANJUSHA GUNTUR
I have similar issue where password works in SQL Developer but not in code (Java). I tried to reset the password and it works fine. Not sure of the root cause but it works. Hope this helps!
我有类似的问题,密码在 SQL Developer 中有效,但在代码(Java)中无效。我尝试重置密码,它工作正常。不确定根本原因,但它有效。希望这可以帮助!
回答by MaVRoSCy
it is possible that the user you are trying to logon has an expired password
您尝试登录的用户的密码可能已过期

