오라클 디버그를 위한 Trace 로그 파일 출력하는 방법

오라클을 사용하여 프로그램을 개발할때 Oracle에서 실행한 SQL을 출력해서 확인 하고 싶은 경우가 있습니다.

오라클 Trace 로그를 설정해주면 실행 했던 SQL를 로그로 출력할 수 있습니다.

 

Trace 로그 출력 장소

sys유저로 접속해서 Trace 로그 출력 장소를 확인합니다.

확인 하는 방법은 아래와 같습니다.

SHOW PARAMETER USER_DUMP_DEST

 

결과

NAME                                 TYPE                   VALUE

------------------------------------ ---------------------- ------------------------------

background_dump_dest                 string                 C:\oraclexe\app\oracle\diag\rdbms\xe\xe\trace

 

Oracle 11g 의 경우에는 C:\oraclexe\app\oracle\diag\rdbms\xe\xe\trace 에 출력 되도록 되어 있습니다.

 

Trace 로그 출력 설정

Trace 로그를 출력하도록 설정 하기 위한 쿼리 입니다.

ALTER SYSTEM SET SQL_TRACE = TRUE;

 

위의 설정으로 Trace 로그가 출력되게 되었습니다.

Trace 로그에 바인드 변수를 출력 하도록 설정

Trace 로그에 실행된 쿼리가 출력될때 바인드 변수의 값이 출력되지 않는 경우는 다음의 설정을 해줘야합니다.

ALTER SYSTEM SET EVENTS '10046 trace name context forever, level 4';

 

10046이벤트의 레벨을 4로 해주었습니다.

이것은 Trace 로그에 바인드 변수가 출력 되도록 설정 해준다는 의미 입니다.

설정 할 수 있는 레벨은 다음과 같습니다.

레벨설정 내용
 1 SQL Trace 만 출력
 4 SQL Trace 와 바인드 변수 출력
 8 SQL Trace 와 대기 이벤트 출력 
 12 SQL Trace 와 바인드 변수, 대기 이벤트 출력 

 

Trace 로그 출력 안하도로 설정

10046이벤트를 원상태로 돌려놓기

ALTER SYSTEM SET EVENTS '10046 trace name context off';

 

Trace 로그 출력 끄기

ALTER SYSTEM SET SQL_TRACE = FALSE;

댓글