소소한 일상에서 책읽기 중

[11g] ADR - AlertLog와 Tracefile의 새로운 위치 본문

DB까다롭다

[11g] ADR - AlertLog와 Tracefile의 새로운 위치

다솜여우 2011. 12. 15. 10:56

제품 : Database

작성날짜 : 2008-01-07

PURPOSE
================================
기존 제품에서와 달리, 11g 는 alert log 를 text file 뿐만 아니라 XML-formatted file 로도 기록합니다. 또한 그 위치가 기존의 BDUMP가 아니므로, 어떤 문제가 발생하거나 INSTANCE의 상태를 확인하려 할 때 혼란스러울 수 있습니다.

-- 차례 --
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. ADR 의 개념과 11g에서 ALERTLOG의 위치
1-1. ADR BASE
1-2. ADR HOME
1-3. ALERTLOG의 새로운 위치
1-4. 기타 '기존 경로'와 '새로운 경로' 안내

2. PROBLEM과 INCIDENT
2-1. What is a Problem?
2-2. What is an Incident?

3. ADRCI
3-1. ALERTLOG 살펴보기
3-2. Server Trace File 찾기
3-3. Listener Trace File 찾기
3-4. 옛날 방법을 통해 Trace File에 접근하기
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


EXPLANATION
================================
1. ADR 의 개념과 11g에서 ALERTLOG의 위치

1-1. ADR BASE

11g에서는 BDUMP와 UDUMP와 같은 구분이 없어지며, ADR(Automatic Diagnostic Repository)이라는 concept으로 관리됩니다. ADR은 기존에 BDUMP와 UDUMP로 나뉘어 관리되던 Diagnostic 정보를 한 곳에 모아 관리하고 손쉽게 Oracle Support에 그 Data를 전달할 수 있도록 도와줍니다.

먼저 ADR_BASE의 위치는 INSTANCE에서 DIAGNOSTIC_DEST 파라미터로 확인할 수 있습니다.

(1) $ORACLE_BASE가 설정되어 있다면, DIAGNOSTIC_DEST 의 위치는 $ORACLE_BASE 입니다.
(2) $ORACLE_BASE가 설정되어 있지 않다면, DIAGNOSTIC_DEST 의 위치는 $ORACLE_HOME/log 입니다.

현재 설정위치는, 다음과 같이 INSTANCE 상에서 DIAGNOSTIC_DEST 를 확인할 수 있습니다. 아래의 경우 $ORACLE_BASE 가 ADR_BASE 인 것을 볼 수 있습니다. ($ORACLE_HOME이 설정되지 않음)

SQL> show parameter diagno

NAME TYPE VALUE


-----------
diagnostic_dest string /opt/oracle/product

다음 query를 통해, 관련 정보를 자세히 확인할 수 있습니다.

SQL> select * from v$diag_info


1-2. ADR HOME

설치된 ORACLE PRODUCT별 INSTANCE의 ADR 위치를, ADR HOME이라고 합니다. 다음과 형태로, 그 위치가 결정됩니다.

ADR_BASE/diag/product_type/product_id/instance_id

예들 들어, ADR_BASE가 /opt/oracle/product 라면 ADR_HOME은 다음과 같습니다.

/opt/oracle/product/diag/rdbms/ora11/ORA11


1-3. ALERTLOG의 새로운 위치

(1) XML 형태의 ALERT
XML 형태의 ALERTLOG는 다음 위치에서 찾을 수 있으며, 이를 열기 위해서는 ADRCI라는 별도의 Utility가 필요합니다.

ADR_HOME/diag/product_type/product_id/instance_id/alert

다음과 같은 방법을 통해서도 그 위치를 확인할 수 있습니다.

SQL> select value from v$diag_info where name ='Diag Alert';

VALUE


/opt/oracle/product/diag/rdbms/ora11/ORA11/alert

(2) TEXT 형태의 ALERT
일반 ALERTLOG는 다음 위치에서 찾을 수 있습니다.

ADR_HOME/diag/product_type/product_id/instance_id/trace

다음과 같은 방법을 통해서도 그 위치를 확인할 수 있습니다.

SQL> select value from v$diag_info where name ='Diag Trace';

VALUE

/opt/oracle/product/diag/rdbms/ora11/ORA11/trace


1-4. 기타 '기존 경로'와 '새로운 경로' 안내

(1) Foreground Process Trace Files
USER_DUMP_DEST
-> ADR HOME/trace

