v$session v$sql
schemaname, elasped_time, user_io_wait_time
A 1 2
A 2 4
A 24 22
B 2 4
B 3 2
위와같은 테이블이 있습니다.
v$sql과 v$session같은 딕셔너리 뷰에서 쿼리들에 대한 elapsed_time과 각 통계정보들을 조회하는 쿼리를 작성하고 있습니다.
select se.schemaname,
round(ratio_to_report(sum(s.elapsed_time)) over()*100, 2 )||'%'as elapsed_time,
round(ratio_to_report(sum(s.user_io_wait_time)) over()*100, 2)||'%' as user_io_wait_time
from v$session se, v$sql s
group by se.schemaname;
이런식으로 쿼리를 짯는데, ratio_ti_report()함수안에 다른컬럼값의 sum값을 넣어도
elapsed_time 컬럼과 user_io_wait_time 컬럼의 값이 같게 나옵니다...
원하는 건 v$sql에 있는 통계정보들을 v$session의 schemaname별로 합계를 구한뒤 그 합계들이 전체 합중에
어떤 비율을 가지고있는지 에 대한 쿼리를 원하는데, 아직 모르는게 너무 많습니다 ㅠㅠ
SELECT se.schemaname , SUM(s.cpu_time ) cpu_time_sum , SUM(s.elapsed_time) elapsed_time_sum , ROUND(RATIO_TO_REPORT(SUM(s.cpu_time )) OVER()*100, 2)||'%' AS cpu_time_rat , ROUND(RATIO_TO_REPORT(SUM(s.elapsed_time)) OVER()*100, 2)||'%' AS elapsed_time_rat FROM v$session se , v$sql s WHERE se.sql_id = s.sql_id -- 조인 조건 누락 GROUP BY se.schemaname ;