행위

Adrci 사용법

DB CAFE

thumb_up 추천메뉴 바로가기


1 ADR(Automatic Diagnostic Repository) 유틸[편집]

  1. RDBMS 진단을 위한 파일 기반 저장소
  2. ADR 은 Trace file, Alertlog, Incident dump, Core file 등을 찾을 수있는 중앙 집중식 디렉토리 구조로 되어있음
  3. 데이터베이스, ASM (Automatic Storage Management), CRS (Cluster Ready Services) 및 기타 Oracle 제품 또는 구성 요소는 모든 진단 데이터를 ADR에 저장.
  4. 각 제품의 각 인스턴스는 자체 ADR 홈 디렉토리 아래에 진단 데이터 저장.

 attach_file oracle dbms에 생성되는 trace 및 log 파일 관리 유틸 adrci 사용법.

1.1 adr 디렉토리 위치 확인[편집]

  • ADR Home/Base 위치 확인
SQL> select * from v$diag_info;
  • v$diag_info 뷰 조회시 각 ADR 디렉토리 경로를 알 수 있음
  • Default 세션 Trace와 Problem 수, Incident 수를 확인할 수 있음

1.2 adrci 실행[편집]

-- adrci 실행 
[/home/oracle]$ adrci

1.2.1 ADR BASE 설정[편집]

  • ADR BASE 의 DEFAULT 경로는 ORACLE_BASE 경로임
  • 또는 오라클 내에서 diagnostic_dest 파라미터 경로임
SQL> show parameter diagnostic_dest
ADRCI> set base c:\app\oracle
ADRCI> show base
ADRCI> show homepath

1.2.2 ADR HOME 에 존재하는 디렉토리 설명[편집]

  1. Alert : xml 포멧의 alert log이 저장됨
  2. Cdump : core dump가 저장됨
  3. Trace : 사용자 trace 파일 및 Alert.log 가 저장됨 'Background_dump_dest' 및 'user_dump_dest'는 11g부터 무시됨
    11g 이후 모든 trace 파일이 'trace' 디렉토리에 생성됨
  4. Incident : 인시던트 디렉토리는 심각한 오류가 발생했을 때 작성된 덤프 파일을 저장함
    중대한 오류 (사건)가 발생할 때마다 디렉토리 이름을 구성하는 데 사용되는 사건 ID와 함께 고유 한 사건 디렉토리가 제공됨
  5. Metadata : alert, incident, pakage 등에 대한 진단 메타 데이터 파일을 저장됨
  6. HM : Health Monitor 가 여러 컴포넌트를 검사한 후 일부 파일을 이 곳에 저장됨
  7. Incpkg, ir, lck, sweep : incident 를 패키징할 때 특정 지원 파일들이 이 곳에 저장됨
  8. Problem : Database 의 Critical 에러 ( 예 : ORA-00600, ORA-07445, ORA-04031 등 )
  9. Incident : 각 사건 숫자 ID 를 내포하고 있는 문제의 단일 occurrence
  10. (Problem 1 회 발생을 의미하며 ORA-00600 에러가 3 번 발생할 경우 ORA-0600 Problem 이 3 번의 Incident 가 기록되었다고 할 수 있음)

1.3 ADR 명령어[편집]

  • home 리스트 보고
ADRCI> show homes
ADRCI> set home 해당DB 패스 선택
ADRCI> show homepath
ADRCI> help purge  (<-- HELP 명령어)

1.3.1 alert 로그 보기[편집]

1. alert 로그 목록 확인

ADRCI> show alert

2. 로그 번호 선택

3.로그 내용 검색

ADRCI> show alert -p "message_text like '%incident%'" (<-- alert.log 파일의 incident를 볼수 있다)

4.최근 로그 확인

ADRCI> show alert -tail 20 (<-- alert.log 파일에 tail 을 걸수 있다)

1.3.2 오류내역 보기[편집]

  • 문제 확인
ADRCI> show problem [-p <predicate_string>]
ADRCI> show problem -p "PROBLEM_ID=1"


  • incident 확인
ADRCI> show incident [-p <predicate_string>]


  • incident 번호로 상세내용 확인
