오라클 쿼리 실행 시간
출처 : http://mainia.tistory.com/769
1. SET TIMING ON 사용하기 |
간혹 Stored Procedure 실행시 쿼리의 구간 별 시간을 알고
싶을 때가 있습니다. 전체 SP 수행 시간은 Object 테이블을 뒤져서
보면 되는데 각 단계별로 out print 를 찍으면서 보고 싶을 때
SET TIMING ON 을 사용하면 됩니다.
Set timing on; 후 timing start 로 시작하고 timing stop 로
마무리를 하면 됩니다. 그럼 그 시간이 측정되어 로그에
찍히게 됩니다.
Execute as Script (F5) 로 실행
SET TIMING ON; |
Toad Menu > View > Query Viewer 를 사용해도 된다.
Execute Statement (F9) 로 실행해야 보임
2. DBMS_UTILITY.GET_TIME 사용하기 |
다른 방법은 DBMS_UTILITY.GET_TIME 을 사용하는 방법입니다.
현재시간을 리턴하게 되므로 쿼리 실행후 그 차이 값을 계산하는
방법입니다. 이것이 더 불편할거 같아요.
변수를 선언하고 그 변수에 현재 시간을 저장한 후 마지막에
값을 연산해서 초로 계산하게 되는 것이다. GET_TIME 은
100분의 1초를 리턴하게 됩니다.
DELARE |
======================================================================
ORACLE서버에서 수행시간이 긴 쿼리 찾기 쿼리
SELECT ROWNUM NO,
PARSING_SCHEMA_NAME,
to_char(ELAPSED_TIME/(1000000 * decode(executions,null,1,0,1,executions)),999999.9999 ) 평균실행시간,
executions 실행횟수,
SQL_TEXT 쿼리 ,
SQL_FULLTEXT
FROM V$SQL
WHERE LAST_ACTIVE_TIME > SYSDATE-(1/24*2)
-- AND LAST_ACTIVE_TIME BETWEEN
to_Date('20111226163000','YYYYMMDDHH24MISS') AND
to_Date('20111226170000','YYYYMMDDHH24MISS')
-- AND ELAPSED_TIME >= 1 * 1000000 * decode(executions,null,1,0,1,executions)
and PARSING_SCHEMA_NAME = 'ZIPCODE'
ORDER BY 평균실행시간 DESC, 실행횟수 DESC;
SELECT TO_CHAR (SID) sid, serial# serialNumber,
SUBSTR (TO_CHAR (last_call_et), 1, 6) executeSeconds, userName, machine,
b.sql_text sqlText
FROM v$session a, v$sqltext b
WHERE username NOT IN ('SYSTEM', 'SYS')
AND a.TYPE != 'BACKGROUND'
AND a.status = 'ACTIVE'
AND a.sql_address = b.address(+)
AND a.sql_hash_value = b.hash_value(+)
ORDER BY a.last_call_et DESC, a.SID, a.serial#, b.address, b.hash_value, b.piece
현재 실행되고 있는 쿼리 와 실행 시간
SELECT TO_CHAR (SID) sid, serial# serialNumber,
SUBSTR (TO_CHAR (last_call_et), 1, 6) executeSeconds, userName, machine,
b.sql_text sqlText
FROM v$session a, v$sqltext b
WHERE username NOT IN ('SYSTEM', 'SYS')
AND a.TYPE != 'BACKGROUND'
AND a.status = 'ACTIVE'
AND a.sql_address = b.address(+)
AND a.sql_hash_value = b.hash_value(+)
ORDER BY a.last_call_et DESC,
a.SID,
a.serial#,
b.address,
b.hash_value,
b.piece