Oracle 11g에서 디비 문제 원인 분석을 위한 정보 수집 방법을 설명한 글이다.

https://kr.forums.oracle.com/forums/thread.jspa?threadID=1057734&tstart=0

위의 링크를 따라가면 원문을 볼 수 있다.


오라클11g는 로그와 트레이스 파일의 생성 및 관리가 기존과 많이 다르다. adr이라는 로그와 트레이스 파일을 통합 관리 툴(? 시스템?)이 있어서 생각보다 편리하게 쓸 수 있다.

iPhone 에서 작성된 글입니다.
Oracle 11g에서 눈에 띄는 변화 중 하나가 alert.log가 없어졌다가 아니라 위치와 포멧이 바뀌었다입니다.
하나의 디렉토리에 로그 파일들이 모여있는고 로그를 조회, 정리, 압축 해주는 유틸도 추가되었습니다.
그래서 로그보는 방법을 찾아봤습니다. 오라클 메뉴얼을 뒤져서 찾았습니다.

adrci라는 로그 관리 프로그램을 실행한뒤 필요한 명령을 실행하면 됩니다. 아래의 예제를 참고하시길...

[oracle]$ adrci
adrci> show alert -tail
(alert log중 최근 데이터 일부만 보기)

adrci> show alert -tail 50
(alert log중 최근 데이터 50건만 보기)

adrci> show alert -tail -f
(alert log를 "tail -f"처럼 실시간으로 모니터링하기)

adrci> show tracefile
(trace file 보기)

adrci> show tracefile -i 프로세스id
(특정 프로세스의 트레이스파일 찾기)

adrci> show tracefile %mmon%
(mmon의 트레이스 파일을 찾기. like 검색이라고 생각하면 된다. %ckpt%로 입력하면 체크포인트 트레이스파일을 검색한다.)

파라미터들은 소문자로 입력해도 잘 됩니다. 최소한 -tail 옵션은 잘 되더군요.
그럼 다음번에는 문제 분석을 위한 정보 수집 방법을 정리해보겠습니다.


iPhone 에서 작성된 글입니다.
 Oracle DBMS를 운영하다보면 전임자의 실수이거나, 게으른 본인의 생각없는 설치 및 운영으로 인해서 디스크 공간의 부족함으로 인해서 서비스가 중단되는 일이 생기기도 합니다. 본사 내에서 마구잡이로 사용하는 개발용 DB중에 그런 장비가 있었는데 /opt/oracle 디렉토리가 사용율 100%에 이르러서야 확인을 하게 되었습니다.
 문제는 현재 각종 로그가 쌓이는 디렉토리와 $ORACLE_HOME, 그리고 각종 시스템 관련 Datafile, redo log file 등이 같은 파티션에 저장이 되고 있더군요. 그래서 ... 서비스를 중지시키지 않고 작업을 해야겠다는 생각에 redo log file을 옮기기로 결정했습니다. 이게 제일 만만해보이더군요.

리두로그 그룹 및 파일 현황 확인
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#;

    GROUP# STATUS           TYPE      MEMBER
---------- ---------------- ------- ----------------------------------------
         1 CURRENT          ONLINE  /opt/oracle/oradata/edo01.log                                    
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log            
         3 INACTIVE         ONLINE  /opt/oracle/oradata/redo03.log 

네번째 리두로그 그룹 및 파일 추가

SQL> alter database add logfile group 4('/data/orasys/redo04.log') size 100M;

Database altered.

SQL>

리두로그 그룹 및 파일 추가 결과 확인
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#;

    GROUP# STATUS           TYPE    MEMBER                                                                              
---------- ---------------- ------- ---------------------------------------- 
         1 CURRENT          ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log           
         3 INACTIVE         ONLINE  /opt/oracle/oradata/redo03.log             
         4 UNUSED           ONLINE  /data/orasys/redo04.log

기존 리두로그 파일 그룹중 하나 삭제
SQL> alter database drop logfile group 3;
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------   
         1 CURRENT          ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log            
         4 UNUSED           ONLINE  /data/orasys/redo04.log

리두로그 파일 그룹 3을 새로운 위치에 추가
SQL> alter  database add logfile group 3 ('/data/orasys/redo03.log') SIZE 100M;

Database altered.

