Microsoft Word - 기술노트[23회] Logminer.doc

Similar documents
Microsoft Word - 기술노트[23회]_Logminer_1.1

Microsoft PowerPoint - Tech-iSeminar_Logminer.ppt

Tablespace On-Offline 테이블스페이스 온라인/오프라인

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목 차

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

FlashBackt.ppt

MS-SQL SERVER 대비 기능

PowerPoint Presentation

歯sql_tuning2

13주-14주proc.PDF

10.ppt

PowerPoint 프레젠테이션

ALTIBASE HDB Patch Notes

untitled

DBMS & SQL Server Installation Database Laboratory

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

untitled

슬라이드 1

Microsoft PowerPoint - 10Àå.ppt

PRO1_09E [읽기 전용]

MySQL-.. 1

PowerPoint Presentation

Oracle Database 10g: Self-Managing Database DB TSC

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

제목을 입력하세요.

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

Chapter 1

62

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

chapter4

윈도우시스템프로그래밍

문서 템플릿

Spring Boot/JDBC JdbcTemplate/CRUD 예제

윈백및업그레이드 Tibero Flashback 가이드

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

PRO1_02E [읽기 전용]

Orcad Capture 9.x

最即時的Sybase ASE Server資料庫診斷工具

휠세미나3 ver0.4

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

Microsoft Word - 기술노트[19회] Flashback.doc

CD-RW_Advanced.PDF

ETL_project_best_practice1.ppt

세미나(장애와복구-수강생용).ppt

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

MySQL-Ch10

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

슬라이드 1

#KM-250(PB)

uFOCS

Simplify your Job Automatic Storage Management DB TSC

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

슬라이드 제목 없음

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

윈도우시스템프로그래밍

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

The Self-Managing Database : Automatic Health Monitoring and Alerting

Intra_DW_Ch4.PDF

단계

PowerPoint Template

untitled

DocsPin_Korean.pages

단계

#KM560

1217 WebTrafMon II


VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

K7VT2_QIG_v3

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

Secure Programming Lecture1 : Introduction

Tina Admin

Windows 8에서 BioStar 1 설치하기

PRO1_04E [읽기 전용]

#KM-235(110222)

DW 개요.PDF

Contents Data Mart 1. 개요 실습방향 테스트위한사전설정 본격실습시작 ) 데이터파일 dd 명령어로 백업수행및유실시키기 ) 장애복구수행 결론...7 페이지 2 / 7

PowerPoint Presentation

Remote UI Guide

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

6주차.key

슬라이드 1

EndNote X2 초급 분당차병원도서실사서최근영 ( )

TITLE

Data Guard 기본개념.doc

#DPK5(PB)(9.8.19)

#KLZ-371(PB)

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

Smart Power Scope Release Informations.pages

PowerPoint Presentation

Microsoft PowerPoint Python-DB

#KM-340BL

슬라이드 1

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

쉽게 풀어쓴 C 프로그래밊

Transcription:

Goodus 기술노트 [23 회 ] Logminer Author 서강혁, 정철우 Creation Date 2007-08-30 Last Updated 2007-08-30 Version 1.0 Copyright(C) 2004 Goodus Inc. All Rights Reserved Version 변경일자 변경자 ( 작성자 ) 주요내용 1 2007-08-30 서강혁, 정철우 문서최초작성 2 3

Contents 1. Logminer...3 1.1. Logminer 란?... 3 1.1.1. Logminer 로가능한것들... 3 1.1.2. Logminer 의제약사항... 4 1.2. Logminer 를사용하기위한준비사항... 4 1.3. Logminer 활용예제... 4 1.3.1. 사용자실수로데이터를변경 (delete, insert, update) 후 Logminer 로복구하기... 5 1.3.2. 특정시점에서데이터가변경되었을때 Logminer 로유저확인하기... 8 1.3.3. Toad 에서 Logminer 쉽게사용하기... 9 1.3.4. Logminer 시발생하는 Error 및조치방법... 15 1.4. V$LOGMNR_CONENTS... 16-2 -

