오라클은 DBMS에 문제가 발생했을 경우에 그를 진단할 수 있는 정보들을 많이 포함하고 있다. 트레이스 파일은 이러한 정보를 제공해 주는 파일로, DB 서버에 문제가 발생했을시에 그를 진단하고 디버깅 할 수 있도록 정보를 제공하는 파일이다. 오라클은 트레이스 파일 외에도 아래와 같은 수많은 도구들을 통해 DB서버의 정보를 수집하고 제공해준다.

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

이러한 수집 도구들은 버전이 올라감에 따라 점차 발전하고 있다. 10g의 Automatic Workload Repository(AWR), Active Session History(ASH), 11g의 Automatic Dignostic Repository(ADR), SQL Performance Analyzer(SPA)와 같은 강력한 기능들도 추가되었다.

 

트레이스 파일의 생성은 용도에 따라 아래의 두가지 경우로 나뉜다.

  • 기대하고 원했던 트레이스 파일 : 사용자가 직접 DB 성능 정보 수집등을 위하여 DBMS_MONITOR.SESSION_TRACE_ENABLE와 같은 패키지등을 통해 트레이스 파일을 생성할 수 있다.
  • 기대하지도 원하지도 않았던 트레이스 파일 : 오라클 DBMS에 오류가 발생하였을 때에 해당 오류에 대한 분석을 수월하게 진행할 수 있도록 자동으로 트레이스 파일을 생성하기도 한다.

트레이스 파일 요청

트레이스 파일 생성을 요청하기 위해, DBMS_MONITOR패키지를 사용할 수도 있으며, 아래와 같은 명령어를 입력하여 10046 이벤트를 통한 확장 트레이스 파일을 생성해줄 수도 있다.

SQL> ALTER SESSION SET events
  2  '10046 trace name context forever, level 12'
  3  ;

SESSION altered.

 

트레이스 파일이 생성되는 위치

dedicated server 방식을 사용 중이라면 user_dump_dest에, shared server 방식을 사용 중이라면 background_dump_dest에 트레이스 파일이 생성된다.

SQL> show parameter dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      /oracle/ora-base/diag/rdbms/ra
                                                 c/RAC1/trace
core_dump_dest                       string      /oracle/ora-base/diag/rdbms/ra
                                                 c/RAC1/cdump
user_dump_dest                       string      /oracle/ora-base/diag/rdbms/ra
                                                 c/RAC1/trace
SQL> SELECT name, VALUE FROM v$parameter
  2  WHERE name LIKE '%dump_dest%';

NAME                 VALUE
-------------------- --------------------------------------------------
background_dump_dest /oracle/ora-base/diag/rdbms/rac/RAC1/trace
user_dump_dest       /oracle/ora-base/diag/rdbms/rac/RAC1/trace
core_dump_dest       /oracle/ora-base/diag/rdbms/rac/RAC1/cdump

 

show parameter 명령 구문을 사용하거나, v$parameter 뷰를 조회하여 위의 경로들을 확인 가능하다. 
여기서 background_dump_dest는 서버 프로세스가, user_dump_dest는 dedicated server가 사용하는 경로가 된다. core_dump_dest는 프로세스가 갑자기 종료되는등의 심각한 문제가 발생했을 때에 core dump를 생성하기 위해 사용된다.

11g 부터는 ADR 기능이 추가되었고, 이 기능과 관련하여 v$diag_info와 같은 뷰들도 추가되었다.

SQL> SELECT name,VALUE FROM v$diag_info;

NAME                           VALUE
------------------------------ ----------------------------------------------------------------------
Diag Enabled                   TRUE
ADR Base                       /oracle/ora-base
ADR Home                       /oracle/ora-base/diag/rdbms/rac/RAC1
Diag Trace                     /oracle/ora-base/diag/rdbms/rac/RAC1/trace
Diag Alert                     /oracle/ora-base/diag/rdbms/rac/RAC1/alert
Diag Incident                  /oracle/ora-base/diag/rdbms/rac/RAC1/incident
Diag Cdump                     /oracle/ora-base/diag/rdbms/rac/RAC1/cdump
Health Monitor                 /oracle/ora-base/diag/rdbms/rac/RAC1/hm
DEFAULT Trace FILE             /oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_ora_691.trc
Active Problem COUNT           1
Active Incident COUNT          2

