반응형

 

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;;

반응형