请教各位一个问题!
目前数据库(单机文件系统)11.2.0.3版本,web端使用连接池连接数据库用户user/password正常。
升级到oracle 11.2.0.4版本并打完建议的补丁集后,同样的客户端连接到11.2.0.4的用户user/password用户被锁,提示用户名密码错误。
我修改系统参数密码不区分大小写验证-无效
解锁账户后,设置错误密码无限制次数连接,这样我在oracle账户下使用sqlplus user/password登录卡住,无法登录。很久才能登录进去,或者提示tns异常问题。
请各位高手指点上述问题可能引起的原因。
web 日志
09-Jun-2017 18:12:02.244 WARNING [C3P0PooledConnectionPoolManager[identityToken->1hge3nw9o12xef2j1y0tsbn|30a044a7, dataSourceName->hibernate-datasource]-HelperThread-#0] com.mchange.v2.log.slf4j.Slf4jMLog$Slf4jMLogger$WarnLogger.log Having failed to acquire a resource, com.mchange.v2.resourcepool.BasicResourcePool@d0bcbac is interrupting all Threads waiting on a resource to check out. Will try again in response to new client requests.
09-Jun-2017 18:12:12.246 WARNING [C3P0PooledConnectionPoolManager[identityToken->1hge3nw9o12xef2j1y0tsbn|30a044a7, dataSourceName->hibernate-datasource]-HelperThread-#2] com.mchange.v2.log.slf4j.Slf4jMLog$Slf4jMLogger$WarnLogger.log com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask@166de721 -- Acquisition Attempt Failed!!! Clearing pending acquires. While trying to acquire a needed new resource, we failed to succeed more than the maximum number of allowed acquisition attempts (1). Last acquisition attempt exception:
java.sql.SQLException: ORA-01017: invalid username/password; logon denied
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:388)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:381)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:564)
at oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:431)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
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:359)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:221)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:146)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:195)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:184)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:200)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1086)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1073)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:44)
at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)
有人能指导下上述问题出在什么地方不?
我们搞java的好像也无多大办法了。
我自己用jdbc 开多线程连接并无异常,c3p0 开始启动的时候业务异常,但是启动一段时间后就报上述用户名和密码错误。
追问:我目前找不到是什么原因导致了,求大神解答
有人能指导下上述问题出在什么地方不?
我们搞java的好像也无多大办法了。
我自己用jdbc 开多线程连接并无异常,c3p0 开始启动的时候业务异常,但是启动一段时间后就报上述用户名和密码错误。
1、用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
2、查看具体的被锁时间
SQL> select username,lock_date from dba_users where username='TEST';
USERNAME LOCK_DATE TEST 2009-03-10 08:51:03
3、解锁
SQL> alter user test account unlock;
User altered.
4、查看是那个ip造成的test用户被锁
查看$ORACLE_HOME/network/admin/log/listener.log日志
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=Oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49434)) * establish * lhoms * 0
10-MAR-2009 08:51:03 * (CONNECT_DATA=(SID=lhoms)(SERVER=DEDICATED)(CID=(PROGRAM=oracle)(HOST=omstestdb)(USER=oraoms))) * (ADDRESS=(PROTOCOL=tcp)(HOST=10.69.1.11)(PORT=49435)) * establish * lhoms * 0
这样可知是上面10.69.1.11的ip尝试多次失败登陆造成的被锁
注:
一般数据库默认是10次尝试失败后锁住用户
1、查看FAILED_LOGIN_ATTEMPTS的值
select * from dba_profiles where RESOURCE_NAME = 'FAILED_LOGIN_ATTEMPTS';
2、修改为30次
alter profile default limit FAILED_LOGIN_ATTEMPTS 30;
3、修改为无限次(为安全起见,不建议使用)
alter profile default limit FAILED_LOGIN_ATTEMPTS unlimited;
首先多谢您的回答,目前上述方式都尝试过了,我怀疑是前端web的c3p0连接池有异常。
多谢你
分析过11.2.4版本和11.2.3版本的变化。
替换了c3p0的驱动。
修改过 密码错误无上限验证等后问题还是没解决。、
最后让我在在意外中发现 ojdbc6.jar的驱动,在11.2.4版本中比原来的ojdc要大100kb左右。。。。。。。。。
一千万头操TM。。。
日咋早就不想想是不是这个驱动问题。
我替换过这个驱动后,系统运行正常,再无上述日志的错误。
此问题算完结。
再次多谢 热心的 @chenjiexixi