by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

2.5 Physiological Loggings




데이터베이스의 변경사항을 저장하는 방법에는 크게 3가지가 가능함

1) logical logging

  1. 설명: operation logging이라고 불리며 insert, delete, update, select for update 와 같은 오퍼레이션을 저장하는 방법
  2. 장점: 오퍼레이션만을 저장하므로, 저장되는 리두의 양이 적음
  3. 단점: 복구 시에 보잡한 절차를 거쳐 수행된다는 점

2) physical logging

  1. 설명: 변경된 모든 블록의 이전, 이후 이미지를 저장하는 방법
  2. 장점: 블록단위의 저장 방식이므로 복구시에 간단한 절차를 거쳐 수행된다는 점
  3. 단점: 저장되는 리두의 양이 많다는 점

3) physiolgical logging

  1. 설명: 오퍼레이션 코드와 블록의 변경사항을 저장하는 방법
  2. 장점: 오라클은 logical logging 방식과 physical logging 방식의 장점을 취합한 방식인 physiolgical logging 사용함
  • physiological logging의 저장방법 몇가지 예
    Statement Undo Redo
    INSERT INTO t1 VALUES (1,'ABC', 100); Delete row 1 Row1   c1 := 1   c2 := 'ABC'   c3 := 100
    UPDATE t1 SET c2='DEF' WHERE c1=1; Row1   c2 := 'ABC' Row1   c2 := 'DEF'
    DELETE FROM t1 WHERE c1 = 1; Row1   c1 := 1   c2 := 'DEF' Delete row 1
    SELECT c2 FROM t1 WHERE c1 = 1 FOR UPDATE; Unlock row 1 Lock row 1

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. 5월 30, 2011

    장태길 says:

    로그 마이너 분석 결과 ㅇ.ㅇ 로그마이너를 통해서 REDO 분석 결과 1. SQL_REDO, SQL_UNDO 문장 중 DELETE, UPDATE...

    로그 마이너 분석 결과 ㅇ.ㅇ
    로그마이너를 통해서 REDO 분석 결과
    1. SQL_REDO, SQL_UNDO 문장 중 DELETE, UPDATE 에서는 항상 ROWID 가 추가 된다.
    EX ) - delete from "OPS$ORACLE"."CHECK_T_MINER" where "A1" = '4' and "A2" = TO_DATE('30-MAY-11', 'DD-MON-RR')
    and ROWID = 'AACQVVAAEAAC7VGAAD';

    • update "OPS$ORACLE"."CHECK_T_MINER" set "A1" = '2' where "A1" = '12' and ROWID = 'AACQVVAAEAAC7VGAAB';

    2. Multi Row DML(Update, Delete ) 시에 Row 단위로 SQL_REDO, SQL_UNDO 가 발생 된다.
    3. Update ( 한 row), Update ( 한 row), Commit 시에는 SCN 으로 Ordering 되고, XID(Transaction ID) 를 통해서 하나의 Transaction 으로 묶임을 확인 할 수 있다.