트레이스 파일
트레이스 파일이란
- 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>
유저 트레이스 파일 내용
아래와 같은 정보들이 헤더에 출력 됨
- Database 정보
- V$SESSION 의 Action 과 Module 정보
- Service name(Instance name) - 실제 db 접속을 위한 서비스 정보
- Session 정보
- 오류메시지
- 발생 시점에 실행 된 SQL 문
- 오류 코드와 관련 된 인수들(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>