DB서버의 오라클 프로세스가 비정상적으로 증가됐다.
어떤프로세스에서 커서를 많이 사용하는지 조회해보자.
SELECT sid, count(sid) "cursor" FROM v$open_cursor --WHERE user_name = 'SCOTT' GROUP BY sid order by "cursor" desc;
sid와 cursor값을 통해 어떤 sid가 커서가 가장높은지 확인할수 있다.
그리고 현재실행중인 SQL의 커서수를 확인하는 쿼리를 통해 어떤쿼리가 비정상적으로 많이 사용되는지 확인 후
해당 쿼리가 포함된 소스를 체크해볼수 있다.
SELECT sql_text, count(sid) cnt FROM v$OPEN_CURSOR GROUP BY sql_text ORDER BY cnt DESC;
쉽게 얘기해서 CNT(커서수)가 가장 높은게 현재 실행중인 SQL의 호출량이라고 보면 되겠다.
저 쿼리가 포함된 소스를 찾아서 DB.CLOSE를 해주던, 쿼리를 손보면 좀..괜찮아 질듯 싶다.
그리고 아래처럼 현재 DB서버 프로세스에서 오라클 프로세스의 갯수와 정보를 확인한다.
오라클 DB서버 프로세스 증가를 추적하고 막아보자.
SELECT /*+ rule */ s.status "Status", s.serial# "Serial#", s.TYPE "Type", s.username "DB User", s.osuser "Client User", s.server "Server", s.machine "Machine", s.module "Module", s.terminal "Terminal", s.program "Program", p.program "O.S. Program", s.logon_time "Connect Time", lockwait "Lock Wait", si.physical_reads "Physical Reads", si.block_gets "Block Gets", si.consistent_gets "Consistent Gets", si.block_changes "Block Changes", si.consistent_changes "Consistent Changes", s.process "Process", p.spid, p.pid, s.serial#, si.sid, s.sql_address "Address", s.sql_hash_value "Sql Hash", s.action FROM v$session s, v$process p, sys.v_$sess_io si WHERE s.paddr = p.addr(+) AND si.sid(+) = s.sid AND s.username IS NOT NULL AND NVL (s.osuser, 'x') <> 'SYSTEM' AND s.TYPE <> 'BACKGROUND' ORDER BY 3;
'IT' 카테고리의 다른 글
[tomcat] 한개의 서버에 톰캣 여러개 셋팅방법 (0) | 2018.10.27 |
---|---|
[oracle] 프로세스,세션 추적 쿼리모음 (모니터링) (0) | 2018.10.27 |
mysql 한글깨짐 현상시 설정파일 셋팅방법 (0) | 2018.10.27 |
mysql backup script 작성하기 (0) | 2018.10.27 |
Transaction Isolation Level에 관한 정리 (0) | 2018.10.27 |