# Oracle Log Miner(8i 등장)


-Log Miner 유틸리티는 Redo Log file에 있는 내용을 추출해서 SQL 문장으로 변환해줍니다.

-데이터베이스에서 변경된 내역을 트랜잭션, 사용자, 테이블, 발생시간대 별로 추적할 수 있습니다.



아래와 같은 제약사항이 있습니다.

1. log miner는 8i 이후 버전에서만 작동합니다.

2. 분석 대상 인스턴스와 같은 플랫폼에서 동작하는 같은 캐릭터셋을 사용하는 db에서 생성된 redo log file만 분석할 수 있습니다.

3. 분석 대상 인스턴스와 Redo log가 생성된 인스턴스는 DB_BLOCK_SIZE가 동일해야 합니다. 만약 다를 경우 corruption이 발생했다는 내용이 기록됩니다.



# Log miner 설정해서 Redo Log 분석 

– log miner 설정하기

**Supplemental log 활성화하기(9i부터 default가 disable임, 필히 enable 해줄 것)

– instance vector에 홍길동이라는 이름이 여럿 있는데 여기에 update를 홍길동->일지매로 해준다면 모든 데이터가 업데이트 될 것이다.

 이를 방지하기 위해 DATA+PK 하여 구분을 지어 줄수 있게끔 설정 하는 것입니다



SQL> alter database add supplemental log data;

Database altered.

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
——–
YES 




1. parameter 파일에 dictionary file이 생성될 경로 설정을 추가합니다.

*.utl_file_dir=”/data/logmnr” <– redo log를 분석할 때 사용하는 target database의 정보를 저장하고 있는 파일입니다. 생성후에 OS편집기로 열어서 살펴보면 내용을 확인할 수 있습니다.



2. DB 재시작



3.딕셔너리 파일 생성

SQL>exec dbms_logmnr_d.build (‘dict’, ‘/data/logmnr’); <—(파일이름,저장할 경로)



4. 분석하기를 원하는 log파일을 등록합니다.



SQL> @log

GROUP# MEMBER                                MB SEQ# STATUS     ARC
—— ——————————————— —- —- ——– —–
     1 /data/imsi/redo01.log                      50    1 INACTIVE YES
     2 /data/imsi/redo02.log                      50    2 CURRENT     NO
     3 /data/imsi/redo03.log                      50    0 UNUSED     YES




SQL>exec dbms_logmnr.add_logfile(‘/data/imsi/redo01.log’,1);



숫자 1은 새파일 등록, 2는 기존파일 삭제, 3은 다른 파일 추가를 의미합니다.



5. 등록된 log 파일 분석합니다.

exec dbms_logmnr.start_logmnr(dictfilename=>’/home/oracle/logminer/dict.dat’);



6. 찾고자 하는 내용을 조회합니다



set line 200
col timestamp for a20
col seg_owner for a10
col username for a10
col sql_redo for a50
select timestamp,seg_owner,username,sql_redo from v$logmnr_contents where sql_redo like ‘%drop%’ and seg_owner= ‘SCOTT’;



관련 테이블 : v$logmnr_logs, v$logmnr_contents

By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다