Describe AlertLogFile과TraceFile here

Alert Log File과 Trace File
 

1. Alert Log File

             - Server Process와 Instance가 중요 이벤트 명령어 기록

             - 충돌에러

             - 인스턴스 시작시 default가 아닌 모든 파라미터의 값

             - DB구조나 DB 구성 변경

                           - DB 생성, Startup, Shutdown, Archive Log, Recovery

                           - Create TableSpace, Create Rollback Segment, Alter System Switch LogFile

                             (로그 스위치는 Thread 1 advanced to log sequence와 같은 형식으로 저장)

             - 정기적인 검사 필요

             - 필요없는 경고파일은 지우는 것이 좋다. (지우지 않으면 계속 쌓이게 된다.)

             - 파라미터 파일의 BACKGROUND_DUMP_DEST에 명시

 

2. Background Process Trace File

             - Background Process가 만난 이벤트 정보 기록

             - 고장의 원인 파악시 유용

             - 파라미터 파일의 BACKGROUND_DUMP_DEST에 명시

             - 추적파일명: 프로세스명+백그라운드 프로세스ID.trc

 

3. User Trace File

             - 사용자의 요청에 의해서 생성

             - SQL튜닝에 유용하게 사용

             - 세션별, 인스턴스별 추적가능

             - 세션별 추적 (catproc.sql로 생성(DB생성시 수행됨), prvtutil.plb로 재생성)

                           - 특정 세션에 추적을 Enable/Disable하게 하는 프로시저

                                        CONNECT SYS/CHANGE_ON_INSTALL AS SYSDBA

                                        SELECT SID, SERIAL#, USERNAME FROM V$SESSION;

                                        EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(SID, SERIAL#, FALSE);

                                        파라미터 파일에 명시된 USER_DUMP_DEST의 경로에서 확인

                           - 현재 세션에서 추적

                                        ALTER SESSION SET SQL_TRACE = TRUE;

                           - USER TRACE FILE의 저장공간 제한 파라미터: MAX_DUMP_FILE_SIZE

             - 인스턴스 레벨 추적

                           - 파라미터 파일의 SQL_TRACE = TRUE

                           - 인스턴스 레벨이므로 추적에 대한 비용을 고려

                           - SQL_TRACE = FALSE가 기본값

                           - 

SQL> CONNECT SYS/CHANGE_ON_INSTALL AS SYSDBA

연결되었습니다.

SQL> SELECT SID, SERIAL#, USERNAME FROM V$SESSION;

 

       SID    SERIAL#  USERNAME

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

         1          1

         2          1

         3          1

         4          1

         5          1

         6          1

         7        169

         8        169

         9        169

        10        169

        11        122  SYS

        12        193  SCOTT

 

12 개의 행이 선택되었습니다.

 

SQL> EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(12, 193, TRUE);

 

PL/SQL 처리가 정상적으로 완료되었습니다.

 
 

 

파라미터 파일의 USER_DUMP_DEST에 명시된 경로로 가보면 추적 파일이 생성된 것을 볼 수 있다.

USERNAME: SCOTT, SID: 12, SERIAL#: 193 사용자의 세션으로 이동한다.

 

SQL> SHOW USER

USER은 "SCOTT"입니다

SQL> REM USERNAME: SCOTT, SID: 12, SERIAL#: 193

SQL> SELECT * FROM EMP;

 

     EMPNO ENAME      JOB              MGR HIREDATE        SAL       COMM     DEPTNO

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

      7369 SMITH      CLERK           7902 80/12/17        800                    20

      7499 ALLEN      SALESMAN        7698 81/02/20       1600        300         30

      7521 WARD       SALESMAN        7698 81/02/22       1250        500         30

      7566 JONES      MANAGER         7839 81/04/02       2975                    20

      7654 MARTIN     SALESMAN        7698 81/09/28       1250       1400         30

      7698 BLAKE      MANAGER         7839 81/05/01       2850                    30

      7782 CLARK      MANAGER         7839 81/06/09       2450                    10

      7788 SCOTT      ANALYST         7566 87/04/19       3000                    20

      7839 KING       PRESIDENT            81/11/17       5000                    10

      7844 TURNER     SALESMAN        7698 81/09/08       1500          0         30

      7876 ADAMS      CLERK           7788 87/05/23       1100                    20

      7900 JAMES      CLERK           7698 81/12/03        950                    30

      7902 FORD       ANALYST         7566 81/12/03       3000                    20

      7934 MILLER     CLERK           7782 82/01/23       1300                    10

 

14 개의 행이 선택되었습니다.

 

SQL> SELECT * FROM DEPT;

 

    DEPTNO DNAME          LOC

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

        10 ACCOUNTING     NEW YORK

        20 RESEARCH       DALLAS

        30 SALES          CHICAGO

        40 OPERATIONS     BOSTON

 

SQL> REM 추적파일이 생성된 것을 볼 수 있다.        
 

 

TKPROF 유틸을 사용하여 추적파일을 보기좋게 만든뒤 살펴보도록 하자. 콘솔로 가서 다음과 같이

한다.

 

C:\r>tkprof E:\Oracle\admin\ora816\udump\ORA00900.TRC

output = c:\trace.txt

 

TKPROF: Release 9.2.0.1.0 - Production on 수 Sep 3 22:26:26 2003

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

C:\>type trace.txt

 

Misses in library cache during parse: 1

Optimizer goal: CHOOSE

Parsing user id: SYS   (recursive depth: 1)

********************************************************************************

 

SELECT * 

FROM

 EMP

 

 

call     count       cpu    elapsed       disk      query    current        rows

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

Parse        2      0.00       0.00          1          0          1           0

Execute      2      0.00       0.00          0          0          0           0

Fetch        4      0.00       0.00          1          4          8          28

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

total        8      0.00       0.00          2          4          9          28

 

Misses in library cache during parse: 1

Optimizer goal: CHOOSE

Parsing user id: 32  

 

Rows     Row Source Operation

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

     14  TABLE ACCESS FULL EMP 

 

********************************************************************************

 

SELECT * 

FROM

 DEPT

 

 

call     count       cpu    elapsed       disk      query    current        rows

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

Parse        1      0.00       0.00          1          0          1           0

Execute      1      0.00       0.00          0          0          0           0

Fetch        2      0.00       0.00          1          2          4           4

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

total        4      0.00       0.00          2          2          5           4

 

Misses in library cache during parse: 1

Optimizer goal: CHOOSE

Parsing user id: 32
 

 

이제 다시 특정 세션레벨에서의 특정 사용자에 대한 추적을 DISABLE시켜보자.

 

SQL> SHOW USER

USER은 "SYS"입니다

EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(12, 193, FALSE);
 

 

SQL> SELECT * FROM DEPT

  2  WHERE DEPTNO = 10;

 

    DEPTNO DNAME          LOC

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

        10 ACCOUNTING     NEW YORK

 

SQL>
 

 

TRACE파일을 살펴보면 기록이 안된 것을 볼 수 있다.