1. Logminer 1.1. Logminer 란? Logminer 는 Oracle 8i 이상에서사용가능한 tool 로써, Oracle 에기본내장되어있으며, Redo log 와 Archive log file 의내용을읽어들이는데사용할수있다. 1.1.1. Logminer로가능한것들 Logminer 로 Redo 와 Archive log file 을읽어들이게되면, DB 에서해당 Log file 의생성시점에일어났던모든 DML 및 DDL(9i 이상지원 ) 문을확인할수있으므로, 특정트랙잭션의발생시점이나, 실행한유저등을확인할수있고, UNDO SQL 을추출해내어해당쿼리를 Rollback 하는데사용할수있다. l Database 에작성된변경사항들의기록 l 유형 (INSERT, UPDATE, DELETE, COMMIT/ROLLBACK, DDL 또는 INDEX 작업 ) l 그와같은변경이발생하는 SCN (System Change Number) l 변경을포함하는트랜잭션식별 l 특정트랜잭션이커밋되는 SCN l 변경된객체의테이블및스키마명칭 l DML 또는 DDL 문을발생시킨사용자정보 l Redo 레코드들을생성하는 동등한 SQL 을나타낼수있는재생성된 SQL (SQL_REDO) l 변경사항의실행취소를위해필요한 SQL 을제공하는재생성된 SQL (SQL_UNDO) - 3 -

1.1.2. Logminer의제약사항 1) LONG and LOB data type 2) Object types 3) Nested tables 4) Object Refs 5) IOT(Index-Organized Table) 6) Chianed row or migrate row 1.2. Logminer 를사용하기위한준비사항 l UTL_FILE_DIR Parameter 설정 : init parameter file에설정해주어야하며, 그용도는 Log를읽을때생성되는 Dictionary 정보를저장하는데사용되는, Flat file의저장공간으로사용된다. UTL_FILE_DIR = /oracle/ora9/dict scope=spfile; l LogMiner 를위한 dictionary file 생성 ( 또는 Online Redo log) =>Object 정보를저장하기위한 Flat file 용도이다. SQL> execute dbms_logmnr_d.build (dictionary_filename => 'dictionary.ora', - dictionary_location => '/data/ora9/dict', options => dbms_logmnr_d.store_in_flat_file); l 분석할 Redo log 또는 Archive log file l Database 가 ArchiveLog Mode 이어야한다. l 필요에따라서 Mining 하고자하는 Table 이 supplemental logging 이되어야한다. l Archive Log 및 Flat Dictionary File 에대한 read 권한이있어야한다. l 최소 CPU 1장정도의 resource 을사용한다. ( 대략 Logminer 1개의 DB Session 당 1개의 CPU 사용함 ) l 최소 Memory 을 10MB 에서 100MB 정도사용한다. (Redo Size 을 100MB일경우 ) l Mining 데이터를 Table 로저장시 Tablespace 확인후작업을해야하며추후꼭 Drop 처리를해야한다 1.3. Logminer 활용예제 관련 View 및 Package 1) V$LOGMNR_CONTENTS - 현재분석되고있는 log file 의내용 2) V$LOGMNR_DICTIONARY - 사용중인 dictionary file 3) V$LOGMNR_LOGS 분석에사용되고있는 log file 4) V$LOGMNR_PARAMETERS - LogMiner 에 Setting 된현재의 parameter 의값 5) dbms_logmnr Package (start, end, new, addfile, remove) - 4 -

