database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 38778 게시물 읽기
No. 38778
Active - Active DB 데이터 동기화
작성자
곤지
작성일
2011-08-12 15:15ⓒ
2011-08-12 16:02ⓜ
조회수
6,283

Oracle 11g se를 사용 중입니다.

동일 한 구조를 가진 A, B두개의 DB 서버가 있습니다. 물론 물리적으로 분리 되어 있습니다.
두 DB는 모두 Active 상태로 운영 중입니다.

이러한 상황에서 양쪽의 데이터 동기화 기능을 제공 하려고 자료를 찾아보니
오라클에서 제공하는 기능들은 모두 Enterprise 버전에서는 지원이 된다고 하네요 ...
현시점에서 Enterprise 버전을 사용하기는 어려움이 있어, 고민끝에 아래와 같은
방법을 생각해 보았습니다.

Trigger를 이용하여 각 테이블에서 발생되는 항목을 별도(Log 테이블정도?)의 데이블로
구성하여 저장 하고 이를 로드하여, 각 DB 에 저장하는 어플을 제작하자!!!
그래서, 그 어플을 A, B DB에 설치하고, B 의 어플은 A의 Log 테이블을, A의 어플은 B의
Log 테이블을 로드 하자!!!

여기까지는 별다른 문제가 안보입니다. 동기화 해야 하는 테이블이 많지 않고,
데이터 트랜젝션이 많지도 않은 테이블 이기에 ...

헌데 문제는 위의 경우, 양쪽에서 핑퐁을 치게 되리라 예상되어 ...

허면!!! 어떤 방법으로 핑퐁을 막을 것인가!!!??? 이 부분이 어렵네요 ...

혹시, A어플이 B의 Log를 읽어 A 디비에 적용하는 시점에서 Triger를 정지(?) 시키는 방법이
가능할까요 ?? 가능하다면 그게 좋은 방법일까요 ??

걍 Enterprise 쓰고 싶네요 ㅜㅠ

이 글에 대한 댓글이 총 4건 있습니다.

헐 ... 글들을 보다보니 ... Trigger가 걸린 테이블에는 INSERT가 안되는건가요 ?? ㅠㅜ

이범길님이 2011-08-12 15:52에 작성한 댓글입니다.
이 댓글은 2011-08-12 16:02에 마지막으로 수정되었습니다. Edit

말씀하신대로 트리거를 이용하여 별도 어플실행이 가능합니다.

java 로 만든다면 oracle 내에서 실행도 가능합니다.

이와 유사한 작업을 해보았습니다.

Oracle -> MySQL 작업이었는데

트랜젝션이 많지 않아서 큰 문제없이 사용하였던 기억이 나네요.. 

1님이 2011-08-12 17:07에 작성한 댓글입니다. Edit

트리거를 양쪽에 건다면? 핑퐁을 쳐서 무한루프에 빠질 가능성이 있겠죠.
입력구분컬럼(자체 입력 / 트리거 입력)을 관리하시면 해결될 듯.

그런데 걱정되는것이
양쪽에서 각각 별도로 데이터가 입력된다면?

테이블의 PK 관리는 어떻게 하시나요?
양쪽에서 같은 PK 로 자료가 입력될수도 있지 않나요?
각 서버가 서로 간섭하지 않는 독립저긴 데이터가 입력된다면 모를까?
서로 같은 데이터를 입력하고 수정하고 삭제한다면? 복잡해질듯 합니다.
입력만 되나요? 삭제나 수정 발생은 어떻게 처리하실건가요?
동기화 되어 입력된 자료를 삭제하거나 하는일이 발생한다면?
원본도 같이 삭제 되어야 겠죠.

마농(manon94)님이 2011-08-12 17:41에 작성한 댓글입니다.

마농님 말씀처럼 저도 그런 부분들이 여러므로 복잡한 로직을 만들게 되고
그런 복잡한 로직에서 버그들이 속출하여, 잦은 비용발생을 우려하여
차라리 EE를 사용하자고 ~~~~ 외치고는 있으나 아시겠지만 SE 와의 금액차이가
크다보니 선뜻 결정이 안되는것 같습니다.

일단 트리거를 이용한 방법을 강구 중입니다. 혹 트리거로도 방법이 없을까 걱정했는데
다행히 트리거를 이용할 수 있어 그나마 다행이네요. 휴 ~~~

곤지님이 2011-08-22 10:37에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38781imp 오류 [2]
초보
2011-08-16
6774
38780SQL튜닝 부탁드립니다. [2]
jinkuidong
2011-08-15
5914
38779안녕하세요. 중복쿼리 1ROW 만들기 질문드립니다. [3]
질문자
2011-08-12
5713
38778Active - Active DB 데이터 동기화 [4]
곤지
2011-08-12
6283
38777update 하는 조건... [2]
권기혁
2011-08-12
4329
38776oracle sql developer 설치 및 사용 문의 [1]
전상도
2011-08-12
4730
38775decode 문 안에서 정렬 [2]
박주영
2011-08-11
4586
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다