1. 실행중인 SQL 지연시간 체크 및 세션 체크
SELECT A.MESSAGE
, A.START_TIME
, A.LAST_UPDATE_TIME
, A.TIME_REMAINING
, ROUND((SOFAR/TOTALWORK)*100,0)||'%' AS PROGESS
, B.SQL_TEXT
FROM V$SESSION_LONGOPS A
, V$SQL B
WHERE A.SQL_ADDRESS=B.ADDRESS
AND ROWNUM<=10
AND A.TIME_REMAINING>0;
SELECT ROWNUM NO
, PARSING_SCHEMA_NAME
, to_char(ELAPSED_TIME/(1000000 * decode(executions,null,1,0,1,executions)),999999.99 ) 평균실행시간
, executions 실행횟수
, SQL_TEXT 쿼리
, SQL_FULLTEXT
FROM V$SQL
WHERE LAST_ACTIVE_TIME > SYSDATE-(1/24*2)
AND ELAPSED_TIME >= 1 * 1000000 * decode(executions,null,1,0,1,executions)
ORDER BY 평균실행시간 DESC, 실행횟수 DESC;
2. Oracle sessions & process limit와 현재 사용수치 찾는 쿼리
select resource_name, current_utilization, max_utilization, limit_value
from v$resource_limit
where resource_name in ('sessions', 'processes');
select
substr(a.spid,1,9) pid,
substr(b.sid,1,5) sid,
substr(b.serial#,1,5) ser#,
substr(b.machine,1,6) box,
substr(b.username,1,10) username,
substr(b.osuser,1,8) os_user, -- 접속자의 OS 사용자 정보
substr(b.program,1,30) program, -- 접속 프로그램
from v$session b, v$process a
where
b.paddr = a.addr
and type='USER'order by spid;
3. 현재 활성화된 SQL및 Process ID찾기
SELECT
a.sid, -- SID
a.serial#, -- 시리얼번호
a.status, -- 상태정보
a.process, -- 프로세스정보
a.username, -- 유저
a.osuser, -- 접속자의 OS 사용자 정보
b.sql_text, -- sql
c.program -- 접속 프로그램
FROM
v$session a,
v$sqlarea b,
v$process c
WHERE
a.sql_hash_value=b.hash_value AND a.sql_address=b.address AND a.paddr=c.addr AND a.status='ACTIVE';
4. 현재 시간 기점으로 총 세션과 Active 세션 찾기
select to_char(sysdate, 'YYYY/MM/DD hh24:mi:ss') "Time",
count(*) "Total Sessions",
count(decode(status, 'ACTIVE', 1) ) "Active Sessions"
from v$session;;