2012년 9월 14일 금요일
PID, SID를 이용하여 oracle query 확인
DB Server의 Resource를 과도하게 사용하는 프로세스를 확인할 때 사용한다.
PID를 알고 있을 경우
SELECT S.USERNAME USERNAME, S.OSUSER, S.PROGRAM, T.SQL_TEXT SQL, T.PIECE
FROM V$SQLTEXT T, V$SESSION S,
(SELECT S.USERNAME USERNAME, S.OSUSER OSUSER, S.PROGRAM PROGRAM
FROM V$SESSION S, V$PROCESS P
WHERE P.ADDR = S.PADDR
AND S.SID IN (
SELECT S.SID
FROM V$SESSION S,V$PROCESS P
WHERE P.ADDR=S.PADDR AND P.SPID = 6166)
) U
WHERE T.ADDRESS = S.SQL_ADDRESS
AND S.USERNAME = U.USERNAME
AND S.OSUSER = U.OSUSER
AND S.PROGRAM = U.PROGRAM
ORDER BY PIECE
;
SELECT SQL_TEXT
FROM V$SQLAREA
WHERE HASH_VALUE = (
SELECT S.SQL_HASH_VALUE
FROM V$SESSION S, V$PROCESS P
WHERE P.ADDR=S.PADDR AND P.SPID=6166
);
SID를 알고 있을 경우
SELECT /*+ RULE ORDERED */
S.SID,
S.SERIAL#,
S.SQL_HASH_VALUE,
Q.SQL_TEXT
FROM V$SESSION S,
V$SQLTEXT Q
WHERE S.SQL_HASH_VALUE = Q.HASH_VALUE
AND S.SQL_ADDRESS = Q.ADDRESS
AND S.SID = 948
AND S.SQL_HASH_VALUE <> 0
ORDER BY S.SID, Q.PIECE
;
process 확인은 다음의 명령어를 사용했다.
ps -ef -o user,pid,ppid,pcpu,vsz,pmem,nlwp,etime,time,args | sort -r -k 4 | head -n 15
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기