로그 마이너라는 기능을 사용해서 리두 로그 파일을 이용하여
기존에 사용했던 쿼리의 히스토리를 확인 해 볼 수 있다.
모든 작업은 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 절을 제외하면 겁나 많이 나온다.
# 리두 로그 파일을 한 상태에서 아카이브로그 파일을 추가 하니까 에라가 났다.
아카이브로 로그 파일로 초기화 시키고 새로 하니까 된다....
댓글