트레이스 파일

트레이스 파일이란

  • Oracle 의 내장된 디버그 기능 중의 하나
  • DBMS 내부 이벤트 정보, Application 의 SQL 및 대기 이벤트 및 성능관련 정보 파악 가능


트레이스 파일의 종류는

  • 사용자에 의해 생성 된 파일: User Trace File
  • 600, 7445 에러 등으로 인해 오라클이 자동 생성한 파일


트레이스 파일 생성

  • alter session 구문 사용
  • alter session 할 수 있는 System Privilege 필요

SQL> alter session set sql_trace=true;
 ...
SQL> alter session set sql_trace=false;


dbms_monitor 패키지 호출
  • dbms_monitor 패키지를 수행할 수 있는 Object Privilege 필요

SQL> exec dbms_monitor.session_trace_enable;
 ...
SQL> exec dbms_monitor.session_trace_disable;


oradebug 사용
  • sysdba 유저로 사용 가능하며, 타 세션에 대한 특정 이벤트 트레이스(ex 10046) 생성 가능

SQL> oradebug setosipd <세션의 SPID>
SQL> oradebug event 10046 trace name context forever, level 12
...
SQL> oradebug Event 10046 trace name context off
SQL> oradebug tracefile_name --tracefile name 생성


위치는

10G 이하
  • 오라클 백그라운드 프로세스가 생성한 트레이스는 Background Dump Destination 에 생성
  • 기본적으로 $ORACLE_BASE/admin/SID/bdump
  • 사용자가 생성한 트레이스는 User Dump Destination 에 생성
  • 기본적으로 $ORACLE_BASE/admin/SID/udump
  • background_dump_dest, user_dump_dest, core_dump_dest 파라메터 확인하여 실제 경로 조회 가능


11g 이상
  • Diagnostic 관련 경로가 하나로 통합, udump 와 bdump 통합
  • $ORACLE_BASE/diag 안에 DB, Listener 로그 등 통합되어 있음
  • diagnostic_dest 파라메터 변경 시 bdump, udump, cdump 경로 자동 변경 됨
  • background_dump_dest, user_dump_dest, core_dump_dest 파라메터 확인하거나 v$diag_info 뷰 조회하여 실제 경로 조회 가능

SQL> show parameter diag

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
diagnostic_dest                      string      /app/oracle/rman_restore
SQL> show parameter dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      /app/oracle/rman_restore/diag/
                                                 rdbms/reco3/RECO3/trace
core_dump_dest                       string      /app/oracle/rman_restore/diag/
                                                 rdbms/reco3/RECO3/cdump
user_dump_dest                       string      /app/oracle/rman_restore/diag/
                                                 rdbms/reco3/RECO3/trace
SQL>
SQL> alter system set diagnostic_dest='/app/oracle' scope=both;

System altered.

SQL> show parameter dump_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
background_dump_dest                 string      /app/oracle/diag/rdbms/reco3/R
                                                 ECO3/trace
core_dump_dest                       string      /app/oracle/diag/rdbms/reco3/R
                                                 ECO3/cdump
user_dump_dest                       string      /app/oracle/diag/rdbms/reco3/R
                                                 ECO3/trace
SQL>


유저 트레이스 파일 이름

  • $SID__ora__spid.trc 형식
  • 유저가 생성한 파일의 식별을 용이하게 하기 위해 식별자(Identifier) 붙일 수 있음

SQL> alter session set tracefile_identifier = 'my_identifier' ;

Session altered.

SQL> alter system set sql_trace=true;

System altered.

SQL> select * from global_name;

GLOBAL_NAME
--------------
RECO3

SQL> alter system set sql_trace=false;

System altered.

SQL> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

[RECO3]rac2:/app/oracle/diag/rdbms/reco3/RECO3/trace> ls -lrt
total 40
-rw-r----- 1 oracle oinstall   60 Oct 10 23:07 RECO3_mmon_504.trm
-rw-r----- 1 oracle oinstall  993 Oct 10 23:07 RECO3_mmon_504.trc
-rw-r----- 1 oracle oinstall  107 Oct 10 23:07 RECO3_dbrm_487.trm
-rw-r----- 1 oracle oinstall 1792 Oct 10 23:07 RECO3_dbrm_487.trc
-rw-r----- 1 oracle oinstall   68 Oct 10 23:08 RECO3_cjq0_571.trm
-rw-r----- 1 oracle oinstall 1682 Oct 10 23:08 RECO3_cjq0_571.trc
-rw-r----- 1 oracle oinstall  123 Oct 10 23:08 RECO3_ora_14067_my_identifier.trm
-rw-r----- 1 oracle oinstall 6127 Oct 10 23:08 RECO3_ora_14067_my_identifier.trc
-rw-r----- 1 oracle oinstall  198 Oct 10 23:08 alert_RECO3.log
[RECO3]rac2:/app/oracle/diag/rdbms/reco3/RECO3/trace>


유저 트레이스 파일 내용

아래와 같은 정보들이 헤더에 출력 됨
  1. Database 정보
  2. V$SESSION 의 Action 과 Module 정보
  3. Service name(Instance name) - 실제 db 접속을 위한 서비스 정보
  4. Session 정보
  5. 오류메시지
  6. 발생 시점에 실행 된 SQL 문
  7. 오류 코드와 관련 된 인수들(ORA-00600, ORA-7445 에러 발생시)


