3. 트레이스 파일

트레이스 파일은 데이터베이스 안에서 발생하는 다양한 정보를 디버깅하기 위한 소스 역햘을 하는 파일이다.
DBMS_MONITOR.SESSION_TRACE_ENABLE을 시행하여 성능 이벤트 관계 트레이스 파일을 생성할 수 있다.
디버깅 할 수 있는 방법은 다음과 같다.

  • V$ views
  • AUDIT 명령어
  • Resource Manager ( DBMS_RESOURCE_MANAGER)
  • Oracle event
  • DBMS_TRACE
  • Database event trigger
  • SQL_TRACE/DBMS_MONITOR

2가지 종류의 트레이스 파일

  • DBMS_MONITOR.SESSION_TRACE_ENABLE로 통해 직접 생성하는 트레이스 파일
  • Oracle 서버가 버그나 장애, 오류로 인해 발생시키는 트레이스 파일

3.1 트레이스 파일 요청

다음과 같이 설정하여 트레이스 파일을 생성할 수 있다.


alter session set events '10046 trace name context forever, level 12'

3.1.1 파일 위치

오라클은 데이터베이스 서버에 두 위치 중 하나에 트레이스 파일을 생성한다.

  • dedicated server connection을 사용하는 경우 : user_dump_dest 파라미터 위치에 생성한다.
  • shared server connection을 사용하는 경우: background_dump_dest 파라미터 위치에 생성한다.

트레이스 파일이 생성되는 위치를 알고 싶은 경우 show parameter dump_dest 명령어를 통해 확인이 가능하다.


SQL> show parameter dump_dest;

SQL> select name, value from v$parameter where name like '%dump_dest%';

위치 정보별 역할

  • background dump destination : 서버 프로세스가 사용
  • core dump destination : 프로세스 중단과 같은 심각한 문제에 직면했을 때 사용
  • user dump destination : dedicated server가 트레이스 파일을 생성하는 위치

[V$DIAG_INFO]
오라클 11g에 새롭게 추가된 뷰로 ADR과 같은 유용한 기능이 사용하는 트레이스 정보에 대해 손쉽게 확인할 수 있는 인터페이스 기능이다.


SQL> with home
as
(select value home 
from v$diag_info
where name = 'ADR Home'
)
select name, 
       case when value <> home.home
       then replace(value, home.home, '$home$')
       else value
       end value 
from v$diag_info, home
/

3.1.2 이름 변환

오라클 11g 이전에 트레이스 파일을 알기 위해 필요한 view

  • V$PARAMETER : user_dump_dest의 위치를 사용하는 트레이스 파일들을 확인, 부가적으로 사용자가 사용하고 있을 트레이스 파일명에 대한 tracefile_identifier 확인
  • V$PROCESS : 프로세스 ID를 찾는데 사용
  • V$SESSION : 다른 view에서 여러분의 세션 각각에 대한 정확한 정보를 얻고자 할 때 사용
  • V$INSTANCE : ORACLE_SID를 얻고자 할 때 사용

손쉽게 트레이스 파일명을 생성하기 위한 쿼리


SQL> column trace new_val T
SQL> select c.value || '/' || d.instance_name || '_ora_' || a.spid || '.trc' ||
     case when e.value is not null then '_' || e.value end trace
from v$process a, v$session b, v$parameter c, v$instance d, v$parameter e
where a.addr = b.paddr
and b.audsid = userenv ('sessionid')
and c.name = 'user_dump_dest'
and e.name = 'tracefile_identifier'
/

3.1.3 트레이스 파일에 꼬리표 달기

세션 파라미커인 tracefile_identifier를 이용하면 V$SESSION, V$PROCESS에 대한 권한이 없어도 꼬리표를 달 수 있다.


SQL> alter session set tracefile_identifier = 'Look_For_Me';

3.2 내부 오류를 담기 위해 생성된 트레이스 파일들

이렇게 생성된 파일들은 오라클 support 이용시 제출하여 서비스 요청시 사용할 때 사용한다.