ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Oracle] Oracle Streams 개념 이해 (기본)
    공부 이야기/ORACLE 2024. 5. 24. 12:34

    1. Capture

    - 소스 데이터베이스에서 DML, DDL이 발생하면 변경 사항을 Redo Log에 남긴다.

    - Redo Log에 기록된 내용을 가져오는 것을 Process Capture 라고 한다.

    - Redo Log가 아닌 트리거를 활용해서 가져오는 방식도 있다. 이를 Synchronized Capture 라고 한다.

     

    1-1. Process Capture

    - 프로세스 캡쳐는 테이블, 스키마 또는 전체 데이터베이스에 대한 DML 변경 사항과 DDL 변경 사항을 캡처할 수 있음

    - Redo Log에서 변경 사항을 캡처하고 캡처된 각 변경 사항을 LCR(Logical Changed Record)이라는 메시지로 포맷팅한다.

    - 이 때, 포맷팅된 메시지는 Captured LCR로 분류되는데 Oracle Streams Pool의 Buffer에 큐의 형태로 적재된다.

     

    1-2.  Synchronized Capture

    - 동기 캡쳐는 Redo Log가 아닌 내부 메커니즘(트리거)으로 캡쳐하며, 테이블의 DML에 대해서만 캡쳐한다.

    - LCR 메시지로 포맷팅하는 과정은 위 방식과 동일하지만 Persistent LCR로 분류되고 디스크 영역에 저장된다는 점에 차이가 있다.

    - 다른 Queue에 저장되는 이유는 데이터 일관성을 유지시키기 위한 동기화 방식이기 때문이다.

     

    + 사용자가 직접 프로세스를 호출해서 LCR이 아닌 사용자 정의 메시지로 큐에 대기시킬 수도 있다. 이를 명시적 캡쳐라고 한다.

     

    2. Stage Messages in a Queue

    - Capture 단계에서 포맷팅한 메시지를 Queue에 대기시키는 것을 Stage라고 한다.

    - ANYDATA 타입으로 큐를 생성하면 다양한 유형을 Queue에 저장시킬 수 있다.

    - 반면 특정 유형의 큐에는 특정 유형의 메시지만 취급 가능하다.

     

    3. Propagation

    - 하나의 큐에서 다른 큐로 메시지(*포맷팅된 데이터)를 전달하는 것을 Propagation이라고 한다.

    - 큐는 특정 데이터베이스에 종속되며 자유롭게 지정할 수 있다.

     

    4. Consume

    - 큐에 있는 메시지를 읽고 처리하는 것을 Consume이라고 한다.

    - Oracle Streams를 사용해서 Propagation Route를 지정하고 특정 데이터베이스에 대한 Consume 대상 메시지를 지정할 수 있다.

    - 백그라운드 프로세서(Apply Process)에서 사전에 규칙을 정하고 묵시적으로 수행할 수 있고 사용자가 직접 명시적으로 호출할 수 있다.

     

    5. Conflicts

    - 백그라운드 프로세서(Apply Process)는 소스 데이터베이스와 전파 대상 데이터베이스에서 사용할 LCR의 데이터가 다른 경우 충돌을 감지한다. (자동으로)

    - 소스 데이터베이스와 대상 데이터베이스에서 거의 동시에 큐에 있는 LCR을 변경(DML)할 때 발생할 수 있다.

    - Oracle Streams는 사전에 처리할 수 있는 Handler를 제공한다. Handler가 없거나 Handler에 의해 처리되지 않은 경우 Error Queue에 저장시킨다.

    - Oracle Streams는 Handler 보다는 정확한 시스템을 설계해서 충돌을 피하라고 권고한다. (한 쪽에서만 DML이 발생가능하도록 제어 등)

    - LCR 데이터 한 건 한 건 Handler 만드는 것도 공수이고 정상적인 처리가 된다는 보장도 없기 때문에 원천을 차단하는 방법이 효율적이라고 본 것이다.

     

    6. Transform

    - Oracle Streams에서 메시지 변환은 rule에 의해 관리된다.

    - PL/SQL을 사용하는지에 따라 다음 두 가지 방법으로 나뉜다. Declarative rule-based transformations(사용Y), Custom rule-based transformation(사용N)

    - 직접 실습을 통해 이해하겠다.

     

    7. Tag

    - 원본 데이터베이스에서 LCR을 포맷팅해서 큐에 대기시켰는데, 다시 원본으로 돌아가는 현상을 방지하기 위함

Designed by Tistory.