Trace file /app/oracle/diag/rdbms/reco3/RECO3/trace/RECO3_ora_14067_my_identifier.trc
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options

ORACLE_HOME = /app/oracle/product/11.2.0
System name:    Linux
Node name:      rac2
Release:        2.6.32-100.28.5.el6.x86_64
Version:        #1 SMP Wed Feb 2 18:40:23 EST 2011
Machine:        x86_64
Instance name: RECO3
Redo thread mounted by this instance: 1
Oracle process number: 34
Unix process pid: 14067, image: oracle@rac2 (TNS V1-V3)


*** 2014-10-10 23:08:00.002
*** SESSION ID:(44.437) 2014-10-10 23:08:00.002
*** CLIENT ID:() 2014-10-10 23:08:00.002
*** SERVICE NAME:(SYS$USERS) 2014-10-10 23:08:00.002
*** MODULE NAME:(SQL*Plus) 2014-10-10 23:08:00.002
*** ACTION NAME:() 2014-10-10 23:08:00.002

CLOSE #140536387981400:c=0,e=7,dep=0,type=1,tim=1412950080002752
=====================
PARSING IN CURSOR #140536390231144 len=202 dep=1 uid=0 oct=3 lid=0 tim=1412950080003186 hv=3819099649 ad='6978a820' sqlid='3nkd3g3ju5ph1'
select obj#,type#,ctime,mtime,stime, status, dataobj#, flags, oid$, spare1, spare2 from obj$ where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is null and subname is null
END OF STMT
EXEC #140536390231144:c=0,e=29,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=4,plh=2853959010,tim=1412950080003182
FETCH #140536390231144:c=0,e=20,p=0,cr=3,cu=0,mis=0,r=0,dep=1,og=4,plh=2853959010,tim=1412950080003253
CLOSE #140536390231144:c=0,e=1,dep=1,type=3,tim=1412950080003277
...


백그라운드 트레이스 파일의 활용

  • 내부 이벤트(오류) 로 생성 된 파일에 대해 사용자가 할 수 있는것은 많지 않음
  • Oracle Support 에 서비스 요청 생성 시에 첨부 자료로 활용 가능


ADR(Automatic Diagnostic Repository) 기능

  • 11g 이상부터 제공되는 기능
  • 진단(Diagnostic) 관련 이벤트 이력을 쉽게 조회하고 트레이스 파일 수집 가능한 콘솔

[RECO3]rac2:/app/oracle> adrci

ADRCI: Release 11.2.0.3.0 - Production on Fri Oct 10 23:14:11 2014

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

ADR base = "/app/oracle"
adrci>
adrci> show problem

ADR Home = /app/oracle/diag/tnslsnr/clt585av24/listener2:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/tnslsnr/clt585av24/listenr2:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/tnslsnr/clt585av24/listener:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/tnslsnr/clt585av24/listener_bulk:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/rdbms/kammig/KAMMIG:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
2                    ORA 600 [2662]                                              12153                2014-05-29 13:42:53.671000 +09:00
1                    ORA 603                                                     24001                2014-05-29 13:42:59.254000 +09:00

ADR Home = /app/oracle/diag/rdbms/kshdb/KSHDB:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/rdbms/pilcntr/PILCNTR:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1                    ORA 600 [qctcte1]                                           36306                2014-06-09 17:18:20.390000 +09:00

ADR Home = /app/oracle/diag/rdbms/opusbulk/OPUSBULK:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1                    ORA 600 [kzdGenDropStmt]                                    10322                2014-04-08 14:10:15.932000 +09:00
2                    ORA 600 [ORA-00600: internal error code, arguments: [kzdGen 10276                2014-04-08 14:10:15.956000 +09:00
3                    ORA 600 [qkaffsindex3]                                      10225                2014-09-22 22:01:27.640000 +09:00

ADR Home = /app/oracle/diag/rdbms/nykcntr/NYKCNTR:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1                    ORA 3137 [12333]                                            144265               2014-04-07 22:40:20.111000 +09:00
3                    ORA 600 [prshntcb-1]                                        156066               2014-04-14 16:10:05.728000 +09:00
2                    ORA 600 [qctcte1]                                           168681               2014-06-18 14:42:59.005000 +09:00

ADR Home = /app/oracle/diag/rdbms/cltpms/CLTPMS:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/rdbms/dpwdb/DPWDB:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/rdbms/db113/DB113:
*************************************************************************
0 rows fetched

ADR Home = /app/oracle/diag/rdbms/hjldb/HJLDB:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1                    ORA 7445 [knst_statscbk]                                    4075                 2014-10-07 22:00:46.371000 +09:00

ADR Home = /app/oracle/diag/clients/user_oracle/host_4110900066_80:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
2                    oci 24550 [3]                                               1                    2014-03-19 10:01:32.174000 +09:00
1                    oci 24550 [11]                                              9                    2014-03-20 21:41:20.883000 +09:00
3                    oci 10847                                                   17                   2014-05-29 13:42:59.731000 +09:00

ADR Home = /app/oracle/diag/clients/user_oracle/host_4110900066_82:
*************************************************************************
0 rows fetched

adrci>