리두로그 파일 그룹 3이 정상적으로 추가되었는지 확인
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------   
         1 CURRENT          ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log            
         3 UNUSED           ONLINE  /data/orasys/redo03.log                    
         4 UNUSED           ONLINE  /data/orasys/redo04.log                             

SQL>

로그 스위치를 강재로 일으키며 상태값을 확인해본다.
SQL> alter system switch logfile;

System altered.

SQL>
SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------    
         1 ACTIVE           ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log              
         3 CURRENT          ONLINE  /data/orasys/redo03.log                    
         4 UNUSED           ONLINE  /data/orasys/redo04.log                            

SQL>
SQL>  alter system switch logfile;

System altered.

SQL> select a.group#, a.status, b.type, b.member from v$log a, v$logfile b where a.group#=b.group#(+);

    GROUP# STATUS           TYPE    MEMBER
---------- ---------------- ------- ----------------------------------------    
         1 INACTIVE         ONLINE  /opt/oracle/oradata/redo01.log
         2 INACTIVE         ONLINE  /opt/oracle/oradata/redo02.log             
         3 INACTIVE         ONLINE  /data/orasys/redo03.log
         4 CURRENT          ONLINE  /data/orasys/redo04.log

SQL>


 UNIX/Linux 시스템을 사용하다보면 다양한 로그 파일들을 접하게 됩니다. 로그 파일은 사용자에게 시스템의 현재 상태와 과거의 상태, 그리고 각종 작업의 결과 등을 알려주는 소중한 정보원입니다. 이번에 소개할 문서는 IBM DeveloperWorks의 "AIX and UNIX | Linux" 카테고리에서 로그 파일에 관한 문서입니다.

원문 : 시스템 관리 툴킷: 로그 파일 이해하기


전형적인 리눅스(Linux®)나 유닉스(UNIX®)는 시스템이 돌아가는 동안에 수많은 로그 파일을 생성합니다. 이 중에는 유용한 정보를 제공하는 로그 파일도 있고, 용량이나 자원을 계획하는 데 도움을 주는 로그 파일도 있습니다. 이 기사에서는 주요한 로그 파일 몇 개를 소개합니다. 또한 로그 파일이 존재하는 위치, 파일에 기록되는 정보 형식, 로그 정보를 유용하게 사용하는 방법도 살펴봅니다.

기사 연재 소개

전형적인 유닉스(UNIX®) 관리자라면 시스템을 관리하면서 나름대로 자주 사용하는 유틸리티, 스크립트, 기교가 있기 마련이다. 이러한 유틸리티, 스크립트, 명령 체인 등은 관리자가 수행할 작업을 단순화시켜 준다. 일부 도구는 운영체제에 딸려오지만, 대다수 도구와 기교는 수년 동안 쌓아온 경험과 시스템 관리를 조금이라도 편하게 하려는 욕구에서 나왔다. 이 기사 연재는 다양한 유닉스 환경에서 제공하는 도구를 최대한 활용하는 방법을 살펴본다. 또한 다양한 유닉스 플랫폼에서 시스템을 단순하게 관리하는 방법도 소개한다.





로그 파일

모든 시스템은 시스템 내 다양한 정보를 추적하고 기록하는 로그 파일을 생성한다. 파일 내용과 용도는 시스템에 따라 다르지만, 본질적으로 파일에 담긴 핵심 정보는 대개 비슷하다.

예를 들어, 모든 유닉스와 리눅스 시스템은 syslog 도구를 사용한다. syslog는 운영체제와 응용 프로그램과 서비스가 정보를 기록할 때 사용하는 범용 로그 시스템이다. syslog는 로그인 정보, 성능 정보, 하드웨어와 시스템 실패 정보 등 다양한 정보를 기록한다. syslog 외에도 시스템에는 서비스 로그, 환경 로그, 응용 프로그램 로그 등 시스템 상태와 동작 상태를 기록하는 다양한 로그가 있다.

로그 파일에서 정보를 분석하고 추출하는 작업은 시간이 많이 걸리고 복잡하다. 하지만 로그 파일에 담긴 풍부한 정보를 무시하기는 어렵다. 로그 파일은 잠정적인 문제, 결함, 보안 구멍을 찾아내는 데 도움이 되는 정보를 제공한다. 또한 제대로만 분석한다면 서버에 걸리는 하중과 용량 문제도 미리 파악해 대비할 수 있다.


+ Recent posts