Oracle/용어정리2009. 12. 10. 10:42

Oracle 리두 로그 파일들은 Oracle 데이타베이스의 작업 및 기록에 대한 유용한 정보를 풍부하게 포함하고 있지만, Oracle8i 이전 까지는 이 정보를 활용할 수 있는 정확하고 간편한 툴이 없었습니다. 로그 파일들은 데이타베이스 복구 수행을 위해 필요한 모든 데이타를 포함하면서, 데이타베이스의 데이타와 메타데이타에 만들어진 모든 변경 사항들도 기록하고 있습니다.

LogMiner는 완벽한 관계형 툴로서, 관리자는 이것을 통해 SQL 을 사용하면서 로그 파일들의 읽기, 분석, 그리고 해석 등을 수행할 수 있고, 또한 Oracle8 포워드로부터 온라인 또는 아카이브된 유효한 리두 로그 파일을 볼 수도 있습니다.

LogMiner 를 통한 로그 파일 분석은 다음과 같은 작업을 수행할 수 있습니다..

  • 트랜잭션, 사용자, 테이블 그리고 시간 등을 기반으로 하는 변경 사항들의 특정 집합을 추적합니다. 누가 데이타베이스 객체를 수정했고, 데이타 전후에 무엇이 있었는지를 결정하는 것은 어렵지 않지만, 데이타베이스 변경 사항들을 다시 그들의 소스로 추적해서 감사 (audit) 하는 것과 그것들을 실행 취소하는 것은 그리 쉬운 작업이 아닙니다. 이러한 기능들은 보안 및 관리 툴에서 매우 유용하게 사용될 수 있습니다.
  • 부정확한 데이타베이스 수정을 정확하게 지적합니다. 이것은 데이타베이스 레벨이 아니라 애플리케이션 레벨에서 논리적 복구의 수행을 위해 사용될 수 있습니다.
  • 튜닝 및 용량 계획을 위한 추가 정보를 제공합니다. 또한 관리자는 트렌드 및 데이타 액세스 패턴을 결정하기 위한 다양한 형태의 기록 분석을 수행할 수도 있습니다.
  • 복잡한 애플리케이션들의 디버깅을 위해 중요한 정보를 검색합니다..

LogMiner 는 Oracle 서버가 이미 데이타베이스 복구를 위해 리두 로그 파일들을 유지 관리하고 있기 때문에 시스템 상에 데이타 모음(collection) 오버헤드를 강요하지 않고 이 기능들을 제공하고 있습니다. 또한, LogMiner 는 강력한 관리 및 분석 툴 집합을 위한 기반 기술로서도 사용되고 있습니다.

LogMiner 의 사용 방법

LogMiner는 리두 로그 파일 분석을 위해 마운트된 데이타베이스를 필요로 하지는 않지만, 리두 로그 파일들의 내용을 번역하기 위하여 분석되는 데이타베이스 딕셔녀리에 대한 액세스는 필요로 합니다. LogMiner는 내부 객체 식별자 및 데이타 유형들을 의미 있는 외부 객체 이름 및 데이타 포맷으로 번역하기 위해 딕셔너리를 사용하고 있습니다. 하나의 데이타베이스 로그 파일들이 다른 데이타베이스에서 분석될 수 있도록 데이타베이스 딕셔너리 (딕셔너리 파일이라고 불리는)의 추출이 생성될 수가 있고, 딕셔너리 파일의 생성을 위해서는 PL/SQL 패키지가 제공이 되고 있습니다

분석되는 로그 파일들은 동적 성능 뷰로 매핑이 되고(V$ 테이블), PL/SQL 는 로그 파일과 V$ 로그 테이블의 결합을 위해 제공이 되고 있는데, 이 테이블의 모든 행들은 데이타베이스에서 수행되는 논리적 작업에 대한 완벽한 정보를 나타내줍니다. 이 논리적 작업들의 각각에 대하여, 변경의 영향을 논리적으로 기술하기 위해 REDO 및 UNDO SQL 문이 제공되고 있습니다. SQL UNDO 문은 원래의 변경 사항을 롤백하기 위해 사용이 될 수 있고, SQL REDO 문은 데이타베이스 상에서 수행되는 원래의 작업을 나타내고 있습니다..

로그 파일의 데이타는 테이블로 매핑되기 때문에, 표준 SQL 를 통해 또는 지원 언어/인터페이스 (PL/SQL, Java Stored Procedures, Oracle Call Interface, Pro*C, 그리고 SQLJ) 를 사용하여 프로그램적으로 간편하게 액세스될 수 있습니다.

예를 들면, Joe Smith가 EMPLOYEE 테이블에 어떤 변경 사항을 만들었는지 파악하기 위해서, 다음 질의가 실행될 수 있습니다..

select sql_redo, sql_undo from v$logmnr_contents where username = 'joe smith' and seg_name = 'EMPLOYEE';

이 질의는 다음과 같이 포맷된 결과를 반환하는데, 이 결과는 Joe가 처음에 종업원 레코드를 삭제한 다음, 보다 많은 급료의 레코드를 재생성하는 것을 보여주고 있습니다.

SQL_REDO

SQL_UNDO

delete * from EMPLOYEE where EMPNO = 12345 and ROWID = 'AAABOOAABAAEPCABA'; insert into EMPLOYEE (NAME, EMPNO, SALARY) values ('joe smith', 12345, 500);
insert into EMPLOYEE (NAME, EMPNO, SALARY) values('joe smith', 12345, 2500); delete * from EMPLOYEE where EMPNO = 12345 and ROWID = 'AAABOOAABAAEPCABA';

이 간단한 예는 LogMiner의 사용이 얼마나 강력하면서 간편한지를 나타내고 있습니다. LogMiner를 사용하면 훨씬 더 정교한 분석이 수행될 수가 있습니다: 연속된 명령문들과 트랜잭션들을 통해 변경 사항을 추적합니다; 트리거와 애플리케이션 업데이트가 애플리케이션 디버깅을 위해 어떻게 상호 작용하는지를 파악합니다; 또는 용량 계획 및 튜닝 시간에 대해 테이블이 어떠한 비율로 업데이트가 되는지를 파악합니다.

출처 : http://www.oracle.com/technology/global/kr/deploy/availability/htdocs/logminer.html

'Oracle > 용어정리' 카테고리의 다른 글

DUL(Disk Unload)  (0) 2009.12.18
OLTP  (0) 2009.12.16
Tuning(튜닝)이란?  (0) 2009.12.09
Enqueue vs Latch  (0) 2009.11.26
SCN  (0) 2009.11.17
Posted by 자수성가한 부자