[오라클] 로그마이너를 이용한 DML, DDL 데이터 추출
/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 ---