728x90

ORA-01000: 최대 열기 커서 수를 초과했습니다. 에러시 조치 방법

-> 운영서버에서 ORA-01000 에러가 발생한 적이 있었는데 다음과 같이 임시 조치하였다.

(위 에러가 발생할 경우 DB관련 프로세스가 모두 동작하지 않으므로 빨리 조치해야 함)

-> 오라클 DBA 계정으로 접속하여 수행해야 하며 오라클에 설정되어 있는 커서수를 파악해야 한다.

-> 이 문제가 발생하는 경우는 개발소스 레벨의 문제가 대부분이므로 반드시 소스를 수정해야 함.

1.커서 개수가 300개 가량 되는게 있는지 확인(너무 많은 갯수를 지닌거 포함)

/* SID 확인 */

SELECT count(*) cnt, sid FROM v$open_cursor

GROUP BY sid

ORDER BY cnt DESC

2. 위의 SID를 이용하여 SERIAL# 구한다.

/* SERIAL# 확인 */

select q.sql_text, AA.SERIAL#

from v$open_cursor o, v$sql q, v$session AA

where q.hash_value=o.hash_value and o.sid = AA.SID AND O.SID=98 AND ROWNUM < 10

3. SID와 SERIAL#로 해당 세션을 삭제

ALTER SYSTEM KILL SESSION '98,57' -- SID, SERIAL# 을 이용하여 삭제

참고: 커서 개수가 300개 가량 되는게 있는지 확인하는 SQL

SELECT S1.sql_text, S1.CNT from

(SELECT sql_text, count(sid) CNT FROM v$open_cursor

GROUP BY sql_text

ORDER BY CNT desc) S1

WHERE S1.CNT > 5

ORDER BY S1.CNT DESC

[출처] [오라클] ORA-01000: 최대 열기 커서 수를 초과했습니다. 에러시 조치 방법|작성자 BINU

ORA-01000: 최대 열기 커서 수를 초과했습니다.

PreparedStatement나 Statement를 사요하고 close()를 하지 않아서 발생

. 프로세스당 커서수 확인

> select sid, count(sid) cnt from v$open_cursor group by sid order by cursor desc;

. sql당 사용하는 커서수 확인

> select sql_text, count(sid) cnt from v$open_cursor group by sql_text order by cnt desc;

. 해당 sid 확인

> select sid, serial# from v$session where sid=18;

. session kill

> alter system kill sessin '18,3';

728x90

'WebLogic' 카테고리의 다른 글

웹로직 오라클 clob 업데이트  (0) 2012.09.03
웹로직 weblogic 오라클 clob  (0) 2012.08.24
WEBLOGIC 비밀번호  (0) 2012.07.29
TOMCAT java.lang.ClassCastException: oracle.sql.CLOB  (0) 2012.07.29
STAGE & NOSTAGE 모드  (0) 2012.07.29

+ Recent posts