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;
-------- --------
1 1
2 1
3 1
4 1
5 1
6 1
7 169
8 169
9 169
10 169
12 개의 행이 선택되었습니다.
SQL> EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(12, 193, TRUE);
PL/SQL 처리가 정상적으로 완료되었습니다.
파라미터 파일의 USER_DUMP_DEST에 명시된 경로로 가보면 추적 파일이 생성된 것을 볼 수 있다.
USERNAME: SCOTT, SID: 12, SERIAL#: 193 사용자의 세션으로 이동한다.
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 개의 행이 선택되었습니다.
-------- ------------
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.
Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: SYS (recursive depth: 1)
********************************************************************************
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
-------
********************************************************************************
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시켜보자.
USER은 "SYS"입니다
EXECUTE DBMS_SYSTEM.SET_SQL_TRACE_IN_SESSION(12, 193, FALSE);
SQL> SELECT * FROM DEPT
-------- ------------
SQL>
TRACE파일을 살펴보면 기록이 안된 것을 볼 수 있다.