본문 바로가기
TechNical/Oracle

로그마이너로 쿼리 히스토리를 뒤져 보자!

by 강멍멍이 2008. 1. 21.
반응형

로그 마이너라는 기능을 사용해서 리두 로그 파일을 이용하여
기존에 사용했던 쿼리의 히스토리를 확인 해 볼 수 있다.
모든 작업은 SYS로 접속해서 하자.

1. 초기화 파라메터 파일에서 'UTL_FILE_DIR'을 지정한다.

   utl_file_dir='C:\oracle\logmnr'

   요래 저장을 하고 그리고 리스타트 한다.

2. 다음의 SQL문을 차례로 실행 시키다.

   SQL> @C:\oracle\ora92\rdbms\admin\dbmsrpr.sql
   패키지가 생성 되었습니다.

   SQL> @C:\oracle\ora92\rdbms\admin\prvtrpr.sql
   라이브러리가 생성되었습니다.
   패키지 본문이 생성되었습니다.

3. 그리고 패키지를 실행 시킨다. 생성할 파일명과 아까 설정한 경로를 지정해 준다.
  
   SQL> EXECUTE DBMS_LOGMNR_D.BUILD('sqllog.ora','C:\oracle\logmnr');
  
   요래 하면 저 경로에 저 파일명으로 파일이 생성 된다.

4. 이제 목록을 초기화 하고 리두 로그 파일들을 추가해 보자 ~

   SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE
        ('C:\oracle\ora92\oradata\redo01.log',DBMS_LOGMNR.NEW);
  
   이카고 나서 나머지 로그 파일들도 추가 시켜 준다. redo02,redo03 모두 하자.

   SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE
        ('C:\oracle\ora92\oradata\redo02.log',DBMS_LOGMNR.ADDFILE);

5. 이제 모든 준비가 끝났으니까 로그 마이너를 실행 시키자!
   이렇게 생성한 파일을 가지고 조회가 가능하게 테이블에 넣는 과정이다.

   SQL> EXECUTE DBMS_LOGMNR.START_LOGMNR
        (dictfilename=>'C:\oracle\logmnr\sqllog.ora');

6. 조회를 할 테이블은 V$LOGMNR_CONTENTS 란 거다.

   SQL> SELECT timestamp,username,sql_redo
        FROM v$logmnr_contents
        where seg_name='조회 하려는 테이블';

7. 결과가 나올 것이다. where 절을 제외하면 겁나 많이 나온다.

# 리두 로그 파일을 한 상태에서 아카이브로그 파일을 추가 하니까 에라가 났다.
  아카이브로 로그 파일로 초기화 시키고 새로 하니까 된다....

반응형

댓글