오라클 DB 의 분산 환경 기법

 

1. database link

개념

분산환경 즉 서로 떨어진 오라클 DB 사이의 통신은 Oracle Network단의 DB LINK를 사용합니다.

Database 사이의 통신을 위해서 일종의 연결 끈(하나의 session)을 create database link link_name …과 같은 간단한 문법의 문장으로 만들 수 있는 간편한 방법이다.

 

동기화 기법

DB LINK만을 이용하여 DATA 동기화를 할 수 있으며, program 내에서

 

insert into emp values (….); — local DB 에 저장

insert into emp@remote_dblink values(….); — remote DB에 저장

commit;

 

이렇게 구현하면 2PC 를 지원하기 때문에 데이터 참조 무결성을 보장한다.

 

그러나 모든 client 프로그램에서 모두 local, remote 두 번의 트랜잭션 처리를 해야한다는 불편과 퍼포먼스 상의 문제와 local DB는 괜찮으나 remote DB에 이상이 생기면 모든 트랜잭션이 실패하여 ROLLBACK 된다는 단점이 있다.

 

 

2. Materialized View (Read Only Snapshot)

 

개념

자주 access되는 Remote DB의 table 데이터를 local DB에 physical한 형태의 복제 본(일반 테이블)으로 생성하여, network failure나 remote db의 failure 상태에 상관없이 local DB에서 바로 ACCESS하여 빠른 성능과 안정성으로 데이터를 조회하는 기능이다.

 

동기화 기법

DB LINK와 inner trigger, package, refresh job을 통해서 DATA 동기화를 하는 방법이다. program 내에서는 보통의 DML 처리와 똑같이 Local 테이블에 변경처리하면 programmer의 역할은 끝이다 .

그 이후 오라클 replication engine이 내부에 있는 inner trigger, package를 이용하여, 변경된 사항을 변경 log 테이블에 집어넣고, remote db가 refresh job을 주기적으로 수행하여 데이터를 추출해 가서 remote의 복제 본에 데이터를 적용한다.

 

 

3. Advanced Replication

개념

Read-only snapshot(materialized view)의 기본 골격에서 snapshot의 변경사항을 전달하기 위해 snapshot의 변경 분을 저장하는 uslog$_snapshot과 push job을 이용하는 updateable snapshot(materialized view)과 master table과 master table 간의 push 방식 형태로 데이터를 동기화 하는 multi master 방식 두 가지가 있다.

동기화 기법

master table의 변경상황은 read-only materialized view와 마찬가지로 변경 테이블에 저장하고, remote db가 refresh job을 수행하여 데이터를 추출해 동기화 한다.

반대 방향인 materialized view의 변경사항이 생길 경우는 mview 전용 변경테이블에 저장하고, 또 push할 수 있도록 defcall이란 queue테이블에 저장한다.

일정 간격 후 push job이 defcall에 쌓인 데이터를 master table에 반영한다.

이런 처리를 통하여 양방향 복제 처리를 완성할 수 있다.

단, 처리 매커니즘이 다른 방식보다는 복잡하고, 양방향 변경 처리 시 데이터의 충돌이 있을 경우가 있기 때문에 conflict resolution routine를 적용하는 등 관리와 setup에 더 신경을 써야 하며, replication 관리자의 숙련도가 요구된다.

 

 

4. Advanced Replication vs. DataGuard vs. Streams

항목

Advanced replication

DataGuard (Physical)

Streams

전체 데이터베이스 레벨의 복제 Yes Yes (redo log 전송방식 이므로 db전체 레벨만 가능함) Yes
Schema 레벨 복제 Yes No Yes
Table 레벨 복제 Yes No Yes
DML 복제 Yes Yes Yes
DDL 복제 Yes (multi-master만 가능) Yes Yes
Failover

Mechanism

Manual Failover
Failover

Switchover

Manual Failover
Change Captured Local Remote Local & Remote
Heterogeneous Database Support (이기종 db지원) Yes No Yes
Datatype Support ALL Some Some
OS Platform between source and Target Can Be Different Must Be Same Can Be Different
Oracle Version Between Source and Target Can Be Different Must Be Same Can Be Different
구현 reference 외XX 재외 공관 해XXX부 (XX청, XX청) 포XX
법XX XX국관리소 XX찰청
육X C3I/C4I 금XXX원
서X시 XX도본부


By haisins

오라클 DBA 박용석 입니다. haisins@gmail.com 으로 문의 주세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다