JDBC连接无法正常工作,但是sqlplus连接可以正常工作

时间:2020-06-25 11:12:05

标签: hibernate jdbc spring-jdbc

我们有一个应用程序,其元数据位于生产数据库中。我们通过jdbc连接连接到生产数据库。

当我们将数据库更改为第二个数据库(生产数据库的备用数据库位于其他城市)时,要么无法连接到它,要么经过很长的等待时间才连接到它。即使我们连接到它,我们的应用程序也会非常缓慢地运行,然后过一会儿就断开连接。

数据库具有相同的版本。顺便说一下,当我们通过sqlplus连接到备用数据库时,我们可以像生产数据库一样快速地连接到备用数据库。

通过jdbc连接时可能是什么问题?

此外:我们升级了jdbc驱动器,没有任何改变

更多:我们还有其他应用程序,例如abinito,我们在那里没有使用jdbc。我们连接到备用数据库并很快运行

解决方案:我不知道这是否是错误。此配置已正常运行。 jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = myhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = myservice)))

jdbc
jdbc.driverclass=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@myhost:1521/myservice
jdbc.username=xxx
jdbc.password=xxx
jdbc.maxPoolSize=300
jdbc.minPoolSize=5
jdbc.preferredTestQuery=SELECT 1 FROM DUAL
jdbc.idleConnectionTestPeriod=1800
jdbc.checkoutTimeout=3000000
~                        

ping status

ping standby_db
icmp_seq=1 ttl=54 time=7.02 ms
icmp_seq=2 ttl=54 time=6.89 ms
icmp_seq=3 ttl=54 time=6.79 ms
^C
ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 6.790/6.903/7.020/0.093 ms


ping prod_db

icmp_seq=1 ttl=58 time=0.450 ms
icmp_seq=2 ttl=58 time=0.451 ms
icmp_seq=3 ttl=58 time=0.480 ms

^C
---  ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.450/0.460/0.480/0.022 ms

Here there is the log
    
    2020-06-24 13:30:18,158 ERROR (ContextLoader.java:319) - Context initialization failed
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scheduleService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.scheduling.quartz.SchedulerFactoryBean com.i2i.smartcopy.service.ScheduleService.schedulerFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scheduleFactory' defined in class path resource [spring/bean.xml]: Invocation of init method failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection
                    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288)
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1116)
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
                    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
                    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
                    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
                    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
                    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:628)
                    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
                    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
                    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
                    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
                    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
                    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5136)
                    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5662)
                    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1007)
                    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:983)
                    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:639)
                    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1127)
                    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:2020)
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
                    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
                    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
                    at java.lang.Thread.run(Thread.java:662)
    Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private org.springframework.scheduling.quartz.SchedulerFactoryBean com.i2i.smartcopy.service.ScheduleService.schedulerFactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scheduleFactory' defined in class path resource [spring/bean.xml]: Invocation of init method failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection
                    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:514)
                    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
                    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
                    ... 27 more
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scheduleFactory' defined in class path resource [spring/bean.xml]: Invocation of init method failed; nested exception is org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1482)
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
                    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
                    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
                    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
                    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
                    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:912)
                    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:855)
                    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:770)
                    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:486)
                    ... 29 more
    Caused by: org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction; nested exception is org.hibernate.exception.GenericJDBCException: Could not open connection
                    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:514)
                    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:372)
                    at org.springframework.scheduling.quartz.SchedulerAccessor.registerJobsAndTriggers(SchedulerAccessor.java:252)
                    at org.springframework.scheduling.quartz.SchedulerFactoryBean.afterPropertiesSet(SchedulerFactoryBean.java:511)
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1541)
                    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1479)
                    ... 39 more
    Caused by: org.hibernate.exception.GenericJDBCException: Could not open connection
                    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)
                    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
                    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
                    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:304)
                    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.getConnection(LogicalConnectionImpl.java:169)
                    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.doBegin(JdbcTransaction.java:67)
                    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:160)
                    at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1396)
                    at org.springframework.orm.hibernate4.HibernateTransactionManager.doBegin(HibernateTransactionManager.java:473)
                    ... 44 more
    Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
                    at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
                    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529)
                    at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
                    at org.hibernate.service.jdbc.connections.internal.DatasourceConnectionProviderImpl.getConnection(DatasourceConnectionProviderImpl.java:141)
                    at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:281)
                    at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297)
                    ... 49 more

谢谢

0 个答案:

没有答案
相关问题