我设置了连接池,更改了oracle的作业进程。但仍然收到此错误: ORA-12516,TNS:侦听器找不到具有匹配协议栈的可用处理程序 客户端使用的连接描述符是
除了连接池或oracle作业进程设置之外是否还有任何特定配置需要解决此错误
答案 0 :(得分:2)
以上解决方案仅掩盖了问题。几乎死后,我找到了一个真正有效的解决方案。出于某种原因,使用hibernate OracleDialect(或Oracle10gDialect)运行的Oracle驱动程序需要额外的参数。
我使用
将我的jdbc连接映射到Spring <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:mydb" />
<property name="username" value="mydbuser" />
<property name="password" value="12345" />
</bean>
然后,我将其更改为使用JNDI:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/jdbc/mydb" />
</bean>
在我的context.xml(Tomcat)中使用此信息:
<Resource name="jdbc/mydb"
type="javax.sql.DataSource"
auth="Container"
driverClassName="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:mydb"
username="mydbuser"
password="12345"
maxActive="20"
maxIdle="10"
maxWait="-1"
validationQuery="select 1 from dual" />
这解决了我的问题。可能是以下配置之一 maxActive , maxIdle 或 maxWait 为Oracle提供了关闭会话并将其返回到池所需的值。我在我的系统中保留了这种方式,因为我有一个待迁移到JNDI的待处理任务,但是,如果您不想使用JNDI,请尝试在 hibernateProperties 中搜索可能有用的类似值。
Obs。:JNDI可用于Jetty,将 org.eclipse.jetty.plus.jndi.Resource 的 标记添加到 jetty.xml
答案 1 :(得分:1)
我有同样的问题。这解决了我的问题,用DBA运行此查询:
ALTER SYSTEM SET PROCESSES=150 SCOPE=SPFILE;
答案 2 :(得分:0)
我遇到了同样的问题,并且还使用了Spring的DriverManagerDataSource作为mchamati。但是,我没有使用tomcat或其他中间应用程序服务器来使用他提出的JNDI解决方案。我解决了将DriverManagerDataSource替换为Oracle的特定扩展,它是“Spring Data Project”(http://projects.spring.io/spring-data-jdbc-ext/)的一部分,现在可以正常工作。
我解决如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:orcl="http://www.springframework.org/schema/data/orcl"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/data/orcl
http://www.springframework.org/schema/data/orcl/spring-data-orcl-1.0.xsd">
<orcl:pooling-datasource id="datasource"
url="jdbc:oracle:thin:@localhost:1521/xe"
username="myusername"
password="mysupersecretpassword"
connection-caching-enabled="true">
<orcl:connection-properties>
v$session.program=MyApplicationName
</orcl:connection-properties>
</orcl:pooling-datasource>
</beans>
由于pom.xml依赖项中不同版本的Spring Framework存在冲突。所以,我不得不对may pom.xml中的依赖关系进行decalre,如下所示:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-oracle</artifactId>
<version>1.2.1.RELEASE</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
</exclusions>
</dependency>
完整说明链接: http://docs.spring.io/spring-data/jdbc/docs/current/reference/html/orcl.datasource.html