1. Sql trace 은?
- SQL Trace는 실행되는 SQL문의 실행통계를 세션별로 모아서 트레이스 파일을 만듭니다.
- SQL Trace는 세션과 인스턴스 레벨에서 SQL문장들을 분석 할 수 있습니다.
- SQL Trace에 의해 생성된 파일의 확장자는 .TRC 입니다.
- .TRC파일은 직접 읽을수가 없으므로 반드시 TKPROF 유틸리티를 실행 시켜야 합니다.
- init.ora파일에서 SQL Trace를 지정하여 인스턴스 레벨로 Trace를 수행시키면 전체적인 수행능력이 20~30% 정도 감소합니다.
2. SQL Trace에서 제공하는 정보
- parse, execute, fetch count : 오라클의 SQL 처리 작업에서 parse,execute,fetch 작업들이 처리된 횟수
- 수행된 CPU 프로세스 시간과 경과(Elapsed)된 질의 시간들 : SQL문을 실행하는데 소비된 CPU시간과 실질적인 경과시간
- 물리적(Disk)/논리적(Memory) 읽기를 수행한 횟수 : 질이의 parse, execute, fetch 부분들에 대해 디스크에 있는 데이터파일들로부터 읽은 데이터 블록들의 전체 개수
- 처리된 로우수 : 결과 set을 생성하기 위해 오라클에 의해 처리된 행의 전체 개수
- 라이브러리 캐쉬 miss : 분석된 문장이 사용되기 위해 라이브러리 캐쉬 안으로 로드되어야 하는 횟수
3. SQL Trace와 관련된 파라미터
RDBMS가 추가적인 CPU시간, 실행시간등을 모을수 있게 합니다.
이 시간통계는 SQL악성 여부를 판단하는 중요한 요소가 됩니다.
ALTER SESSION SET TIMED_STATISTICS=TRUE 또는 init.ora파일에 설정
- SQL_TRACE : SQL Trace의 수행여부
ALTER SESSION SET sql_trace=TRUE 또는 init.ora파일에 설정
- USER_DUMP_DEST : Trace파일이 생성되는 디렉토리를 지정 합니다.
- MAX_DUMP_FILE_SIZE : 트레이스파일의 최대 크기(단위: OS블럭수)
4. SQL Trace 실행 방법
1. ALTER SESSION SET SQL_TRACE=TRUE;
2 .EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(TRUE)
3. EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(session_id, serial_id, TRUE)
4. Init parameter 설정: SQL_TRACE = TRUE