1.3.1. 사용자실수로데이터를변경 (delete, insert, update) 후 Logminer로복구하기 l 데이터삭제하기 SQL> delete adress where name=' 정철우 '; 1 row deleted. SQL> select * from adress where name=' 정철우 '; no rows selected 위와같이 data 가 delete 된경우해당시점을명확히알고있거나최소한해당날짜 라도정확히알고있다면다음과같은방법으로해당데이터를복구할수있다. l Dictionary file 을등록한다. (UTL_FILE_DIR Parameter 설정되어있어야함 ) SQL> execute dbms_logmnr_d.build - (dictionary_filename => 'dictionary.ora', - dictionary_location => '/oracle/ora9/dict', - options => dbms_logmnr_d.store_in_flat_file); l 해당시점의 logfile 을확인 SQL> alter session set nls_date_format='yyyy-mm-dd HH24:MI:SS'; Session altered. SQL> select group#, sequence#, status, first_time from v$log GROUP# SEQUENCE# STATUS FIRST_TIME ----------------------------------- ---------- ---------------- ------------------- 1 1259 INACTIVE 2007-08-29 21:09:00 2 1261 CURRENT 2007-08-30 15:43:12 3 1260 INACTIVE 2007-08-29 21:12:55 여기서 group# 과 first_time( 해당 logfile 의기록이시작된시간 ) 을확인해보면몇번 logfile 이해당시점인지확인할수있다. Ex) 15:50 분에복구해야할트랜잭션이있었다면 2 번 redo log file 을읽어와야함을알수가있다. 한가지주의할점은 redo log file 의경우파일의내용이 log switch 가발생하면서계속변동이발생하기때문에현시점이아닌특정시점의내용을 redo log 에서는찾기란거의불가능하다. 위의 v$log 에서확인한시간도 DB 가운영중이라면계속변동이발생하기때문에, archive log file 을사용하여야정확한시점의내용을찾을수가있다. 가장확실한방법은 Logminer 에해당 log file 을등록후 v$logmnr_logs 뷰를조회하는것이다. - 5 -

exec dbms_logmnr.add_logfile('/data/ora9/redo03.log', dbms_logmnr.new); exec dbms_logmnr.add_logfile('/data/ora9/redo01.log', dbms_logmnr.addfile); exec dbms_logmnr.add_logfile('/data/ora9/redo02.log', dbms_logmnr.addfile); SQL> select filename, low_time, high_time from v$logmnr_logs; FILENAME LOW_TIME HIGH_TIME ------------------------------ ------------------- ------------------- /data/ora9/redo01.log 2007-08-29 21:09:00 2007-08-29 21:12:55 /data/ora9/redo03.log 2007-08-29 21:12:55 2007-08-30 15:43:12 /data/ora9/redo02.log 2007-08-30 15:43:12 1988-01-01 00:00:00 ->CURRENT ARCHIVE LOG FILE 도위와같은방법으로확인하거나, 아래의뷰를이용하여완료시간을확인하면된다. SQL> exec dbms_logmnr.add_logfile('/data/arch/1_1259.dbf', dbms_logmnr.new); exec dbms_logmnr.add_logfile('/data/arch/1_1260.dbf', dbms_logmnr.addfile); exec dbms_logmnr.add_logfile('/data/arch/1_1261.dbf', dbms_logmnr.addfile); SQL> select filename, low_time, high_time from v$logmnr_logs; FILENAME LOW_TIME HIGH_TIME ------------------------------ ---------------------------------------------------- ------------------- /data/arch/1_1259.dbf 2007-08-29 21:09:00 2007-08-29 21:12:55 /data/arch/1_1260.dbf 2007-08-29 21:12:55 2007-08-30 15:43:12 /data/arch/1_1261.dbf 2007-08-30 15:43:12 2007-08-30 16:18:36 또는 SQL> select name, completion_time from v$archived_log; NAME COMPLETION_TIME (archive 완료시간 ) ------------------------------ - -------------------------------------- /data/arch/1_1259.dbf 2007-08-29 21:12:56 /data/arch/1_1260.dbf 2007-08-30 15:43:12 /data/arch/1_1261.dbf 2007-08-30 16:18:36 여기서대략 8 월 29~30 일경에해당데이터가삭제된것을알고있다면다음과같은 방법으로복구가가능하다. SQL> alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'; SQL> execute dbms_logmnr.start_logmnr( - dictfilename => '/oracle/ora9/dict/dictionary.ora', - starttime => '2007-08-29 22:00:00', - - 6 -

