ORA-01000 에러로 인한 dbcp2로 업그레이드 방법을 알려주세요.
- 작성자 :
- 김*동
- 작성일 :
- 2016-06-23 09:57:03
- 조회수 :
- 1,528
- 구분 :
- 운영환경
- 진행상태 :
- 완료
Q
안녕하세요.
현재 전자정부3.5 버전을 사용중인데, tomcat 서버에서 connection pool관련해서, 아래의 오류가 가끔씩 발생합니다.
ORA-01000: maximum open cursors exceeded
그래서 알아보니, 지금 3.5버전에서 사용하는 common-dbcp가 1.2 혹은 1.4인거 같은데,
이것을 2.0 버전으로 이상으로 업그레이드 해야 한다고 합니다.
그래서 pom.xml을 아래와 같이 수정하니 전자정부프로임웍에서 사용하고 있어서 오류가 납니다.
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.bat.core</artifactId>
<version>3.5.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>commons-dbcp</artifactId>
<groupId>commons-dbcp</groupId>
</exclusion>
<exclusion>
<artifactId>commons-pool</artifactId>
<groupId>commons-pool</groupId>
</exclusion>
<exclusion>
<artifactId>commons-collections</artifactId>
<groupId>commons-collections</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 추가-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/log4jdbc-log4j2-jdbc4.1-1.16.jar</systemPath>
</dependency>
정리를 해보면 오라클의 pooling관련한 오류때문에 dbcp상위버전(commons-dbcp2-2.1.1.jar) 으로 대체하고
log4jdbc에서도 oracle.jdbc.OracleDriver(최신버전)를 지원해주는 log4jdbc-log4j2-jdbc4.1 를 적용해야 합니다.
oracle.jdbc.driver.OracleDriver <==과거버전
oracle.jdbc.OracleDriver <==최신버전
commons-dbcp2-2.1.1.jar , log4jdbc-log4j2-jdbc4.1 로 대체할려면 어떻게 해야 하나요?
답변부탁드립니다.
감사합니다.
현재 전자정부3.5 버전을 사용중인데, tomcat 서버에서 connection pool관련해서, 아래의 오류가 가끔씩 발생합니다.
ORA-01000: maximum open cursors exceeded
그래서 알아보니, 지금 3.5버전에서 사용하는 common-dbcp가 1.2 혹은 1.4인거 같은데,
이것을 2.0 버전으로 이상으로 업그레이드 해야 한다고 합니다.
그래서 pom.xml을 아래와 같이 수정하니 전자정부프로임웍에서 사용하고 있어서 오류가 납니다.
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.bat.core</artifactId>
<version>3.5.0</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>commons-dbcp</artifactId>
<groupId>commons-dbcp</groupId>
</exclusion>
<exclusion>
<artifactId>commons-pool</artifactId>
<groupId>commons-pool</groupId>
</exclusion>
<exclusion>
<artifactId>commons-collections</artifactId>
<groupId>commons-collections</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- 추가-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version>
<scope>system</scope>
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/log4jdbc-log4j2-jdbc4.1-1.16.jar</systemPath>
</dependency>
정리를 해보면 오라클의 pooling관련한 오류때문에 dbcp상위버전(commons-dbcp2-2.1.1.jar) 으로 대체하고
log4jdbc에서도 oracle.jdbc.OracleDriver(최신버전)를 지원해주는 log4jdbc-log4j2-jdbc4.1 를 적용해야 합니다.
oracle.jdbc.driver.OracleDriver <==과거버전
oracle.jdbc.OracleDriver <==최신버전
commons-dbcp2-2.1.1.jar , log4jdbc-log4j2-jdbc4.1 로 대체할려면 어떻게 해야 하나요?
답변부탁드립니다.
감사합니다.
A
안녕하세요. 표준프레임워크 센터입니다.
기재해 주신대로, pom.xml에 exclusions 태그를 사용하여 원하시는 dbcp 라이브러리를 배제시킬 수 있습니다.
다만, 실행환경의 코드들이 해당 dbcp를 기준으로 작성되었으므로, 호환성 등에 문제가 발생할 소지가 있어 주로 권장드리지 않습니다.
egovframework.rte.bat.core의 경우 배치환경에서 사용하는 라이브러리이므로, 사용하지 않으실 경우 pom.xml에서 기술된 내용을 삭제하여 쓰시는 것이 좋을 것으로 생각됩니다.
dbcp의 문제일 경우 was에서 제공하는 jndi 등을 사용하는 것도 하나의 방법일 것으로 생각되니, 고려해 보심이 좋겠습니다.
감사합니다.
기재해 주신대로, pom.xml에 exclusions 태그를 사용하여 원하시는 dbcp 라이브러리를 배제시킬 수 있습니다.
다만, 실행환경의 코드들이 해당 dbcp를 기준으로 작성되었으므로, 호환성 등에 문제가 발생할 소지가 있어 주로 권장드리지 않습니다.
egovframework.rte.bat.core의 경우 배치환경에서 사용하는 라이브러리이므로, 사용하지 않으실 경우 pom.xml에서 기술된 내용을 삭제하여 쓰시는 것이 좋을 것으로 생각됩니다.
dbcp의 문제일 경우 was에서 제공하는 jndi 등을 사용하는 것도 하나의 방법일 것으로 생각되니, 고려해 보심이 좋겠습니다.
감사합니다.