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

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

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


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

iPhone 에서 작성된 글입니다.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


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 에서 작성된 글입니다.
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST


 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>


YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST