오라클 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도본부 |