11 ROWS selected.

Diag Trace는 background_dump_dest, user_dump_dest를 통합한 경로로 사용된다. Default Trace File은 현재 세션이 사용하고 있는 트레이스 파일명을 의미한다.

트레이스 파일 이름

11g 이후에서는 v$diag_info 뷰를 통해 트레이스 파일명이 조회 가능하지만, 그 이전에는 파일명을 조회하기 힘들었다. 트레이스 파일명은 ORACLE_SID + ora + dedicated server의 프로세스 ID값으로 이루어져 있다. (9i R2부터 적용됨) 따라서 트레이스 파일명을 알고자 한다면, 아래와 같이 v$parameter, v$process, v$session, v$instance뷰를 조회해야한다.

SQL> SELECT c.VALUE || '/' || d.instance_name || '_ora_' || a.spid || '.trc' || CASE WHEN e.VALUE IS NOT NULL THEN '_'||e.VALUE END trace
  2  FROM v$process a, v$session b, v$parameter c, v$instance d, v$parameter e
  3  WHERE a.addr = b.paddr
  4  AND b.audsid = USERENV ('sessionid')
  5  AND c.name = 'user_dump_dest'
  6  AND e.name = 'tracefile_identifier';

TRACE
-----------------------------------------------------------------------------------
/oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_ora_6291.trc
/oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_ora_6274.trc
/oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_ora_691.trc

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

만약 트레이스 파일명을 조회할 수 있는 권한이 없다면, 세션 파라메터인 tracefile_identifier를 아래와 같이 변경해주어 쉽게 파일을 찾아볼 수 있다.

SQL> show parameter tracefile_identifier;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
tracefile_identifier                 string
-- 기본값은 NULL이다.

SQL> ALTER SESSION SET tracefile_identifier='sinminhang';

SESSION altered.

SQL> show parameter tracefile_identifier;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
tracefile_identifier                 string      sinminhang
-- 이와 같이 이 파라메터에 값을 설정해주면

SQL> SELECT name,VALUE FROM v$diag_info;

NAME                           VALUE
------------------------------ ----------------------------------------------------------------------
Diag Enabled                   TRUE
ADR Base                       /oracle/ora-base
ADR Home                       /oracle/ora-base/diag/rdbms/rac/RAC1
Diag Trace                     /oracle/ora-base/diag/rdbms/rac/RAC1/trace
Diag Alert                     /oracle/ora-base/diag/rdbms/rac/RAC1/alert
Diag Incident                  /oracle/ora-base/diag/rdbms/rac/RAC1/incident
Diag Cdump                     /oracle/ora-base/diag/rdbms/rac/RAC1/cdump
Health Monitor                 /oracle/ora-base/diag/rdbms/rac/RAC1/hm
DEFAULT Trace FILE             /oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_ora_691_sinminhang.trc
Active Problem COUNT           1
Active Incident COUNT          2

11 ROWS selected.
-- 해당 세션에서 사용되는 트레이스파일명에 tracefile_identifier 파라메터값이 추가된다. 따라서 아래와 같이 쉽게 해당 파일을 찾아볼 수 있다. (단, 트레이스 파일이 저장되는 디렉토리를 사용할 수 있는 권한이 있어야한다.)

SQL> !find /oracle/ora-base/diag/rdbms/rac/RAC1/trace -name *sinminhang* -print
/oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_ora_691_sinminhang.trc
/oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_ora_691_sinminhang.trm

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

오라클 내부에 에러가 발생했을 시에, 해당 에러에 대한 분석 적보를 트레이스 파일로 생성한다. 에러를 재현해볼 수 없어서 교재와 동일한 테스트를 진행해볼 수는 없었지만, Diag Incident 경로로 이동하여 학인해보면