endtime => '2007-08-30 16:15:00') SQL> select sql_undo, sql_redo from v$logmnr_contents 2 where username='test' 3 and seg_name='adress' 4 and operation ='DELETE'; SQL_UNDO SQL_REDO ---------------------------------------- ---------------------------------------- insert into "TEST"."ADRESS"("NAME","MOBI LE","HOME","WORK","EMAIL","MEMO","BIRTHD AY") values (' 정철우 ','010-9999-0000','0 2-2603-5596','070-7017-4194','roka1002@y ahoo.co.kr','oracle','1978-01-01'); delete from "TEST"."ADRESS" where "NAME" = ' 정철우 ' and "MOBILE" = '011-9901-781 1' and "HOME" = '02-2603-5596' and "WORK " = '070-7017-4194' and "EMAIL" = 'roka1 002@yahoo.co.kr' and "MEMO" = 'ORACLE' a nd "BIRTHDAY" = '1978-01-01' and ROWID = 'AAAGINAAGAAAAAPAAo'; SQL_REDO 는사용자가 row 를삭제했던구문이고, SQL_UNDO 는이를 Rollback 위한 구문이므로, SQL_UNDO 를실행해주면해당 row 를복구할수있다. SQL> insert into "TEST"."ADRESS"("NAME","MOBILE","HOME","WORK","EMAIL","MEMO","BIRTHDAY") values (' 정철우 ','010-9999-0000','02-0000-0000','070-7017-4194','roka1002@o.co.kr','ORACLE','1900-01-01'); 1 row created. Commit; SQL> select name, mobile from adress where name=' 정철우 '; NAME MOBILE -------------------- -------------------- 정철우 010-9999-0000 정상적으로 row 가복구됨을확인할수있다. SQL> exec dbms_logmnr.end_logmnr -> Logminer 세션종료. 만약 delete, insert, update 명령등으로해당테이블의모든데이터를변경했다면 Sql_undo 는 1 건이아닌해당테이블의 row 수만큼생성이된다. 이것은 rowid 단위로 log 가기록되기때문이다. 만약삭제된해당시점을정확히모를경우, 가용한 ARCHIVE LOG 를전부등록한후 - 7 -

execute dbms_logmnr.start_logmnr(dictfilename => '/oracle/ora9/dict/dictionary.ora'); 로 logmnr 세션을시작해서 v$logmnr_contents view 를찾으면된다. 이때 ARCHIVE LOG FILE 의개수와크기에따라더많은시간을필요로한다. 데이터가변경된것이많아서찾기가힘들때는해당결과값을 spool 명령어로저장후 PC 의검색기능등을이용해찾는게빠르다. 1.3.2. 특정시점에서데이터가변경되었을때 Logminer 로유저확인하기 SQL> drop table adress; Table dropped. SQL> select * From adress; ERROR at line 1: ORA-00942: table or view does not exist Logminer 를이용하면해당테이블을 DROP 한것이어느 Client 에서접근하여언제 작업하였는지를확인할수있다. 단이때 DDL 문 (ALTER, DROP, CREATE) 은 UNDO 정보는제공되지않으므로, 변경 된테이블의복구는굿어스기술노트 19 회에서소개한 FLASHBACK 이나 CLONE DB 등을이용하여복구하도록한다. 1 번챕터의데이터복구하기와같이 DICTIONARY FILE 생성과분석할 ARCHIVE LOGFILE 을등록하도록한다. 그다음 alter session set nls_date_format = 'YYYY-MM-DD HH24:MI:SS'; execute dbms_logmnr.start_logmnr( - dictfilename => '/oracle/ora9/dict/dictionary.ora', - starttime => '2007-08-29 22:00:00', - endtime => '2007-08-30 16:55:00') SQL> select timestamp, session_info, sql_undo, sql_redo from v$logmnr_contents where username='test' and seg_name='adress' and sql_redo like 'drop%'; TIMESTAMP SESSION_INFO SQL_UNDO SQL_REDO ------------------- ---------------------------------------------------------------------------------------- ---------- -------------------- 2007-08-30 16:54:52 login_username=test client_info= OS_username=oracl drop table adress; e9 Machine_name=test.nt OS_terminal=pts/1 OS_proce ss_id=19298 OS_program name=sqlplus@test.nt (TNS V1-V3) - 8 -

위의결과값을보시면 SQL_UNDO 란의공백을확인할수있다.(DDL 은 UNDO 안됨 ) 그리고 TIMESTAMP 컬럽에서해당 table 이 drop 된시간과 session_info 컬럼에서접속한 client 의 Machine_name 을확인하여어느유저가테이블을 drop 했는지를확인할수가있는것이다. 1.3.3. Toad에서 Logminer 쉽게사용하기 DBA 가주로사용하는 TOAD 나 ORANGE 같은 Tool 을사용하면좀더손쉽게 Logminer 에접근하는것이가능하다. 이러한 tool 을사용했을때의장점은 GUI 의직관적인인터페이스로손쉽게사용이가능하며, Logminer 시의부하가모두 tool 을실행하는 PC 에걸림으로써, DB 서버에부하를주지않으며, 결과값을엑셀파일이나, 텍스트파일등다양한포맷으로변환해, 필터등을이용해쉽게원하는값을추출할수있다는데있다. 여기에서는 Toad(9.0) 를이용한 Logminer 사용법을알아보도록하자. (Orange 도거의비슷함 ) 1. Logminer 시작 2. Dictionary file 설정 - 9 -

여기서 Use Dictionary in redo logs 를선택하면밑의 dictionary 생성창이활성화된다. 일반적으로, 기본적으로선택되어있는 online 방식을사용하면된다. 3. 분석할 Redo log 또는 Archive log file 선택 4. FTP 를이용하여 DB 서버에서 PC 로 Logfile download - 10 -

첫번째그림에서 Connect 버튼을누르면밑의 server setting 창이열리면서 FTP 로 LOGIN 할수있는정보를요구한다. (ARCHIVE DEST 는자동적으로찾음 ) 여기서정상적으로접속이이루어지면오른쪽화면처럼 ARCHIVE LOG LIST 가나오고여기서분석할 ARCHIVE 를선택하면된다. ( 연속된 FILE 을여러개선택가능 ) 5. 분석할 ARCHIVE LOG FILE 목록 다음과같이정상적으로분석할 LOG FILE 목록이보이게된다. 6. 분석할 FILE 의 SCN 및 TIMESTAMP 확인 다음과같이자동으로해당 LOG FILE 의첫번째파일의시작 SCN 및 TIMESTAMP 와마지막파일의 SCN 및 TIMESTAMP 가보여지게되며, 사용자가범위안에서임의 로원하는값을수정할수있다. - 11 -

7. Log 에서읽어올 Colum 값선택 다음과같이읽어올 Colum 값을선택할수있다. 해당트랜잭션의발생시간 ( TIMESTAMP) 트랜잭션을발생시킨세션의정보 (Session info) 해당오라클 USER 명 (Username) 실행된 SQL 정보 (SQL REDO) ROLLBACK 할 SQL 정보 (SQL_UNDO) Colum 을선택후초록색화살표를클릭하면 Logminer 가시작이된다. 8. Logminer 결과값화면 위화면에서마우스오른쪽버튼를누른후 Save Grid 를선택. - 12 -

