è Total Session & Active Session 조회
select INST_ID,to_char(sysdate,'yyyy/mm/dd hh24:mi:ss') "Time",
count(*) "Total Sessions",
count(decode(status, 'ACTIVE',1) ) "Active Sessions"
from gv$session
group by inst_id;
è Kill 할 Session 확인.
- STATUS 가 INACTIVE 인 SESSION을 조회 하는 쿼리.
SELECT sid,serial#,status,last_call_et,to_char(logon_time,'YYYY-MM-DD hh24:mi:ss') LOGON_TIME
FROM V$SESSION
WHERE status='INACTIVE'
AND username not in ('SYS'') -- 제외 할 USERNAME 입력
AND last_call_et > 86400 – INACTIVE 상태로 된 시간 (단위 : 초, ex : 86400 = 하루)
n LOGON_TIME : 로그온 시간(CONNECTION 맺어진 시간)
n LAST_CALL_ET : Session이 ACTIVE or INACTIVE 상태가 된 시간 (단위 : 초)
è KILL Session 쿼리 추출
- 위의 쿼리를 수행 후 조회 된 Session 들을 KILL 해야 될 때 수행하는 쿼리
select 'ALTER SYSTEM KILL SESSION '''||sid||','||serial#||''''||' immediate ;' smt
from v$session
where status ='INACTIVE'
and username not in ('SYS') – 제외 할 USERNAME 입력
and last_call_et > 86400; -- INACTIVE 상태로 된 시간 (단위: 초, ex : 86400 = 하루)
※ 주의점: Session 을 Kill 하게 되면 SMON에 의해서 Clean-Up 되는 시간이 필요함.
SQL에서 Session Kill 후에 OS 에서 kill -9 명령어를 또다시 날리게 되면 SMON을
Kill 하게 되므로 DB가 Shutdown 됨.
'DB - ORACLE > Oracle Command' 카테고리의 다른 글
ADRCI를 이용해 ORA 메시지 추출하기 (0) | 2015.06.03 |
---|---|
Rawdevice 에서 Filesystem 으로 데이터파일 변환하는 방법 (0) | 2015.04.21 |
Kill 할 Session 확인 & 쿼리 추출 (1) | 2015.03.18 |
Commit 안된 정보 조회 쿼리 (0) | 2015.02.02 |
RAC IP & Device 변경 (0) | 2015.01.21 |
raw device를 타 서버 복사 방법 (0) | 2015.01.20 |
-
otsteam 박용석 2015.03.23 17:25 신고
System Admin 들은 Unix OS로 치면 좀비 프로세스 defunct 난 프로세스...를 정리하는데.
이와 비슷하게
오라클 DB 에서는 inactive 상태로 하루 이상 지난 세션들을 정리하는 쿼리입니다.
last_call_et 컬럼의 뜻은 마지막으로 세션에서 CALL 한 후 흘러간 초를 나타냅니다.
즉 세션 정보가 inactive와 active를 반복하다가 inactive 된 시점에서 얼마나 지낫는지 확인 하는 뜻 입니다.