Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DBDBDEEP

Supplemental Logging 본문

Tibero Prosync

Supplemental Logging

Kihwane 2022. 11. 3. 10:10

Prosync 테스트 중, 가이드에 

 

SQL> ALTER TABLE TEST.T4 ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

가 있었다. 이것이 무엇을 의미하는지 알기 위해서 정리한다.


 

Supplemental logging

 

리두로그 (Redo Log)는 DML이 발생하는 경우 오직 변경된 컬럼의 데이터에 대해서만

Undo(변경 전 데이터) 와 Redo (변경 후 데이터) 정보를 남긴다. 

반면 Supplemental Logging은 DML 발생시 리구 로그에 추가적인 데이터를 남긴다.

 

리두로그는 기본적으로 Instance Recovery 혹은 Media Recovery 를 위해서 사용하는데 이러한 복구 동작을

수행하는 과정에서 Supplemental Logging 기능은 사실상 필요가 없다.

 

그렇다면 Supplemental Logging은 왜 사용하는 것일까?

 

supplemental logging을 사용하지 않았을 때

Physical Logging에서 리두 로그에 쓰이는 데이터를 표시한다. 

'변경 전 데이터' 와 '변경 후  데이터' 와 Rowid 가 리두로그에 적재된다. 

rowid를 사용해서 로우를 구분할 수 있을까? 

 

이러한 경우에는 사용할 수 없다.

1. 로우가 삭제되거나 다시 추가될 경우 rowid는 변경될 수 있다. 또한 row movement가 허락될 경우에도 rowid는 변경될 수 있다.

2. DB 복제 솔루션에 의해서 복제 DB로 해당 로우가 복제될 경우 복제된 로우의 rowid는 원본 rowid와 다를 수 밖에 없다.

 

ProsyncCapture Data Changed 솔루션으로 변경된 데이터들을 캡처해서 로그를 이용하여 타겟디비에 동기화 시켜주는 솔루션이다. 2번의 이유로 row를 구분할 수 없기 때문에 Supplemental Logging을 사용한다.

 

Supplemental Logging을 수행하면 변경된 로우의 모든 컬럼에 대한 정보를 남기는 것은 아니다. 

기본적으로 변경된 데이터와 사용자가 Supplemental Logging 생성시 지정한 컬럼들에 대해서만 Before 이미지가 남는다.

 

'소스DB'에서 Update Query 등이 수행될 때 Update Query 등으로 실제 변경이 발생된 Column 뿐만 아니라 나머지 Column들의 정보를 함께 아카이브 로그에 남기기 위해서 사용한다!!

 

Database-Level : 해당 DB Instance의 모든 Table 들에 대해 자동으로 Supplemental Logging이 된다. 

                            따라서 부하가 생길 수 있음.

Table-Level : 대상 테이블에 대하여 각각 alter 해주어야 하는 불편함이 존재하지만 overhead가 감소되어

                     운영 부담이 줄어드는 장점이 존재한다.

 

Supplemental logging 옵션
 > disable(default): redo log에 변경된 칼럼 정보만 기록 
 > enable : 하나의 컬럼이 변경되어도 전체 row정보를 redo log에 기록

 

Supplemental logging 적용

SQL> ALTER TABLE TEST.T4 ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;