oracle top 10 query 조회 하는 방법이 있나요?? 0 3 4,933

by 골커 [2016.08.22 11:14:18]


오라클에서 가장 많이 사용하는 top 10 정도 쿼리 조회해달라고 하시는데

sys계정으로 조회가 가능한가요??? 

가능하다면 쿼리가 어떻게 되는지 부탁드립니다 ㅜㅜ

-- sys 계정을 통해 전체 oracle내 가장 많이 사용한 쿼리 5~10개 정도 조회 --

by jkson [2016.08.22 14:20:44]

select * from v$sql
where last_active_time >= '2016-08-22'
order by executions desc

 

이렇게 하면 수행횟수별로 sort되기는 할텐데.. 문제는 전체 수행횟수라

오늘 기준에서 무엇이 제일 많이 실행되었나.. 로 보려고 하면 어떻게 하면 될지 모르겠네요.

 

AWR Report 같은 거 사용 가능하시면 SQL ordered by Executions 부분 보시면 될 것 같아요.


by 김치찌게 [2016.08.22 16:49:43]

AWR에서 통계만 보시려면 DBA_HIST_SQLSTAT view 이용하시면 됩니다. 

해당 view 에서 EXECUTIONS_DELTA, CPU_TIME_DELTA, ELAPSED_TIME_DELTA, BUFFER_GETS_DELTA 등 

입맛에 맞게 뽑으시면 됩니다. 

 

--  수행횟수로 뽑을 경우 

-- 조회 구간 금일 09:00 ~ 15:00 ( snapshot interval에 따라 조금 다를 수 있음..)

SELECT * FROM (
  SELECT S.SQL_ID, SUM(CPU_TIME_DELTA)/100000 CPUTIME, SUM(EXECUTIONS_DELTA) TOTAL_EXECUTED,
  DBMS_LOB.SUBSTR(SQL_TEXT,2000,1) SQLTEXT
  FROM DBA_HIST_SQLSTAT H, DBA_HIST_SQLTEXT S, DBA_HIST_SNAPSHOT T
  WHERE S.SQL_ID = H.SQL_ID
  AND H.SNAP_ID = T.SNAP_ID
  AND T.BEGIN_INTERVAL_TIME BETWEEN TO_DATE('20160822 09:00:00','YYYYMMDD HH24:MI:SS') AND TO_DATE('20160822 15:00:00','YYYYMMDD HH24:MI:SS')
  GROUP BY S.SQL_ID, DBMS_LOB.SUBSTR(SQL_TEXT,2000,1)
  ORDER BY 3 DESC
)
WHERE rownum < 11;

 


by jkson [2016.08.23 08:10:16]

우왕 좋은 쿼리네요~ 잘쓸게요~~^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입