ADRCI> show incident -mode detail   # 전체 목록
ADRCI> show incident -mode detail -p "incident_id=40165"
  • mode = basic, brief, detail
ADRCI> describe incident
ADRCI> show incident -p "incident_id=40165 or incident_id=145"

1.4 ADR home 설정[편집]

ADRCI> set homepath diag\rdbms\orcl\orcl

1.5 현재 설정된 retention policy 정보[편집]

ADRCI> show control
  • LONGP_POLICY(long term) -- set to 365 days(in hours, 365*24=8760) by default
  • SHORTP_POLICY(short term) -- set to 30 days(in hours, 30*24=720) by default

1.5.1 설정되어 있는 retention policies (optional) 변경[편집]

ADRCI> set control(SHORTP_POLICY = 240)   <-- 10 days
ADRCI> set control(LONGP_POLICY = 1095)   <-- 1.5 months

1.6 로그/trace 파일 정리[편집]

  • 예시) 10일 : 14400분으로 명시(10 days = 10*24*60 = 14400)
ADRCI> purge -age 14400 -type alert

ADRCI> purge -age 14400 -type trace

ADRCI> purge -age 14400 -type incident

ADRCI> purge -age 14400 -type hm

ADRCI> purge -age 14400 -type utscdump

ADRCI> purge -age 14400 -type cdump

ADRCI> purge -age 14400  <-- 모든 파일에 대하여 1번에 Purge

1.7 ADRCI 를 이용한 자동 로그 정리[편집]

  • 자동 로그 정리 스크립트
    • 43200분(30일) 리스너, db alert, trace 로그를 남기고 30일 이전로그는 삭제하는 스크립트
$ cat adrci.sh 
#!/bin/ksh
#  Usage: PURGE [-i {<id1> | <id1> <id2>} ] |
#              [-problem {<id1> | <id1> <id2>} ] |
#              [[-age <mins>] |
#               [-size <bytes>] |
#               [-type {ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP|LOG} ]]
#
# Purpose: Purge the diagnostic data in the current ADR home. If no
#          option is specified, the default purging policy will be used.
#
# Options:
#   [-i id1 | id1 id2]: Purge a single specified incident, or a range
#   of incidents.
#
#   [-problem id1 | id1 id2]: Purge a single specified problem, or a range
#   of problems.
#
#   [-age <mins>]: Purge diagnostic data older than <mins> from the
#   ADR home, if the data is purgable.
#
#   [-size <bytes>]: Purge diagnostic data from the ADR home until the size
#   of the home reaches <bytes> bytes.
#
#   [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP|LOG]: Purge a specific
#   type of data.
#
# Notes:
#   When purging by size, only INCIDENT, TRACE, CDUMP and UTSCDMP data
#   is considered.
#
#   Some data can not be purged (such as incidents in the 'tracked' state),
#   which means that the specified target size may not be reached in all cases.
#
# Examples:
#   purge
#   purge -i 123 456
#   purge -age 60 -type incident
#   purge -size 10000000
 
# LISTENER 
for i in `adrci exec="show homes"|grep listener`;do
echo "adrci exec=\"set home $i;\""
adrci exec="set home $i;purge -age 43200";
echo "complete adrci purge -age 43200(30day) listener;\""
done
 
echo ""
 
# ADR HOME
#ADR_HOME=`adrci exec="show home " | grep rdbms`
ADR_HOME="diag/rdbms/orcl19/ORCL19"
echo "adrci exec=\"set home $ADR_HOME;\""
# HOME Check
# echo $ADR_HOME
adrci exec="set home $ADR_HOME;purge -age 43200 -type ALERT"
echo "complete adrci purge -age 43200(30day) ALERT;\""
adrci exec="set home $ADR_HOME;purge -age 43200 -type TRACE"
echo "complete adrci purge -age 43200(30day) TRACE;\""


  • 스크립트 실행
$ sh adrci.sh
adrci exec="set home diag/tnslsnr/ORACLE19/listener;"
complete adrci purge -age 43200(30day) listener;"

adrci exec="set home diag/rdbms/orcl19/ORCL19;"
complete adrci purge -age 43200(30day) ALERT;"
complete adrci purge -age 43200(30day) TRACE;"