(2) Background Process Trace Files
BACKGROUND_DUMP_DEST
-> ADR HOME/trace

(3) Database Alert log File
BACKGROUND_DUMP_DEST
-> ADR HOME/alert/log.xml OR ADR HOME/trace/alert_<SID>.log

(4) SQL*Net Listener Log File
LOG_DIRECTORY_LISTENER -

ADR HOME/alert/log.xml

(5) Core Dump Files
CORE_DUMP_DEST
-> ADR HOME/cdump

(6) Incident Dump Files (아래에서 n은 정수)
USER_DUMP_DEST AND BACKGROUND_DUMP_DEST
-> ADR HOME/incident/incdir_n


2. PROBLEM과 INCIDENT

11g를 관리하기 위해서는 PROBLEM과 INCIDENT라는 개념을 인지해야 합니다.

2-1. What is a Problem?

먼저 PROBLEM이란 DATABASE상의 critical error 를 일컫습니다. 예를 들어, ORA-600 / ORA-7445 / ORA-4031 / ORA-1578 과 같은 MESSAGE를 예로 들 수 있습니다. 이러한 PROBLEM들은 ADR내에 그 정보가 기록됩니다.


2-2. What is an Incident?

INCIDENT라 함은, 'PROBLEM의 1회 발생' 을 말합니다.

다시 말해 'ORA-1578 메세지가 여러번 기록되는 경우라면, ORA-1578이라는 '하나의 PROBLEM'에 대해 '여러 INCIDENT'가 ADR내에 생성됨을 의미합니다.


3. ADRCI

- 새롭게 등장한 ADR 관련 정보를 다루기 위해서는, ADR Commandline Interface (ADRCI)를 사용합니다.

다음과 같이 adrci 를 기동시킵니다.

oracle@prdsup5:~> adrci

ADRCI: Release 11.1.0.6.0 - Beta on Mon Dec 31 18:48:38 2007

Copyright (c) 1982, 2007, Oracle. All rights reserved.

ADR base = "/opt/oracle/product"
adrci>

- ADRCI에서 SHOW 명령어를 실행할 경우, default Editor가 실행됩니다. 만약 이 부분에 문제가 있다면 다음과 같이, Editor를 지정할 수 있습니다.

adrci> set editor vi

3-1. ALERTLOG 살펴보기

- 기본적으로 'SHOW ALERT' command를 사용합니다만, 다음과 같이 TAIL 옵션을 사용하여 최신 정보만 살펴볼 수도 있습니다.

adrci> SHOW ALERT -TAIL
adrci> SHOW ALERT -TAIL 50 // 마지막 50라인만 살펴보기

- 특정 terminal에서 alertlog의 "live monitoring"이 가능합니다.

adrci> SPOOL /home/steve/MYALERT.LOG
adrci> SHOW ALERT -TERM
adrci> SPOOL OFF

- ORA-600에 관련된 메세지만 살펴볼 수도 있습니다.

adrci> SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-600%'"

3-2. Server Trace File 찾기
- 기본적으로 'SHOW TRACEFILE' command를 사용합니다.

adrci> show tracefile
adrci> show trace <trace file.trc>

- 특정 KEYWORD를 사용하여 찾을 수 있습니다.

adrci> SHOW TRACEFILE %mmon%

- 특정 PROCESS ID를 사용하여 찾을 수 있습니다.

adrci> SHOW TRACEFILE -I 1681

3-3. Listener Trace File 찾기

- 기본적으로 'SHOW TRACEFILE' command를 사용합니다.

adrci> show tracefile
adrci> show trace <trace file.trc>

3-4. 옛날 방법을 통해 Trace File에 접근하기

(1) Server Trace File 찾기
cd $HOME/oradiag_oracle/diag/lsnrctl/$HOSTNAME/$HOSTNAME/trace

(2) Listener Trace File 찾기
cd $HOME/oradiag_oracle/diag/lsnrctl/$HOSTNAME/$HOSTNAME/trace

REFERENCES
================================
ADRCI: ADR Command Interpreter
http://download.oracle.com/docs/cd/B28359_01/server.111/b28319/adrci.htm#insertedID0

Note 454927.1
Using and Disabling the Automatic Diagnostic Repository (ADR) with Oracle Net for 11g

Note 453125.1
11g Diagnosability: Frequently Asked Questions

Note 415733.1
ADRCI Reference guide