[oracle@rac1 ~]$ cd /oracle/ora-base/diag/rdbms/rac/RAC1/incident
[oracle@rac1 incident]$ ls -l
total 8
drwxr-xr-x 2 oracle oinstall 4096 Apr 15  2011 incdir_40993
drwxr-xr-x 2 oracle oinstall 4096 May 23  2011 incdir_44817
[oracle@rac1 incident]$ ls *
incdir_40993:
RAC1_mmon_6312_i40993.trc  RAC1_mmon_6312_i40993.trm

incdir_44817:
RAC1_cjq0_15198_i44817.trc  RAC1_cjq0_15198_i44817.trm
[oracle@rac1 incident]$

 

교재에서와 같이 과거에 발생했던 특정 에러들에 대한 트레이스 파일이 모여 있는 것을 확인할 수 있다. incident 경로는 11g의 ADR기능의 일부로 제공되는 것으로, 11g 이상에서만 이와 같이 확인이 가능하며, 아래와 같이 adrci툴을 통해 확인해 보는 것도 가능하다.

[oracle@rac1 incident]$ adrci

ADRCI: Release 11.2.0.2.0 - Production on Thu Feb 2 13:58:03 2012

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

ADR base = "/oracle/ora-base"
adrci> show incident

ADR Home = /oracle/ora-base/diag/rdbms/rac/RAC1:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME                              
-------------------- ----------------------------------------------------------- ---------------------------------------- 
40993                ORA 445                                                     2011-04-15 02:04:20.236000 -04:00       
44817                ORA 445                                                     2011-05-23 00:32:52.476000 +09:00       
2 rows fetched

adrci> show tracefile -I 40993
     diag/rdbms/rac/RAC1/incident/incdir_40993/RAC1_mmon_6312_i40993.trc
adrci> show incident -mode detail -p "incident_id=40993"

ADR Home = /oracle/ora-base/diag/rdbms/rac/RAC1:
*************************************************************************

**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
   INCIDENT_ID                   40993
   STATUS                        ready
   CREATE_TIME                   2011-04-15 02:04:20.236000 -04:00
   PROBLEM_ID                    1
   CLOSE_TIME                    <NULL>
   FLOOD_CONTROLLED              none
   ERROR_FACILITY                ORA
   ERROR_NUMBER                  445
   ERROR_ARG1                    m000
   ERROR_ARG2                    120
   ERROR_ARG3                    <NULL>
   ERROR_ARG4                    <NULL>
   ERROR_ARG5                    <NULL>
   ERROR_ARG6                    <NULL>
   ERROR_ARG7                    <NULL>
   ERROR_ARG8                    <NULL>
   ERROR_ARG9                    <NULL>
   ERROR_ARG10                   <NULL>
   ERROR_ARG11                   <NULL>
   ERROR_ARG12                   <NULL>
   SIGNALLING_COMPONENT          background_proc
   SIGNALLING_SUBCOMPONENT       <NULL>
   SUSPECT_COMPONENT             <NULL>
   SUSPECT_SUBCOMPONENT          <NULL>
   ECID                          <NULL>
   IMPACTS                       0
   PROBLEM_KEY                   ORA 445
   FIRST_INCIDENT                40993
   FIRSTINC_TIME                 2011-04-15 02:04:20.236000 -04:00
   LAST_INCIDENT                 44817
   LASTINC_TIME                  2011-05-23 00:32:52.476000 +09:00
   IMPACT1                       0
   IMPACT2                       0
   IMPACT3                       0
   IMPACT4                       0
   KEY_NAME                      ProcId
   KEY_VALUE                     24.1
   KEY_NAME                      Client ProcId
   KEY_VALUE                     oracle@rac1.minhang2.iptime.org.6312_47635228674336
   KEY_NAME                      SID
   KEY_VALUE                     25.1
   OWNER_ID                      1
   INCIDENT_FILE                 /oracle/ora-base/diag/rdbms/rac/RAC1/trace/RAC1_mmon_6312.trc
   OWNER_ID                      1
   INCIDENT_FILE                 /oracle/ora-base/diag/rdbms/rac/RAC1/incident/incdir_40993/RAC1_mmon_6312_i40993.trc
1 rows fetched

레이블 (0)

  • 레이블 없음
댓글 쓰기...

첨부 파일  (0)

첨부 파일 추가하기
공유된 파일이 아직 없습니다.