-----------------------------------------------------------------------------------------------------------------------
-- 현재 접속된 세션수
------------------------------------------------------------------------------------------------------------------------
SELECT  inst_id, Count(*) total_cnt, 
        Count( DECODE( server, 'DEDICATED', 1, null)) dedicated_cnt,
        Count( Decode (TYPE, 'BACKGROUND', 1, null)) back_cnt,
        Count( DECODE( Status, 'ACTIVE', 1, NULL)) active_cnt
FROM GV$SESSION
group by inst_id;

------------------------------------------------------------------------------------------------------------------------
-- 실행 중 Session Transaction 확인
------------------------------------------------------------------------------------------------------------------------
/* Formatted on 2018/04/30 오전 10:26:28 (QP5 v5.287) */
  SELECT s.inst_id,
         s.username,
         s.sid,
         s.serial#,
         p.spid,
         s.module,
         s.last_call_et,
         s.sql_exec_start,
         t.used_ublk,
         t.used_urec,
         s.osuser,  --s.command,
         s.event,
         (SELECT object_name
            FROM dba_objects
           WHERE object_id = s.row_wait_obj#)
            "object_name",
         t.start_time,
--         q.sql_text,
         --, t.start_scn
         --,'alter system kill session '''||s.sid||', '||s.serial#||', @'||s.inst_id||''' immediate;' "kill"         
         s.prev_sql_id,
         s.sql_id,
         (select sql_text from gv$sqlstats where sql_id = s.sql_id and rownum <= 1) sql_text,
         s.machine
    FROM gv$session s, gv$process p, gv$transaction t
--         , v$sqlstats q
   WHERE     s.paddr = p.addr(+)
         AND s.taddr = t.addr(+)
         AND (s.status = 'ACTIVE' OR t.used_urec IS NOT NULL)
         AND s.TYPE != 'BACKGROUND'
         --and machine like 'ompwap%'
         --and s.module like '%'
         --AND LNNVL (osuser = '9000091')
         AND s.username not in ('OGG','SYS')
         AND s.inst_id = p.inst_id(+)
         AND s.inst_id = t.inst_id(+)
--  AND s.sql_id = q.sql_id(+)
         --AND s.sql_address = q.address(+)
         --AND s.sql_hash_value = q.hash_value(+)
ORDER BY t.start_time, s.last_call_et DESC ;


select * from gv$sqlstats where sql_id in ('2qsy3txwtzgpp');

--ALTER SYSTEM KILL SESSION '4899,62440';

------------------------------------------------------------------------------------------------------------------------
-- v$session 대체해서 실시간 성능 이력 분석 (PLAN 포함됨)
------------------------------------------------------------------------------------------------------------------------
select sample_time,session_id,session_serial#,user_id,sql_id,
       sql_plan_operation, sql_plan_options, -- 11g 이상
       event,wait_time,time_waited, blocking_session, p1text,p1,p2text,p2,p3text,p3,
       (SELECT object_name
            FROM dba_objects
           WHERE object_id = current_obj#) "object_name", MODULE, 
       (SELECT sql_text
          FROM v$sqlarea a
         WHERE a.sql_id = h.sql_id)
          AS sql_text    
  from v$active_session_history h
 where 1=1
--   and sample_time between to_date ('20201104 092500', 'yyyymmdd hh24miss') and to_date ('20201104 093000', 'yyyymmdd hh24miss')
 and sample_time between sysdate-(interval '5' minute) and sysdate
--  (interval '5' [year|month|day|hour|minute|second]) 
   and session_type <> 'BACKGROUND' ;


------------------------------------------------------------------------------------------------------------------------
-- 특정 시간대의 대기 이벤트 집계 (특정 시간대 어떤 SQL에 어떤 EVENT가 가장 많이 발생했는지 분석)
------------------------------------------------------------------------------------------------------------------------
select user_id,sql_id,event,count (*),sum (wait_time),sum (time_waited)
  from v$active_session_history
 where 1=1
   and sample_time between to_date ('20201104 092500', 'yyyymmdd hh24miss') and to_date ('20201104 093000', 'yyyymmdd hh24miss')
--   and sample_time between sysdate-(interval '5' minute) and sysdate
   and session_type <> 'BACKGROUND'
 group by user_id, sql_id, event
 order by count (*) desc ;
 

------------------------------------------------------------------------------------------------------------------------
-- 특정 구간동안의 ASH 요약 리포트 
/* - SGA 크기, 샘플 수, 액티브 세션 수
- 대기 이벤트 정보(대기이벤트, 대기클래스, 대기시간정보)
- 대기 이벤트의 파라미터를 알 수 있어 어떤 자원에서 경합이 발생하는지 구체적 정보 파악 가능
- Top SQL에 대한 정보(명령 유형, 실행단계, 대기이벤트, Row Source등 정보 제공)를 제공
- Top Session 정보  */
------------------------------------------------------------------------------------------------------------------------
col db_id new_value db_id;
col inst_num new_value inst_num;

select dbid as db_id from v$database;
select instance_number as inst_num from v$instance;

select * from table(
  dbms_workload_repository.ash_report_text(
    :db_id, -- 2377999848
    :inst_num,
    sysdate - 10/24/60/60, -- 10초 
    sysdate
  ));

 

 

 

+ Recent posts