# 전체 세션 보기 쿼리
SQL> SELECT B.SPID, A.*
2 FROM V$SESSION A, V$PROCESS B
3 WHERE A.PADDR = B.ADDR;
# 특정 계정의 세션 검색 - 프로세스아이디(SPID)
SQL> SELECT B.SPID
2 FROM V$SESSION A, V$PROCESS B
3 WHERE A.PADDR = B.ADDR
4 AND A.USERNAME = 'SUNSHINY';
SPID
------------
23596
23624
-- 해당 오라클 계정을 사용하는 유저 정보 포함
SQL> SELECT A.SID, A.USER#, A.OSUSER, B.SPID
2 FROM V$SESSION A, V$PROCESS B
3 WHERE A.PADDR = B.ADDR
4 AND A.USERNAME = 'SUNSHINY';
SID USER# OSUSER SPID
---------- ---------- ----------------------------------
140 57 testPC01 27584
139 57 testPC01 27586
148 57 testPC02 3384
149 57 testPC02 3303
132 57 testPC02 3305
136 57 testPC02 3325
134 57 testPC02 3394
145 57 testPC02 3418
147 57 testPC03 3523
138 57 testPC03 3498
137 57 testPC03 3500
11 rows selected.
# 위에서처럼 'SUNSHINY' 계정을 사용하는 프로세스아이디(SPID)가 검색됩니다.
# Unix 환경에서 해당 프로세스 사용 권한이 있는 계정으로 프로세스를 죽입니다.
명령어 : kill -9
[root@localhost ~]# kill -9 23596 23624
Wait 세션확인
SELECT NVL(a.username, '(oracle)') AS username,
a.osuser,
a.sid,
a.serial#,
d.spid AS process_id,
a.wait_class,
a.seconds_in_wait,
a.state,
a.blocking_session,
a.blocking_session_status,
a.module,
TO_CHAR(a.logon_Time,'DD-MON-YYYY HH24:MI:SS') AS logon_time
FROM v$session a,
v$process d
WHERE a.paddr = d.addr
AND a.status = 'ACTIVE'
ORDER BY 1,2;
-- 현재 접속한 세션 보기
select username, program from v$session;
특정 세션 죽이기
select * from v$session
alter system kill session '10,3';
--여기서 10은 sid, 3은 serial# 값이다.
세션 강제 종료할 때 해당 세션은 더이상 sql문을 실행하는 것을 막는다.
종료 시점에 sql 실행 중이라면 모두 롤백된다. 세션에 의해 사용되던 LOCK 과 기타 자원들도 모두 해제된다.
'ORACLE > Lock' 카테고리의 다른 글
ORA-00031: session marked for kill (0) | 2020.04.27 |
---|