# 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' ;
'ORACLE' 카테고리의 다른 글
Redo log 장애 - 1개의 member가 삭제되는 장애가 발생하는 경우 (0) | 2014.08.13 |
---|---|
Redo Log Group과 Member 관리 (0) | 2014.08.12 |
Supplemental logging (0) | 2014.08.12 |
High, Normal, Extgernal Redundancy 비교 (0) | 2014.08.11 |
Transportable Tablespaces - TTS (0) | 2013.07.31 |