# 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’;
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