[오라클 커서 ]
* 커서 : 'sql이 하나 실행될때 마다 커서가 하나 열린다.'
* 커서가 열리면 반드시 닫아줘야 한다.
* 간혹: 'ORA-01000 : 최대 열기 커서 수를 초과' 에러가 발생하는데 , 이는 커서를 열고 커서를 닫지 않아서 이다.
> jdbc프로그램 하면서 Preparestatement , Result 이런것들을 close() 하지 않아서 발생
( Connection을 닫지 않았을 때는 'ORA-00020: maximum number of processes (100)' 와 같은 프로세스 수 에러가 발행한다.)
> 또, 루프안에서 위 객체를 생성하였으면, 루프내에서 close해줘야 한다. 루프밖에서 한번 닫으면 안된다.
,예를 들어 루프안에서 10번 객체를 생성해 놓고, 루프밖에서 1번 닫으면 9개의 객체는 커서를 닫지 않은 상태로 있다.
[파라미터 open_cursors ]
*의미: '한 세션당' 최대 오픈할 수 있는 커서수
*커서수 조정 : v$parameter 테이블의 open_cursors 수를 조정한다.
ex) 'alter system set open_cursors=커서수 scope=both' (memory/spfile/both: 기본값은 memory)
[ 열린 CURSOR 관련 동적view 찾기 sql ]
EX) 오래된 접속 세션 순서
SELECT o.sid, osuser, machine, min(s.last_call_et ) as lastcall
, sysdate, min(sysdate-s.last_call_et/24/60/60) as lastcalldate, COUNT(*) num_curs
FROM v$open_cursor o, v$session s
WHERE o.sid=s.sid
GROUP BY o.sid, osuser, machine
ORDER BY lastcall DESC;
----------------------------------------------------------
EX) 오래된 접속 sql순서
select a.*, q.sql_text
from
(
SELECT o.sid, osuser, machine, min(s.last_call_et ) as lastcall, sysdate, min(sysdate-s.last_call_et/24/60/60) as lastcalldate, COUNT(*) num_curs,min(o.hash_value) hash
FROM v$open_cursor o, v$session s
WHERE o.sid=s.sid
GROUP BY o.sid, osuser, machine
ORDER BY lastcall DESC
) a
, v$sql q
where
q.hash_value=a.hash
--and machine like '%webcash-4ej936i%'
ORDER BY lastcall DESC
---------------------------------------------------
EX)열린(안닫힌) 커서가 많은 세션
SELECT o.sid, osuser, machine, COUNT(*) num_curs
FROM v$open_cursor o, v$session s
WHERE o.sid=s.sid
GROUP BY o.sid, osuser, machine
ORDER BY num_curs DESC;
--------------------------------------------------
EX) 커서가 열린(안닫힌) sql문
SELECT q.sql_text
FROM v$open_cursor o, v$sql q
WHERE q.hash_value=o.hash_value AND o.sid=:sid
---------------------------------------------------
EX SQL문당 사용하는 커서수 - 해당sql이 사용하는 커서수를 말한다.
SELECT sql_text, count(sid) cnt
FROM v$OPEN_CURSOR
GROUP BY sql_text
ORDER BY cnt DESC
[출처] 오라클 커서(Oracle cursor) 관련 내용|작성자 어린나무
[오라클] 테이블, 컬럼 목록 조회 (0) | 2015.02.13 |
---|---|
Oracle 암호화 / 복호화 (0) | 2015.01.22 |
오라클 DB Link 생성 (0) | 2014.10.23 |
Oracle 패스워드에 사용가능한 특수문자 (0) | 2014.10.10 |
사용자 계정 잠금해제 (0) | 2014.07.01 |