티스토리 뷰

반응형
 Supplemental Logging이 활성화 되어 있어야 함.

1. Log Miner 설정 작업
1-1. Supplemental Logging 확인
      : SELECT SUPPLEMENTAL_LOG_DATA_MIN
        FROM V$DATABASE;
        -> YES 여야 함.
 1-2. HOWTO  SUPPLEMENTAL LOGGING ENABLE/DISABLE
      : ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;      -- ENABLE
        ALTER DATABASE DROP SUPPLEMENTAL LOG DATA;   -- DISABLE

2. 해당 시간대 Archive Log List 확인
SET LINESIZE 200 PAGESIZE 1000
COL NAME FOR A50
SELECT NAME
             ,TO_CHAR(FIRST_TIME, 'YYYY-MM-DD HH24:MI:SS') AS FIRST_TIME
             ,TO_CHAR(COMPLETION_TIME, 'YYYY-MM-DD HH24:MI:SS') AS CMPL_TIME
FROM V$ARCHIVED_LOG
WHERE FIRST_TIME >= TO_DATE('20140515 090000','YYYYMMDD HH24MISS')
     AND COMPLETION_TIME < SYSDATE
;

/ora/arch/arch_1_155430_757590583.arc 2014-05-15 08:13:36 2014-05-15 08:21:39
/ora/arch/arch_1_155431_757590583.arc 2014-05-15 08:21:37 2014-05-15 08:25:47

/*

SQL> ARCHIVE LOG LIST

*/


3. Mining 대상 Achive Log 설정하기

-- RAC에서 아카이브 디렉토리가 다를 경우 양쪽 노드에서 모두 수행

-- 대상 아카이브파일을 추가해줌.

EXECUTE DBMS_LOGMNR.ADD_LOGFILE('/ora/arch/arch_1_155430_757590583.arc', OPTION =>DBMS_LOGMNR.NEW);

EXECUTE DBMS_LOGMNR.ADD_LOGFILE('/ora/arch/arch_1_155431_757590583.arc',OPTION

 =>DBMS_LOGMNR.ADDFILE);


4. 해당 테이블을 Access하는 SQL 추출하기

-- 임시테이블을 만들고 Access하는 SQL Insert

CREATE TABLE LOGMNR_TEMP TABLESPACE TEMP

AS

SELECT TIMESTAMP

             ,USERNAME

             ,SESSION_INFO

             ,OPERATION

             ,SQL_REDO

             ,SQL_UNDO

FROM V$LOGMNR_CONTENTS

WHERE SEG_NAME IN ('테이블명')

;

5. 로그마이너 종료

SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR;


6. 해당 SQL 추출

6-1. DML

   SELECT TO_CHAR(TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')

                 ,SESSION_INFO

                 ,SQL_REDO

   FROM  LOGMNR_TEMP

   WHERE OPERATION IN ('DELETE','INSERT',UPDATE')

;

6-2. DDL

   SELECT TO_CHAR(TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS')

                 ,SESSION_INFO

                 ,SQL_REDO

   FROM  LOGMNR_TEMP

   WHERE OPERATION IN ('DDL')

;


--- EOF ---


반응형