티스토리 뷰

시스템 서버

ORA-01000: maximum open cursors exceeded

달리는개발자 2012. 12. 6. 10:56

세션당 최대 오픈 커서 수 초과 오류

 

설정된 커서 개수 확인

show parameter _cursors
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
open_cursors                         integer     300
session_cached_cursors               integer     20

 

현재 열린 커서와 설정된 최대 오픈 커서 수 확인

SELECT MAX(a.value) AS highest_open_cur, p.value AS max_open_cur 
  FROM v$sesstat a, v$statname b, v$parameter p 
 WHERE a.statistic# = b.statistic#  
   AND b.name = 'opened cursors current' 
   AND p.name= 'open_cursors' 
 GROUP BY p.value;

 

특정 sid로 현재 열린 커서와 설정된 최대 오픈 커서 수 확인

SELECT MAX(a.value) AS highest_open_cur, p.value AS max_open_cur 
  FROM v$sesstat a, v$statname b, v$parameter p 
 WHERE a.statistic# = b.statistic#  
   AND b.name = 'opened cursors current' 
   AND p.name= 'open_cursors' 
   AND a.sid = '검색할 SID'
 GROUP BY p.value;

 

다수의 어플리케이션이 존재할 때 어플리케이션별 세션 커서 확인

SELECT   SUM(a.value) AS total_cur
       , AVG(a.value) AS avg_cur
       , MAX(a.value) AS max_cur
       , s.username
       , s.machine 
  FROM v$sesstat a, v$statname b, v$session s
 WHERE a.statistic# = b.statistic# 
   AND s.sid=a.sid 
   AND b.name = 'opened cursors current' 
 GROUP BY s.username, s.machine
 ORDER BY 1 DESC;

 

해당 오라클 User name으로 쿼리 개수 확인

SELECT sql_text, COUNT(sid) AS cnt
   FROM v$open_cursor
 WHERE user_name='오라클 USER NAME' 
GROUP BY sql_text  
ORDER BY cnt;

 

현재 열린 커서와 캐쉬된 커서를 합쳐서 상위 10개 session을 확인

SELECT * 
  FROM (
         SELECT sid, COUNT(*) 
           FROM v$open_cursor 
          GROUP BY sid 
          ORDER BY 2 DESC) 
  WHERE ROWNUM <= 10;

 

 

참고

http://www.orafaq.com/node/758

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함