Oracle 풀링 연결에 oracle.jdbc.pool.OracleDataSource
을 사용하고 있지만 연결이 데이터베이스에 남아있는 것으로 보입니다. 오라클 데이터베이스에 연결하는 동안 오늘 나는 오류가 발생했습니다 :스프링 Oracle 데이터 소스로 연결이 끊어지지 않습니다.
ORA-12516 : TNS : 리스너가 일치하는 프로토콜 스택
사용할 핸들러를 찾을 수 없습니다 그리고 나는 우리의 데이터베이스 관리자가 들었다 너무 많은 것을 열려있는 연결은 내 애플리케이션에서 "유휴"모드로 유지됩니다.
나는 ojdbc7 사용
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.1</version>
</dependency>
봄 applicationContext.xml 파일 :
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource" destroy-method="close">
<property name="URL" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="connectionCachingEnabled" value="true" />
</bean>
DbConnect 클래스 :
import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
@Repository
public class DbConnect {
@Autowired
private DataSource dataSource;
public Connection getConnection() throws SQLException {
return dataSource.getConnection();
}
}
이 또한 내가 시도 --자원과 jdk7 구문 사용 연결에 대한 내 DAO 수준 :
@Autowired
private DbConnect dbConnect;
public List<User> getAllUsers() {
List<User> list = new ArrayList<>();
try(Connection connection = dbConnect.getConnection()) {
try(PreparedStatement preparedStatement = connection.prepareStatement("select * from V_USERS t")) {
try(ResultSet resultSet = preparedStatement.executeQuery()) {
while(resultSet.next()) {
list.add(RowFetcher.fetchUser(resultSet));
}
}
}
}
catch(Exception e) {
log.error(e.getMessage(), e);
}
return list;
}
실제 문제가 어디인지 알 수 없습니다. OracleDataSource 대신 c3p0을 사용해야합니까? ojdbc7에 버그가 있거나 내 코드에 오류가 있습니까?
미리 감사드립니다.
'DbConnect'에 대한 코드를 게시해야합니다. –
게시물을 편집했습니다.변경 사항을 참조하십시오 – 0bj3ct
dba가 생각하는 연결 수와 Oracle 데이터 소스의 기본 설정은 무엇입니까? – KarlP