ORACLE2014. 8. 12. 17:38

# LogMiner로 데이터베이스에서 발생한 변경 내역을 트랜잭션별, 사용자별, 발생 시간대별로 추적할 수 있음.(8i이후 부터 사용가능 하며 9i 이상부터 DDL을 지원함.)


# 실습 예제(Flat File에 저장하는 방법)

1. Redo log file 상태 확인

set line 200

col group# for 99

col mb for 999

col member for a45

col seq# for 999

col status for a8

col arc for a5


select a.group#,a.member,b.bytes/1024/1024 MB, b.sequence# "SEQ#",b.status, b.archived "ARC"

from v$logfile a, v$log b

where a.group# = b.group#

order by 1,2

/



2. supplemental_log_data_min 설정 확인(YES)

select supplemental_log_data_min from v$database ;



3. utl_file_dir 파라미터 값 확인 및 변경

--경로 확인

show parameter utl_file_dir ;


--원하는 경로로 변경

alter system set utl_file_dir='/data/logmnr' scope=spfile ;



4. DB재시작



5. 딕셔너리 생성

--원하는 파일명과 경로 적용

exec dbms_logmnr_d.build(dictionary_filename=>'dict03.dat',-

dictionary_location=>'/data/logmnr') ;



6. 분석할 로그파일 추가

-- 1 : 신규등록, 2 : 파일삭제, 3 : 추가 등록


-- 신규등록 예제(redo log 파일 중 current 상태인 로그 등록)

exec dbms_logmnr.add_logfile('/dbms/oracle/product/oradata/SOLEXTDEV/redo03.log',1) ;


-- 추가등록 예제

exec dbms_logmnr.add_logfile('/dbms/oracle/product/oradata/SOLEXTDEV/redo01.log',3) ;

exec dbms_logmnr.add_logfile('/dbms/oracle/product/oradata/SOLEXTDEV/redo02.log',3) ;

exec dbms_logmnr.add_logfile('/data/arch2/2_1_855409270.arc',3) ;

exec dbms_logmnr.add_logfile('/data/arch2/1_1_855409270.arc',3) ;

exec dbms_logmnr.add_logfile('/data/arch2/6_1_855409270.arc',3) ;

exec dbms_logmnr.add_logfile('/data/arch2/7_1_855409270.arc',3) ;

exec dbms_logmnr.add_logfile('/data/arch2/8_1_855409270.arc',3) ;

exec dbms_logmnr.add_logfile('/data/arch2/9_1_855409270.arc',3) ;

exec dbms_logmnr.add_logfile('/data/arch2/10_1_855409270.arc',3) ;


-- 삭제 예제

exec dbms_logmnr.add_logfile('/dbms/oracle/product/oradata/SOLEXTDEV/redo03.log',2) ;

exec dbms_logmnr.add_logfile('/dbms/oracle/product/oradata/SOLEXTDEV/redo01.log',2) ;

exec dbms_logmnr.add_logfile('/dbms/oracle/product/oradata/SOLEXTDEV/redo02.log',2) ;

exec dbms_logmnr.add_logfile('/data/arch2/2_1_855409270.arc',2) ;

exec dbms_logmnr.add_logfile('/data/arch2/1_1_855409270.arc',2) ;

exec dbms_logmnr.add_logfile('/data/arch2/6_1_855409270.arc',2) ;

exec dbms_logmnr.add_logfile('/data/arch2/7_1_855409270.arc',2) ;

exec dbms_logmnr.add_logfile('/data/arch2/8_1_855409270.arc',2) ;

exec dbms_logmnr.add_logfile('/data/arch2/9_1_855409270.arc',2) ;

exec dbms_logmnr.add_logfile('/data/arch2/10_1_855409270.arc',2) ;



7. 등록 상태 확인

set linesize 200

col db_name for a15

col filename for a50

select db_name, filename from v$logmnr_logs ;



8. LogMiner를 이용한 분석 시작(TEMP 테이블스페이스 공간이 넉넉해야함.)

exec dbms_logmnr.start_logmnr(dictfilename=>'/data/logmnr/dict03.dat',-

options=>dbms_logmnr.ddl_dict_tracking+dbms_logmnr.committed_data_only) ;



9. 결과 조회

col username for a10

col opration for a10

col sql_redo for a50

select timestamp,username, operation, sql_redo

from v$logmnr_contents

where seg_name='TEST1' ;



Posted by Tiwaz