SQL을 작성하는 것은 누구나 가능하다. 하지만 성능이 최적화된 SQL은 아무나 작성할수가 없다.
일반 개발자들은 SQL을 작성하며, 어느어느 테이블에서 어떤 데이터를 출력하는데만 집중하지, 이 SQL이 어떻게
내부적으로 작동할것인 가에 대한 고민은 잘 하지 않는편인듯 하다.
본인이 작성한 SQL이 내부적으로 어떤 경로를 통해 어떻게 수행될것인가 하는정보는 SQL TRACE를 통해 조회가
가능하다.
SQL TRACE는 SQL SCRIPT를 수행하며, 발생한 정보를 TRACE 파일에 기록하는데 이는 튜닝의 지표가 되는 요소들
실행계획, 처리에 필요한 시간, 처리중 발생한 I.O의 양이나 wait 상황등에 대한 정보가 기록된다.
따라서, SQL TRACE는 SQL튜닝시 가장 많이 사용되는 도구이며, 강력한 리포트이다. 그럼 실제로 SQL 트레이스를
어떻게 사용하는가 에 대해 포스팅 하겠다.
세션에 트레이스 걸기
1. 아래의 쿼리는 세션레벨로 트레이스 파일의 식별자를 붙이는 작업을 하는 쿼리이다.
막상 트레이스 파일이 들어있는 폴더로 들어갈 경우 본인의 트레이스 파일이 무엇인지 찾기가 난해하다.
이럴때 아래와 같이 트레이스 파일의 식별자를 붙이는 작업을 하게되면, 본인의 트레이스파일을 쉽게 찾을수 있다.
ALTER SESSION SET TRACEFILE_IDENTIFIER='GEO';
2. 트레이스 걸기
아래의 쿼리는 본인이 접속한 세션에 SQL TRACE가 수행되도록 하는 쿼리이다.
ALTER SESSION SET SQL_TRACE = TRUE;
3. 쿼리수행
이 단계에서는 SQL TRACE가 수행되고 있는중에 실제로 본인이 작성한 SQL을 수행하여, SQL TRACE에 본인이 작성한
SQL의 수행내역을 적재하는 단계이다.
4. 트레이스 종료하기
아래의 SQL은 쿼리수행이 완료되었으므로, SQL TRACE를 종료하는 SQL이다.
ALTER SESSION SET SQL_TRACE = FALSE;
트레이스파일 생성위치 확인 SQL
SELECT R.VALUE || '/' || LOWER(T.INSTANCE_NAME) || '_ora_' || LTRIM(TO_CHAR(P.SPID)) || '.trc' 'TRACE_PATH'
FROM v$process p, v$session s, v$parameter r, v$instance t
WHERE P.ADDR=S.PADDR
AND R.NAME='user_dump_desc'
AND S.SID=(SELECT SID FROM V$MYSTAT WHERE ROWNUM=1);
트레이스파일 생성위치 확인 결과
'DATABASE > ORACLE' 카테고리의 다른 글
오라클 클러스터링팩터 (0) | 2021.12.07 |
---|---|
오라클 다이나믹뷰 정리 (0) | 2021.12.07 |
오라클 DDL 로그 만들기 (0) | 2021.07.27 |
데이터베이스 용량 산정 (0) | 2021.07.23 |
오라클 리스너 포트 추가 (0) | 2021.04.06 |