9. 해당결과값을 EXCEL file format 으로변환 ` Save Grid 를선택하면 Excel format 으로 Logminer 결과값을저장할수있다. 10. 생성된 EXCEL File Excel file 로변환후 Filter 등을이용하면손쉽게원하는값만을찾는것이가능하다. - 13 -

11. Logminer 시 DB 서버 ( 위 ) 와 Tool 를실행하는 PC( 아래 ) 의부하비교 위의그림을보면 Toad 를이용하여 Logminer 진행시 DB 서버 ( 위 ) 에는 CPU Idle 이 99% 로 부하가거의없고 clinet ( 아래 ) 에는 Toad 에서 CPU 를 99% 이용함을볼수있다. - 14 -

1.3.4. Logminer시발생하는 Error 및조치방법 ERROR at line 1: ORA-01282: date range specified is invalid ORA-06512: at "SYS.DBMS_LOGMNR", line 53 ORA-06512: at line 1 원인 : 지정한날짜및시간이해당 LOGFILE 의범위에없을때발생. 조치 : 날짜및시간을적절한값으로수정 (v$logmnr_logs view 참고 ) ERROR at line 1: ORA-01291: missing logfile ORA-06512: at "SYS.DBMS_LOGMNR", line 53 ORA-06512: at line 1 원인 : 잘못된 Logfile 을등록했을때발생조치 : Logfile 의이름및연속된 logfile 인지확인 ERROR at line 1: ORA-01861: literal does not match format string ORA-06512: at line 1 원인 : 잘못된포맷 ( 날짜시간등 ) 을사용했을때발생조치 : alter session set nls_date_format 명령으로정확한 DATE 값지정 ERROR at line 1: ORA-01284: file /data/arch/1_1257.log cannot be opened ORA-00308: cannot open archived log '/data/arch/1_1257.log' ORA-27037: unable to obtain file status 원인 : 해당파일에접근할수없을때발생조치 : 정확한디렉토리경로및권한확인 ERROR at line 1: ORA-01306: dbms_logmnr.start_logmnr() must be invoked before selecting from v$logmnr_contents 원인 : Logminer 세션이종료된상태이다. 조치 : SQL PLUS 에서 EXIT 로 Logout 하면발생하며, 이때 Dictionary file 등록부터다시진행하여야한다. - 15 -

1.4. V$LOGMNR_CONENTS API Type Description SCN NUMBER System change number (SCN) when the database change was made CSCN NUMBER System change number (SCN) when the transaction committed; only meaningful if the COMMITTED_DATA_ONLY option was chosen TIMESTAMP DATE Timestamp when the database change was made COMMIT_TIMESTAMP DATE Timestamp when the transaction committed; only meaningful if the COMMITTED_DATA_ONLY option was chosen THREAD# NUMBER Number of the thread that made the change to the database XIDUSN NUMBER Transaction ID undo segment number of the transaction that generated the change XIDSLT NUMBER Transaction ID slot number of the transaction that generated the change XIDSQN NUMBER Transaction ID sequence number of the transaction that generated the change SEG_OWNER VARCHAR2(32) Owner of the modified segment SEG_NAME VARCHAR2(256) Name of the modified data segment TABLE_NAME VARCHAR2(32) Name of the modified table (in case the redo pertains to a table modification) SEG_TYPE NUMBER Type of the modified data segment 0 = UNKNOWN 1 = INDEX 2 = TABLE ex) SEG_NAME = ZORD_SVC 19 = TABLE PARTITION ex) SEG_NAME = ZORD_SVC_HST,PR_2007 20 = INDEX PARTITION 34 = TABLE SUBPARTITION All other values = UNSUPPORTED SEG_TYPE_NAME VARCHAR2(32) UNKNOWN INDEX TABLE - 16 -

TABLE PARTITION UNSUPPORTED TABLE_SPACE ROW_ID VARCHAR2(18) Row ID of the row modified by the change (only meaningful if the change pertains to a DML) SESSION# NUMBER Session number of the session that made the change USERNAME VARCHAR(30) Name of the user who executed the transaction SESSION_INFO VARCHAR2(4000) Information about the database session that executed the transaction Contains process information, machine name from which the user logged in etc (login_username, client_info, OS_username, Machine_name, OS_program_name) EX) login_username=apps client_info= OS_username=invb01 Machine_name=nngmpbt1 OS_terminal= OS_process_id=17465 OS_program_name=ZINVBCAL00010@nngmpbt1 (TNS V1-V3) ROLLBACK NUMBER 1 = if the redo record was generated because of a partial or a full rollback of the associated transaction 0 = otherwise OPERATION VARCHAR2(32) User level SQL operation that made the change INSERT = change was caused by an insert statement UPDATE = change was caused by an update statement DELETE = change was caused by a delete statement DDL = change was caused by a DDL statement START = change was caused by the start of a transaction COMMIT = change was caused by the commit of a transaction ROLLBACK = change was caused by a full rollback of a transaction SELECT_FOR_UPDATE = operation was a - 17 -

SELECT FOR UPDATE statement INTERNAL = change was caused by internal operations initiated by the database UNSUPPORTED = change was caused by operations not currently supported by LogMiner OPERATION_CODE NUMBER Number of the operation code 0 = INTERNAL 1 = INSERT 2 = DELETE 3 = UPDATE 5 = DDL 6 = START 7 = COMMIT 25 = SELECT_FOR_UPDATE 36 = ROLLBACK 255 = UNSUPPORTED SQL_REDO VARCHAR2(4000) Reconstructed SQL statement that is equivalent to the original SQL statement that made the change SQL_UNDO VARCHAR2(4000) Reconstructed SQL statement that can be used to undo the effect of the original statement that made the change - 18 -