Chat now with support
Chat with Support

SharePlex 11.4 - 관리 안내서

이 안내서 정보 이 안내서에 사용된 규칙 SharePlex 개요 SharePlex 실행 SharePlex의 여러 인스턴스 실행 sp_ctrl에서 명령 실행 SharePlex 매개변수 설정 데이터 복제 구성 컨테이너 데이터베이스와의 복제 구성 명명된 큐 구성 파티셔닝된 복제 구성 변경 내역 타겟에 대한 복제 구성 복제 전략 구성 DDL 복제 구성 오류 처리 구성 데이터 변환 구성 보안 기능 구성 SharePlex 사용자를 보안 그룹에 할당 프로덕션 시스템에서 복제 시작 SharePlex 모니터링 복제 문제 방지 및 해결 동기화 중단 데이터 복원 Capture 프로세스 조정 Post 프로세스 조정 Oracle 장애 조치 후 복제 복구 활성 복제 환경 변경 Oracle 애플리케이션 패치 또는 업그레이드 적용 소스 또는 타겟에서 Oracle 데이터 백업 문제 해결 팁 부록 A: 피어-투-피어 다이어그램 부록 B: SharePlex 환경 변수

파티셔닝된 복제 구성

이 장에는 수평으로 파티셔닝된 복제수직으로 파티셔닝된 복제의 고급 SharePlex 구성 옵션을 사용하기 위한 지침이 포함되어 있습니다. 이러한 옵션은 특정 요구 사항을 충족하기 위해 데이터를 분할하고 병렬화하며 필터링할 수 있는 추가적인 유연성을 제공합니다. 계속하기 전에 구성 파일 생성에 관한 개념과 프로세스를 이해했는지 확인하십시오.

내용

수평으로 파티셔닝된 복제 구성

수평으로 파티셔닝된 복제를 사용하여 테이블 행을 별도의 처리 스트림으로 나눕니다. 수평으로 파티셔닝된 복제를 사용하여 다음을 수행할 수 있습니다.

  • 소스의 나머지 행을 유지하면서 행의 하위 집합을 타겟에 복제합니다.
  • 서로 다른 행 하위 집합을 서로 다른 타겟에 복제합니다.
  • 타겟 테이블에 더 빠르게 게시하기 위해 소스 테이블의 복제를 병렬 Post 큐로 나눕니다.

지원되는 소스 및 타겟

  • PostgreSQL에서 PostgreSQL, Oracle, SQL Server 및 Kafka로

  • Oracle에서 모든 타겟으로

  • PGDB as a Service에서 PGDB as a Service로

  • PGDB as a Service에서 Oracle로

  • PGDB as a Service에서 PostgreSQL로

수평으로 파티셔닝된 복제 개요: Oracle에서 모든 타겟으로

테이블에 대해 수평으로 파티셔닝된 복제를 구성하는 단계는 다음과 같습니다.

  1. 행 파티션을 정의하고 이를 파티션 scheme에 연결합니다.

    • 행 파티션은 그룹으로 복제할 소스 테이블 행의 하위 집합입니다.

    • 파티션 scheme은 행 파티션의 논리적 컨테이너입니다.

  2. 복제에 파티션을 포함하려면 SharePlex 구성 파일에 파티션 scheme의 이름을 지정합니다.

파티션 유형

파티션 scheme의 행 파티션은 다음 중 하나를 기반으로 할 수 있습니다.

  • 컬럼: 컬럼 기반 파티션 scheme에는 컬럼 조건으로 정의된 행 파티션이 포함됩니다. 컬럼 조건은 테이블 행의 하위 집합을 정의하는 WHERE 절입니다.
  • 해시: 해시 기반 파티션 scheme에는 SharePlex가 여러 큐에 행을 고르게 배포하도록 지시하는 해시 값으로 정의된 행 파티션이 포함되어 있습니다.
컬럼 기반 파티션 scheme 정보

다음과 같은 목적으로 컬럼 조건에 따라 행 파티션을 사용할 수 있습니다.

  • 단일 행 파티션을 사용하여 테이블 행의 하위 집합만 복제합니다. 예를 들어 YEAR 컬럼의 값이 2014보다 큰 행만 복제할 수 있습니다. 이 경우 파티션 scheme의 이름은 "Since2014" 또는 "Recent"일 수 있습니다.
  • 여러 행 파티션을 사용하여 테이블의 행을 나누어 각 행 집합이 다른 타겟에 복제되도록 합니다. 예를 들어 CORPORATE.SALES라는 테이블에는 "East"와 "West"라는 두 개의 행 파티션이 있을 수 있습니다. 이에 따라 컬럼 조건이 정의됩니다. 여기서, REGION = EAST를 충족하는 행은 한 위치에 복제되고 REGION = WEST를 충족하는 행은 다른 위치에 복제됩니다. 파티션 scheme 이름은 "Sales_by_region"일 수 있습니다.

  • 타겟 테이블에 더 빠르게 게시하기 위해 다중 행 파티션을 사용하여 테이블의 행을 병렬 처리 스트림(병렬 Export-Import-Post 스트림)으로 나눕니다. 예를 들어 크게 업데이트된 타겟 테이블에 대한 복제 흐름을 개선할 수 있습니다. 이 목적으로 컬럼 조건을 사용하는 것은 병렬 Post 프로세스 간에 처리를 균등하게 분할할 수 있는 컬럼이 테이블에 포함된 경우에만 적합합니다.

해시 기반 파티션 scheme 정보

타겟 테이블에 더 빠르게 게시하기 위해 해시 값을 기반으로 행 파티션을 사용하여 테이블의 행을 병렬 처리 스트림(병렬 Export-Import-Post)으로 나눌 수 있습니다. 파티션을 생성하기 위해 컬럼 조건보다 해시 값을 사용하면 WHERE 절에서 테이블 컬럼을 참조할 필요 없이 행이 SharePlex에 의해 자동으로 균등하게 나눠지는 이점이 있습니다. 그러나 컬럼 기반 파티션 scheme와 달리 해시 기반 파티션 scheme에는 SharePlexcompare 또는 repair 명령을 사용할 수 없습니다.

파티셔닝된 복제와 전체 테이블 복제 결합

수평으로 파티셔닝된 복제와 수직으로 파티셔닝된 복제를 결합하여 정보가 배포되는 방식을 최대한 제어할 수 있습니다.

예를 들면 다음과 같습니다.

  • 본사에서는 기본 회사 데이터베이스를 유지 관리합니다.
  • 회사의 4개 현지 사무소는 각각 자체 데이터베이스를 유지 관리합니다.
  • 본사는 수직으로 파티셔닝된 복제를 사용하여 테이블의 일부 컬럼 데이터를 현지 사무소와 공유하지만 중요한 데이터가 포함된 컬럼은 공유하지 않습니다.
  • 테이블의 행은 복제를 위해 4개 그룹(East, West, North, South)으로 수평으로 파티셔닝되므로 각 지역에 적용되는 레코드 변경 사항만 수신됩니다.

수평으로 파티셔닝된 복제는 동일한 테이블에 대한 전체 테이블 복제와 함께 사용할 수 있습니다. 예를 들어 행 그룹을 다른 보고 시스템으로 라우팅하고 모든 행을 백업 시스템으로 라우팅할 수 있습니다.

사용 제한

해시 기반 파티셔닝은 다음을 지원하지 않습니다.

  • comparerepair 명령
  • IOT(Index-organized tables) 및 LOB 또는 LONG을 포함하는 테이블
  • 키 값을 삭제하거나 업데이트한 후 동일한 키 값을 다시 삽입하는 작업. 이로 인해 rowid가 다르기 때문에 고유 제약 조건 위반이 발생할 수 있습니다.
  • 동일한 테이블의 컬럼 기반 파티셔닝

해시 기반 파티셔닝은 행을 다른 파티션으로 마이그레이션하는 작업도 지원하지 않습니다. 이러한 작업의 예는 다음과 같습니다.

  • 새 행 파티션으로 이동하도록 값을 업데이트합니다.
  • 테이블 재조직
  • 테이블 파티션 분할 또는 두 파티션 결합
  • 테이블 가져오기 또는 내보내기
  • MOVE 옵션이 있는 ALTER TABLE
  • SHRINK SPACE 옵션이 있는 ALTER TABLE
  • FLASHBACK TABLE
  • dbms_redefinition을 사용하여 테이블 재정의
  • 데이터가 현재 블록에 적합하도록 행 크기를 변경하는 파티셔닝되지 않은 테이블에 대한 업데이트
  • 파티셔닝되지 않은 테이블에서 행을 삭제한 후 다시 삽입

파티션 scheme 및 행 파티션 정의

add partition 명령을 사용하여 행 파티션을 만들고 이를 파티션 scheme에 할당할 수 있습니다.

컬럼 조건에 따라 행을 분할하려면 다음을 수행합니다.

지정된 파티션 scheme에서 생성할 각 행 파티션에 대해 add partition을 실행합니다. 첫 번째 행 파티션을 생성할 때 SharePlex는 파티션 scheme도 생성합니다.

sp_ctrl> add partition to scheme_name setcondition = column_condition and route = routing_map [and name = name] [and tablename =owner.table] [and description =description]

해시 값에 따라 행을 파티셔닝하려면 다음을 수행합니다.

생성할 해시 파티션 수를 지정하려면 add partition을 한 번 실행합니다.

sp_ctrl> add partition to scheme_name set hash = value and route = value

파티션 명령 구문 추가

참고: add partitiontoScheme_nameset 키워드를 지정하면 다른 모든 구성 요소는 순서에 관계없이 가능합니다.

구성 요소 설명
to scheme_name

toscheme_name에 행 파티션이 추가됨을 나타내는 필수 키워드입니다.

scheme_name은 파티션 scheme의 이름입니다. 파티션 scheme은 사용자가 실행하는 첫 번째 add partition 명령에 의해 생성되며, 파티셔닝할 첫 번째 행 집합도 지정합니다.

수평 파티셔닝을 많이 사용하는 경우 파티션 scheme에 대한 명명 규칙을 설정하는 것이 도움이 될 수 있습니다.

set

행 파티션 정의를 시작하는 필수 키워드입니다.

condition = column_condition

컬럼 조건에 따라 행 파티션을 생성합니다. 조건은 따옴표로 묶어야 합니다. ((region_id = West) and region_id is not null)과 같은 표준 WHERE 조건부 구문을 사용합니다. 자세한 내용은 유효한 컬럼 조건을 생성하는 방법을 참조하십시오.

conditionhash 구성 요소는 상호 배타적입니다.

hash = value

해시 값을 기반으로 행 파티션을 생성합니다. 지정된 값은 파티션 scheme의 행 파티션 수를 결정합니다.

conditionhash 구성 요소는 상호 배타적입니다.

route = routing_map

이 파티션의 경로입니다. 이는 다음 중 하나일 수 있습니다.

컬럼 조건에 따른 파티션:

표준 SharePlex 라우팅 맵을 지정합니다(예: sysB@o.myora, sysB:q1@o.myora 또는 sysB@o.myora+sysC@o.myora(복합 라우팅 맵)).

타겟이 JMS, Kafka 또는 파일인 경우 타겟을 x.jms, x.kafka 또는 x.file로 지정해야 합니다(예: sysA:hpq1@x.kafka).

이름이 다른 여러 타겟 테이블로 파티션을 라우팅하려면 다음을 수행합니다.

  • 각각의 다른 타겟 이름에 대해 별도의 add partition 명령을 실행합니다. 이름을 지정하려면 tablename 옵션을 사용합니다.
  • 구성 파일에서 이러한 타겟 테이블 중 하나를 이 파티션 scheme을 사용하는 항목의 타겟 테이블로 지정합니다. SharePlex는 구성이 활성화되면 다른 이름을 감지합니다.
  • SP_ORD_FIRST_FIND 매개변수를 0으로 설정하여 SharePlex가 파티션 scheme의 모든 컬럼 조건을 확인하도록 합니다. 기본적으로 SharePlex는 주어진 행 변경 사항이 파티션 scheme에서 하나의 컬럼 조건만 충족한다고 가정합니다. 자세한 내용은 SharePlex참조 안내서를 참조하십시오.

해시 기반 파티션:

다음 형식을 사용하여 SharePlex에 각 파티션에 대한 명명된 Post 큐를 생성하도록 지시합니다.

host:basename|#{o.SID | r.database}

여기서,

  • host는 타겟 시스템의 이름입니다.
  • basename은 모든 큐에 할당된 기본 이름입니다.
  • |#hash로 설정된 값에 1부터 시작해 기본 이름에 정수를 추가하여 큐에 순서대로 번호를 매기도록 SharePlex에 지시합니다.
  • o.Oracle 타겟의 경우 SID, Open Target 타겟의 경우 r.database입니다.
name = name

(권장) 이 파티션의 짧은 이름입니다. 이 옵션은 컬럼 조건을 기반으로 하는 파티션에만 유용합니다. 짧은 이름을 사용하면 나중에 파티션을 수정하거나 삭제해야 하는 경우 긴 컬럼 조건을 입력할 필요가 없습니다.

tablename = owner.table

(선택 사항) 타겟 테이블이 여러 개 있고 하나 이상의 이름이 다른 경우 이 옵션을 사용합니다. 각 이름에 대해 별도의 add partition 명령을 실행합니다.

테이블 이름은 정규화되어야 합니다. 대소문자를 구분하는 경우 이름을 따옴표로 묶어 지정해야 합니다.

예:

add partition to scheme1 set name = p1 and condition = "C1 > 200" and route = sysb:p1@o.orasid and tablename = myschema.mytable

description = description (선택 사항) 이 파티션에 대한 설명입니다.
컬럼 조건에 따른 파티션

여러 Post 큐를 통해 다양한 행 집합 라우팅:

sp_ctrl> add partition to scheme1 set name = q1 and condition = "C1 >= 200" and route = sysb:q1@o.orasid

sp_ctrl> add partition to scheme1 set name = q2 and condition = "C1 < 200" and route = sysb:q2@o.orasid

여러 행 집합을 소스의 다양한 타겟 시스템과 다양한 테이블 이름으로 라우팅합니다.

sp_ctrl> add partition to scheme1 set name = east and condition = "area = east" and route = sys1e@o.orasid and tablename = ora1.targ

sp_ctrl> add partition to scheme1 set name = west and condition = "area = west" and route = sys2w@o.orasid and tablename = ora2.targ

해시에 따른 파티션

행을 4개의 파티션으로 나누고 각 파티션은 서로 다른 Post 큐를 통해 처리됩니다.

sp_ctrl> add partition to scheme1 set hash = 4 and route = sysb:hash|#@o.ora112

유효한 컬럼 조건을 생성하는 방법

다음은 컬럼 조건 생성에 대한 가이드라인입니다. 이러한 가이드라인은 해시 값으로 생성된 행 파티션에는 적용되지 않습니다.

적절한 컬럼 선택

컬럼 조건의 기반이 되는 컬럼 유형은 데이터 소스에 따라 다릅니다.

PRIMARY 또는 UNIQUE 키 컬럼과 같이 값이 변경되지 않는 컬럼에 대한 기본 컬럼 조건입니다. 목표는 파티션 이동을 방지하는 것입니다. 여기서, 파티션의 조건부 컬럼을 변경하면 기본 데이터가 다른 파티션의 조건을 충족하거나 충족하지 않을 수 있습니다.

파티션 이동 사례 1: 새 값이 더 이상 컬럼 조건을 충족하지 않도록 컬럼 값이 업데이트됩니다.

  • SharePlex는 작업을 수행하지만 해당 행에 대한 향후 작업은 복제되지 않습니다. 이유: 행이 더 이상 컬럼 조건을 충족하지 않습니다.
  • 이제 기존 파티션의 소스 및 타겟 테이블이 동기화되지 않았지만 Post는 오류를 반환하지 않습니다.

파티션 이동 사례 2: 하나의 컬럼 조건을 충족하는 행이 다른 조건을 충족하도록 업데이트됩니다.

  • 일치하는 타겟 행을 Post가 찾을 수 없습니다. 이유: 컬럼 조건을 충족하지 않아 기존 변경 사항이 복제되지 않았습니다.
  • Post가 동기화 중단 오류를 반환합니다.

다음 방법을 사용하여 컬럼 조건 값 변경으로 인한 동기화 중단 행을 복원할 수 있습니다.

  • 동기화 중단 행을 복원하려면 compare 명령을 사용합니다. 이 명령에 대한 자세한 내용은 SharePlex참조 안내서를 참조하십시오.

또한 구성 파일을 활성화하기 전에 소스에 다음과 같은 매개변수를 설정하여 데이터가 제대로 복제되는지 확인할 수 있습니다.

  • SP_ORD_HP_IN_SYNC 매개변수를 값 1로 설정합니다. 이 매개변수가 활성화되면 UPDATE가 컬럼(조건부 컬럼) 값을 변경하여 더 이상 올바른 조건을 충족하지 않는 행이 되는 경우 SharePlex가 행을 수정합니다. 이 매개변수를 활성화하면 수평으로 파티셔닝된 복제를 위해 구성된 테이블 수에 따라 성능이 약간 저하됩니다. 자세한 내용과 이 매개변수로 수정된 조건 목록은 SharePlex참조 안내서를 참조하십시오.

참고: 컬럼 조건에 따라 키가 아닌 컬럼을 사용하고 수평으로 파티셔닝된 복제를 활성화하여 성능이 저하되는 경우, 해당 컬럼에 대한 로그 그룹을 추가합니다.

지원되는 데이터 유형 사용

SharePlex는 컬럼 조건에서 다음과 같은 데이터 유형을 지원합니다.

  • NUMBER
  • DATE
  • CHAR
  • VARCHAR
  • VARCHAR2
  • LONG VARCHAR
참고:
  • 날짜의 경우 SharePlex는 MMDDSYYYYHH24MISS를 사용합니다. 예를 들면 다음과 같습니다.

    hiredate<‘1111 2011000000’

  • 수평으로 파티셔닝된 복제는 다음을 지원하지 않습니다.

    • 이 섹션에 나열된 것과 다른 데이터 유형. 또한 LOB와 같은 대규모 유형과 VARRAY 및 추상 데이터 유형과 같은 객체 유형도 제외됩니다.
    • Oracle TO_DATE 함수
    • 100k보다 큰 LONG 컬럼에 대한 UPDATE 또는 INSERT
    • 시퀀스
    • Oracle 파티션의 TRUNCATE

표준 조건부 구문 사용

다음 목록은 컬럼 조건에서 SharePlex가 지원하는 조건부 구문을 보여줍니다. 여기서,

  • value는 문자열이거나 숫자일 수 있습니다. 문자열과 날짜를 작은따옴표('west')로 묶습니다. 숫자에는 따옴표를 사용하지 않습니다.
  • column은 수평으로 파티셔닝된 복제를 사용하도록 구성 중인 테이블의 컬럼 이름입니다.
column = value
not (column = value)
column > value
value > column
column < value
column <= value
column >= value
column <> value
column != value
column like value
column between value1 and value2
not (column between value1 and value2 )
column is null
column is not null

조건은 괄호와 AND, ORNOT 논리 연결을 사용하여 중첩된 표현식으로 결합할 수 있습니다.

컬럼 조건 예
not (col1 = 5)
(col2 = 5) and not (col3 = 6)
((col1 is not null) and (col2 = 5))

추가 가이드라인

  • NULL은 not (department_id = 90)과 같은 경우 SharePlex에 의해 복제됩니다. department_id가 NULL인 경우 복제됩니다. NULL이 포함된 레코드 복제를 방지하려면 column is not null 구문을 조건의 일부로 포함합니다(예: not (department_id = 90) and department_id is not null).
  • 연산자 우선순위를 표시하기 위해 괄호를 사용하지 않는 경우 SharePlex는 SQL과 동일한 순서로 연산자 우선순위를 지원합니다. 예를 들어 조건 not x and y(not x) and y와 동일한 방식으로 동작합니다. 조건 x and y or z(x and y) or z와 동일하게 동작합니다. 조건에 괄호가 포함된 경우 명시적인 우선순위를 따릅니다.
  • 조건 컬럼이 VARCHAR 컬럼이고 파티션을 정의하는 데 사용된 값이 문자열 리터럴인 경우 다음 예와 같이 전체 조건을 큰따옴표로 묶어야 합니다. add partition toschemeset route=routeand condition="C2 = 'Fred'"
  • 컬럼 이름을 따옴표로 묶어야 하는 경우 다음 예와 같이 전체 조건을 따옴표로 묶어야 합니다. add partition toschemeset route=routeand condition="\"c2\" > 0"
  • 다음을 수행하지 마십시오.

    • 컬럼 조건에 다른 테이블에 대한 참조를 포함함
    • 정의된 최대 저장 공간인 1024바이트를 초과함
  • 파티션 scheme을 참조하는 구성을 활성화하는 동안 SharePlex는 해당 scheme의 컬럼 조건에서 구문을 확인합니다. 구문이 올바르지 않으면 활성화가 실패합니다. SharePlex는 오류가 발생한 위치를 나타내는 이벤트 로그에 오류를 인쇄합니다.

구성 파일에 파티션 scheme 지정

전체 테이블 복제가 있는 테이블과 파티셔닝된 복제를 사용할 테이블을 포함하여 지정된 데이터 소스에서 복제할 모든 데이터에 대해 하나의 구성 파일을 사용합니다. 구성 파일을 생성하는 방법에 대한 자세한 내용은 데이터 복제를 위해 SharePlex 구성을 참조하십시오. 수평으로 파티셔닝된 복제에 대한 항목을 구성하려면 다음 구문을 사용합니다.

Datasource:o.SID
src_owner.table tgt_owner.table

!partition_scheme

!   routing_map
구성 요소 설명

o.database

데이터 소스 지정입니다. Oracle 소스에는 r. 표기법을 사용합니다. 데이터베이스의 경우 ORACLE_SID을 지정합니다.
src_owner.tabletgt_owner.table 각각 소스 및 타겟 테이블의 사양입니다.
!partition_scheme

지정된 소스 및 타겟 테이블에 사용할 파티션 scheme의 이름입니다. ! 기호가 필요합니다. 이름은 대소문자를 구분합니다. 여러 파티션 scheme의 복합 라우팅은 지원되지 않습니다(예: !schemeA+schemeB).

동일한 소스 테이블에 사용할 각 파티션 scheme에 대해 별도의 항목을 만듭니다. 를 참조하십시오.

! routing_map

자리 표시자 라우팅 맵입니다. 이 맵은 파티션 scheme에 사용한 경로가 구성 파일의 어딘가에 나열되지 않은 경우에만 필요합니다. SharePlex는 파티션 scheme에 나와 있더라도 모든 경로가 구성 파일에 있어야 합니다.

참고:
  • 이 옵션은 컬럼 조건을 기반으로 하는 파티션에만 유효합니다.
  • 명명된 큐를 사용하는 경우 이 옵션을 사용하여 각 큐 경로를 나열합니다.
  • 파티션 scheme을 다른 타겟으로 라우팅하는 경우 이 옵션을 사용하여 각 타겟을 나열합니다. 모든 타겟 테이블의 이름이 동일한 경우 복합 라우팅 맵을 사용할 수 있습니다.

를 참조하십시오.

파티션 scheme을 지정하려면 다음을 수행합니다.
Datasource: o.mydb
scott.emp scott.emp_2 !partition_emp
동일한 소스 테이블에 대해 여러 파티션 scheme을 지정하려면 다음을 수행합니다.
Datasource: o.mydb
scott.emp scott.emp_2 !partition_schemeA
scott.emp scott.emp_3 !partition_schemeB
자리 표시자 라우팅 맵을 지정하려면 다음을 수행합니다.
! targsys1
! targsys2@o.ora2+targsys3@o.ora3

이 자리 표시자는 컬럼 조건을 기반으로 하는 파티션에만 필요합니다.

파티션 및 scheme 보기

view partitions 명령을 사용하면 하나의 파티션 scheme의 행 파티션을 보거나 수평으로 파티셔닝된 복제 구성의 모든 파티션 scheme을 볼 수 있습니다.

행 파티션을 보려면 다음을 수행합니다.

  1. 소스 시스템에서 sp_ctrl을 실행합니다.
  2. 모든 파티션을 보려고 하거나 특정 파티션 scheme의 파티션만 보려는지 여부에 따라 두 옵션 중 하나를 사용하여 다음 명령을 실행합니다.

    sp_ctrl> view partitions for {scheme_name | all}

다음 예에서는 해시 기반 파티션 scheme과 컬럼 기반 파티션 scheme을 보여줍니다.

sp_ctrl> view partitions all

Scheme        Name           Route                            Hash     Condition
-----------   -------------  ------------------------------   ------   ---------------
HASH4         hash           sys02:hash|#@o.ora112            4        ROWID
TEST_CT       highvalues     sys02:highvalues@o.ora112                 sales>=10000
TEST_CT       lowvalues      sys02:lowvalues@o.ora112                  sales<10000
Hash4 해시 기반 파티션 scheme
  • Scheme 컬럼은 HASH4라는 파티션 scheme을 보여줍니다.
  • Name 컬럼은 파티션 정의의 이름이 hash임을 보여줍니다.
  • Route 컬럼은 파티션이 자동으로 생성되었으며 타겟이 o.ora112임을 보여줍니다.
  • Hash 컬럼의 값은 4입니다. 이는 4개의 파티션이 있는 해시 기반 파티션 scheme임을 나타냅니다.
  • Condition 컬럼은 사용 중인 해시 알고리즘 유형이 블록이 아닌 rowid의 기본값임을 보여줍니다.
TEST_CT 컬럼 기반 파티션 scheme
  • Scheme 컬럼은 TEST_CT라는 파티션 scheme을 보여줍니다. 이 이름에는 두 개의 항목이 있으며 이는 두 개의 파티션이 포함되어 있음을 나타냅니다.
  • 이름 컬럼에는 각 파티션의 이름이 표시되며, 기본적으로 Post 큐의 이름이거나 add partition 명령의 Name 옵션으로 설정된 값입니다.
  • Route 컬럼은 Post 큐의 이름이 파티션 이름을 기반으로 하며 타겟이 o.ora112임을 보여줍니다.
  • 컬럼 기반 파티션 scheme의 경우 Hash 컬럼이 비어 있습니다.
  • 조건 컬럼에는 행 파티션을 생성하는 컬럼 조건이 표시됩니다.

파티션 Post 큐를 보려면 다음을 수행합니다.

타겟의 qstatus 명령은 수평으로 파티셔닝된 복제와 관련된 Post 큐를 표시합니다.

TEST_CT 컬럼 기반 파티션 scheme에 대한 큐
sp_ctrl sys02> qstatus
 
Queues Statistics for sys02
  
  Name:  highvalues (o.ora11-o.ora112) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)
 
  Name:  lowvalues (o.ora11-o.ora112) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)
HASH4 해시 기반 파티션 scheme에 대한 큐:
Queues Statistics for sys02
  
  Name:  hash1 (o.ora11-o.ora112) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)
 
  Name:  hash2 (o.ora11-o.ora112) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)

 Name:  hash3 (o.ora11-o.ora112) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)

 Name:  hash4 (o.ora11-o.ora112) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)

파티션 scheme 변경

파티션 scheme을 관리하는 데 다음 명령이나 매개변수를 사용할 수 있습니다. 자세한 내용은 SharePlex 참조 안내서을 참조하십시오.

작업

명령/매개변수

설명

파티션 수정

modify partition 명령

행 파티션 정의의 속성을 수정합니다.

파티션 scheme 제거

drop partition scheme 명령

파티션 scheme과 scheme 내에 있는 모든 행 파티션을 제거합니다.

해시 알고리즘 변경

SP_OCF_HASH_BY_BLOCK

해시 알고리즘을 기본값인 rowid 기반에서 블록 기반으로 변경합니다. 블록 기반 알고리즘을 활성화하려면 1로 설정합니다.

PostgeSQL 및 PostgreSQL Database as a Service에 대한 수평으로 파티셔닝된 복제 개요

지원되는 타겟

PostgreSQL, Oracle, SQL Server 및 Kafka

참고:

  • PostgreSQL-SQL Server 복제는 수평으로 파티셔닝된 데이터에 대해 BOOLEAN, TIME, TIME WITH TIME ZONE 및 BYTEA 데이터 유형을 지원하지 않습니다.

  • PostgreSQL-PostgreSQL 복제는 수평으로 파티셔닝된 데이터에 대해 JSON 및 JSONB 데이터 유형을 지원하지 않습니다.

테이블에 대해 수평으로 파티셔닝된 복제를 구성하는 단계는 다음과 같습니다.

  1. 행 파티션을 정의하고 이를 파티션 scheme에 연결합니다.

    • 행 파티션은 그룹으로 복제할 소스 테이블 행의 하위 집합입니다.

    • 파티션 scheme은 행 파티션의 논리적 컨테이너입니다.

  2. 복제에 파티션을 포함하려면 SharePlex 구성 파일에 파티션 scheme의 이름을 지정합니다.

파티션 유형

  • 컬럼: 컬럼 기반 파티션 scheme에는 컬럼 조건으로 정의된 행 파티션이 포함됩니다. 컬럼 조건은 테이블 행의 하위 집합을 정의하는 WHERE 절입니다.
컬럼 기반 파티션 scheme 정보

다음과 같은 목적으로 컬럼 조건에 따라 행 파티션을 사용할 수 있습니다.

  • 단일 행 파티션을 사용하여 테이블 행의 하위 집합만 복제합니다. 예를 들어 YEAR 컬럼의 값이 2014보다 큰 행만 복제할 수 있습니다. 이 경우 파티션 scheme의 이름은 "Since2014" 또는 "Recent"일 수 있습니다.
  • 여러 행 파티션을 사용하여 테이블의 행을 나누어 각 행 집합이 다른 타겟에 복제되도록 합니다. 예를 들어 CORPORATE.SALES라는 테이블에는 "East"와 "West"라는 두 개의 행 파티션이 있을 수 있습니다. 이에 따라 컬럼 조건이 정의됩니다. 여기서, REGION = EAST를 충족하는 행은 한 위치에 복제되고 REGION = WEST를 충족하는 행은 다른 위치에 복제됩니다. 파티션 scheme 이름은 "Sales_by_region"일 수 있습니다.

  • 타겟 테이블에 더 빠르게 게시하기 위해 다중 행 파티션을 사용하여 테이블의 행을 병렬 처리 스트림(병렬 Export-Import-Post 스트림)으로 나눕니다. 예를 들어 크게 업데이트된 타겟 테이블에 대한 복제 흐름을 개선할 수 있습니다. 이 목적으로 컬럼 조건을 사용하는 것은 병렬 Post 프로세스 간에 처리를 균등하게 분할할 수 있는 컬럼(기본 또는 null이 아닌 유니크 키를 사용하는 것을 권장)이 테이블에 포함된 경우에만 적합합니다.

파티셔닝된 복제와 전체 테이블 복제 결합

수평으로 파티셔닝된 복제와 수직으로 파티셔닝된 복제를 결합하여 정보가 배포되는 방식을 최대한 제어할 수 있습니다.

예를 들면 다음과 같습니다.

  • 본사에서는 기본 회사 데이터베이스를 유지 관리합니다.
  • 회사의 4개 현지 사무소는 각각 자체 데이터베이스를 유지 관리합니다.
  • 본사는 수직으로 파티셔닝된 복제를 사용하여 테이블의 일부 컬럼 데이터를 현지 사무소와 공유하지만 중요한 데이터가 포함된 컬럼은 공유하지 않습니다.
  • 테이블의 행은 복제를 위해 4개 그룹(East, West, North, South)으로 수평으로 파티셔닝되므로 각 지역에 적용되는 레코드 변경 사항만 수신됩니다.

수평으로 파티셔닝된 복제는 동일한 테이블에 대한 전체 테이블 복제와 함께 사용할 수 있습니다. 예를 들어 행 그룹을 다른 보고 시스템으로 라우팅하고 모든 행을 백업 시스템으로 라우팅할 수 있습니다.

파티션 scheme 및 행 파티션 정의

add partition 명령을 사용하여 행 파티션을 만들고 이를 파티션 scheme에 할당할 수 있습니다.

컬럼 조건에 따라 행을 파티셔닝하려면 다음을 수행합니다.

지정된 파티션 scheme에서 생성할 각 행 파티션에 대해 add partition을 실행합니다. 첫 번째 행 파티션을 생성할 때 SharePlex는 파티션 scheme도 생성합니다.

sp_ctrl> add partition to scheme_name setcondition = column_condition and route = routing_map [and name = name] [and tablename =schema.table] [and description =description]

파티션 명령 구문 추가

참고: add partitiontoScheme_nameset 키워드를 지정하면 다른 모든 구성 요소는 순서에 관계없이 가능합니다.

구성 요소 설명
to scheme_name

toscheme_name에 행 파티션이 추가됨을 나타내는 필수 키워드입니다.

scheme_name은 파티션 scheme의 이름입니다. 파티션 scheme은 사용자가 실행하는 첫 번째 add partition 명령에 의해 생성되며, 파티셔닝할 첫 번째 행 집합도 지정합니다.

수평 파티셔닝을 많이 사용하는 경우 파티션 scheme에 대한 명명 규칙을 설정하는 것이 도움이 될 수 있습니다.

set

행 파티션 정의를 시작하는 필수 키워드입니다.

condition = column_condition

컬럼 조건에 따라 행 파티션을 생성합니다. 조건은 따옴표로 묶어야 합니다. ((region_id = West) and region_id is not null)과 같은 표준 WHERE 조건부 구문을 사용합니다. 자세한 내용은 유효한 컬럼 조건을 생성하는 방법을 참조하십시오.

route = routing_map

이 파티션의 경로입니다. 이는 다음 중 하나일 수 있습니다.

컬럼 조건에 따른 파티션:

표준 SharePlex 라우팅 맵을 지정합니다(예: sysB@r.dbname, sysB:q1@r.dbname 또는 sysB@r.dbname+sysC@r.dbname(복합 라우팅 맵)).

이름이 다른 여러 타겟 테이블로 파티션을 라우팅하려면 다음을 수행합니다.

  • 각각의 다른 타겟 이름에 대해 별도의 add partition 명령을 실행합니다. 이름을 지정하려면 tablename 옵션을 사용합니다.
  • 구성 파일에서 이러한 타겟 테이블 중 하나를 이 파티션 scheme을 사용하는 항목의 타겟 테이블로 지정합니다. SharePlex는 구성이 활성화되면 다른 이름을 감지합니다.
  • SP_ORD_FIRST_FIND 매개변수를 0으로 설정하여 SharePlex가 파티션 scheme의 모든 컬럼 조건을 확인하도록 합니다. 기본적으로 SharePlex는 주어진 행 변경 사항이 파티션 scheme에서 하나의 컬럼 조건만 충족한다고 가정합니다. 자세한 내용은 SharePlex참조 안내서를 참조하십시오.
name = name

(권장) 이 파티션의 짧은 이름입니다. 이 옵션은 컬럼 조건을 기반으로 하는 파티션에만 유용합니다. 짧은 이름을 사용하면 나중에 파티션을 수정하거나 삭제해야 하는 경우 긴 컬럼 조건을 입력할 필요가 없습니다.

tablename = schemaname.table

(선택 사항) 타겟 테이블이 여러 개 있고 하나 이상의 이름이 다른 경우 이 옵션을 사용합니다. 각 이름에 대해 별도의 add partition 명령을 실행합니다.

테이블 이름은 정규화되어야 합니다. 대소문자를 구분하는 경우 이름을 따옴표로 묶어 지정해야 합니다.

예:

add partition to scheme1 set name = p1 and condition = "C1 > 200" and route = sysb:p1@r.dbname and tablename = myschema.mytable

description = description (선택 사항) 이 파티션에 대한 설명입니다.
컬럼 조건에 따른 파티션

여러 Post 큐를 통해 다양한 행 집합 라우팅:

sp_ctrl> add partition to scheme1 set name = q1 and condition = "C1 >= 200" and route = sysb:q1@r.dbname

sp_ctrl> add partition to scheme1 set name = q2 and condition = "C1 < 200" and route = sysb:q2@r.dbname

여러 행 집합을 소스의 다양한 타겟 시스템과 다양한 테이블 이름으로 라우팅합니다.

sp_ctrl> add partition to scheme1 set name = east and condition = "area = east" and route = sys1e@r.dbname and tablename = schema1.targ

sp_ctrl> add partition to scheme1 set name = west and condition = "area = west" and route = sys2w@r.dbname and tablename = schema2.targ

유효한 컬럼 조건을 생성하는 방법

다음은 컬럼 조건 생성에 대한 가이드라인입니다.

적절한 컬럼 선택

컬럼 조건의 기반이 되는 컬럼 유형은 데이터 소스에 따라 다릅니다.

PRIMARY 또는 UNIQUE 키 컬럼과 같이 값이 변경되지 않는 컬럼에 대한 기본 컬럼 조건입니다. 목표는 파티션 이동을 방지하는 것입니다. 여기서, 파티션의 조건부 컬럼을 변경하면 기본 데이터가 다른 파티션의 조건을 충족하거나 충족하지 않을 수 있습니다.

파티션 이동 사례 1: 새 값이 더 이상 컬럼 조건을 충족하지 않도록 컬럼 값이 업데이트됩니다.

  • SharePlex는 작업을 수행하지만 해당 행에 대한 향후 작업은 복제되지 않습니다. 이유: 행이 더 이상 컬럼 조건을 충족하지 않습니다.
  • 이제 기존 파티션의 소스 및 타겟 테이블이 동기화되지 않았지만 Post는 오류를 반환하지 않습니다.

파티션 이동 사례 2: 하나의 컬럼 조건을 충족하는 행이 다른 조건을 충족하도록 업데이트됩니다.

  • 일치하는 타겟 행을 Post가 찾을 수 없습니다. 이유: 컬럼 조건을 충족하지 않아 기존 변경 사항이 복제되지 않았습니다.
  • Post가 동기화 중단 오류를 반환합니다.

또한 구성 파일을 활성화하기 전에 소스에 다음과 같은 매개변수를 설정하여 데이터가 제대로 복제되는지 확인할 수 있습니다.

  • SP_ORD_HP_IN_SYNC 매개변수를 값 1로 설정합니다. 이 매개변수가 활성화되면 UPDATE가 컬럼(조건부 컬럼) 값을 변경하여 더 이상 올바른 조건을 충족하지 않는 행이 되는 경우 SharePlex가 행을 수정합니다. 이 매개변수를 활성화하면 수평으로 파티셔닝된 복제를 위해 구성된 테이블 수에 따라 성능이 약간 저하됩니다. 자세한 내용과 이 매개변수로 수정된 조건 목록은 SharePlex참조 안내서를 참조하십시오.

참고: 컬럼 조건에 따라 키가 아닌 컬럼을 사용하고 수평으로 파티셔닝된 복제를 활성화하여 성능이 저하되는 경우, 해당 컬럼에 대한 로그 그룹을 추가합니다. PostgreSQL에서는 복제본 ID를 FULL로 설정하여 이 매개변수를 사용할 수 있습니다.

지원되는 데이터 유형 사용

SharePlex는 컬럼 조건에서 다음과 같은 데이터 유형을 지원합니다.

  • SMALLINT

  • INT

  • BIGINT

  • NUMERIC

  • CHAR (<=2000 in length)

  • VARCHAR (1<=4000 in length)

  • DATE

  • BOOLEAN (condition = "column_name =1" or condition = "column_name = 0")

참고:
  • 날짜의 경우 SharePlex는 MMDDSYYYYHH24MISS를 사용합니다. 예를 들면 다음과 같습니다.

    hiredate<‘1111 2011000000’

  • 수평으로 파티셔닝된 복제는 다음을 지원하지 않습니다.

    • 이 섹션에 나열된 것과 다른 데이터 유형.
    • TEXT, BYTEA, CHAR > 2000 length, VARCHAR > 4000 length, VARCHAR without length와 같은 데이터 유형은 컬럼 조건에서 지원되지 않습니다.

    • 100k(업데이트할 데이터 길이 또는 컬럼에 삽입할 데이터 길이)보다 큰 LONG 컬럼에 대한 UPDATE 또는 INSERT

표준 조건부 구문 사용

다음 목록은 컬럼 조건에서 SharePlex가 지원하는 조건부 구문을 보여줍니다. 여기서,

  • value는 문자열이거나 숫자일 수 있습니다. 문자열과 날짜를 작은따옴표('west')로 묶습니다. 숫자에는 따옴표를 사용하지 않습니다.
  • column은 수평으로 파티셔닝된 복제를 사용하도록 구성 중인 테이블의 컬럼 이름입니다.
column = value
not (column = value)
column > value
value > column
column < value
column <= value
column >= value
column <> value
column != value
column like value
column between value1 and value2
not (column between value1 and value2 )
column is null
column is not null

조건은 괄호와 AND, ORNOT 논리 연결을 사용하여 중첩된 표현식으로 결합할 수 있습니다.

컬럼 조건 예
not (col1 = 5)
(col2 = 5) and not (col3 = 6)
((col1 is not null) and (col2 = 5))
추가 가이드라인
  • NULL은 not (department_id = 90)과 같은 경우 SharePlex에 의해 복제됩니다. department_id가 NULL인 경우 복제됩니다. NULL이 포함된 레코드 복제를 방지하려면 column is not null 구문을 조건의 일부로 포함합니다(예: not (department_id = 90) and department_id is not null).
  • 연산자 우선순위를 표시하기 위해 괄호를 사용하지 않는 경우 SharePlex는 SQL과 동일한 순서로 연산자 우선순위를 지원합니다. 예를 들어 조건 not x and y(not x) and y와 동일한 방식으로 동작합니다. 조건 x and y or z(x and y) or z와 동일하게 동작합니다. 조건에 괄호가 포함된 경우 명시적인 우선순위를 따릅니다.
  • 조건 컬럼이 VARCHAR 컬럼이고 파티션을 정의하는 데 사용된 값이 문자열 리터럴인 경우 다음 예와 같이 전체 조건을 큰따옴표로 묶어야 합니다. add partition toschemeset route=routeand condition="C2 = 'Fred'"
  • 컬럼 이름을 따옴표로 묶어야 하는 경우 다음 예와 같이 전체 조건을 따옴표로 묶어야 합니다. add partition toschemeset route=routeand condition="\"c2\" > 0"
  • 다음을 수행하지 마십시오.

    • 컬럼 조건에 다른 테이블에 대한 참조를 포함함
    • 정의된 최대 저장 공간인 1024바이트를 초과함
  • 파티션 scheme을 참조하는 구성을 활성화하는 동안 SharePlex는 해당 scheme의 컬럼 조건에서 구문을 확인합니다. 구문이 올바르지 않으면 활성화가 실패합니다. SharePlex는 오류가 발생한 위치를 나타내는 이벤트 로그에 오류를 인쇄합니다.

구성 파일에 파티션 scheme 지정

전체 테이블 복제가 있는 테이블과 파티셔닝된 복제를 사용할 테이블을 포함하여 지정된 데이터 소스에서 복제할 모든 데이터에 대해 하나의 구성 파일을 사용합니다. 구성 파일을 생성하는 방법에 대한 자세한 내용은 데이터 복제를 위해 SharePlex 구성을 참조하십시오. 수평으로 파티셔닝된 복제에 대한 항목을 구성하려면 다음 구문을 사용합니다.

Datasource:r.dbname
srcschemaname.table targetschemaname.table

!partition_scheme

!   routing_map

 

구성 요소 설명

r.dbname

데이터 소스 지정입니다. PostgreSQL 소스에 r. 표기법을 사용합니다.
src_schema.tabletgt_schema.table 각각 소스 및 타겟 테이블의 사양입니다.
!partition_scheme

지정된 소스 및 타겟 테이블에 사용할 파티션 scheme의 이름입니다. ! 기호가 필요합니다. 이름은 대소문자를 구분합니다. 여러 파티션 scheme의 복합 라우팅은 지원되지 않습니다(예: !schemeA+schemeB).

동일한 소스 테이블에 사용할 각 파티션 scheme에 대해 별도의 항목을 만듭니다. 를 참조하십시오.

! routing_map

자리 표시자 라우팅 맵입니다. 이 맵은 파티션 scheme에 사용한 경로가 구성 파일의 어딘가에 나열되지 않은 경우에만 필요합니다. SharePlex는 파티션 scheme에 나와 있더라도 모든 경로가 구성 파일에 있어야 합니다.

참고:
  • 이 옵션은 컬럼 조건을 기반으로 하는 파티션에만 유효합니다.
  • 명명된 큐를 사용하는 경우 이 옵션을 사용하여 각 큐 경로를 나열합니다.
  • 파티션 scheme을 다른 타겟으로 라우팅하는 경우 이 옵션을 사용하여 각 타겟을 나열합니다. 모든 타겟 테이블의 이름이 동일한 경우 복합 라우팅 맵을 사용할 수 있습니다.

파티션 scheme을 지정하려면 다음을 수행합니다.

Datasource: r.mydb
scott.emp scott.emp_2 !partition_emp

동일한 소스 테이블에 대해 여러 파티션 scheme을 지정하려면 다음을 수행합니다.

Datasource: r.mydb
scott.emp scott.emp_2 !partition_schemeA
scott.emp scott.emp_3 !partition_schemeB

자리 표시자 라우팅 맵을 지정하려면 다음을 수행합니다.

! targsys1
! targsys2@r.dbname2+targsys3@r.dbname3

이 자리 표시자는 컬럼 조건을 기반으로 하는 파티션에만 필요합니다.

파티션 및 scheme 보기

view partitions 명령을 사용하면 하나의 파티션 scheme의 행 파티션을 보거나 수평으로 파티셔닝된 복제 구성의 모든 파티션 scheme을 볼 수 있습니다.

행 파티션을 보려면 다음을 수행합니다.

  1. 소스 시스템에서 sp_ctrl을 실행합니다.
  2. 모든 파티션을 보려고 하거나 특정 파티션 scheme의 파티션만 보려는지 여부에 따라 두 옵션 중 하나를 사용하여 다음 명령을 실행합니다.

    sp_ctrl>view partitions for {scheme_name | all}

다음 예에서는 컬럼 기반 파티션 scheme을 보여줍니다.

sp_ctrl> view partitions all

scheme Name Route Tablename Condition
product lessQuantity 10.250.40.27@r.testdb splex.prod_1 id between 1 and 100
product moreQuantity 10.250.40.27@r.testdb splex.prod_2 id between 101 and 200
product largeQuantity 10.250.40.27@r.testdb splex.prod_3 id between 201 and 300
sales_by_region east 10.250.40.27@r.testdb splex.sales_dst1 ((region = 'East') and region is not null)
sales_by_region west 10.250.40.27@r.testdb splex.sales_dst2 ((region = 'west') and region is not null)
city_scheme Pune 10.250.40.27:pune_queue@r.testdb splex.student_target1 ((stud_name = 'Pune') and stud_name is not null)
city_scheme Mumbai 10.250.40.24:mumbai_queue@r.testdb splex.student_target2 ((stud_name = 'Mumbai') and stud_name is not null)

city_scheme column-based partition scheme

  • scheme 컬럼에는 city_scheme이라는 파티션 scheme이 표시됩니다. 이 이름에는 두 개의 항목이 있으며 이는 두 개의 파티션이 포함되어 있음을 나타냅니다.
  • 이름 컬럼에는 각 파티션의 이름이 표시되며, 기본적으로 Post 큐의 이름이거나 add partition 명령의 Name 옵션으로 설정된 값입니다.
  • 경로 컬럼은 Post 큐의 이름이 파티션 이름을 기반으로 하며 타겟이 r.testdb임을 보여줍니다.
  • 조건 컬럼에는 행 파티션을 생성하는 컬럼 조건이 표시됩니다.

파티션 Post 큐를 보려면 다음을 수행합니다.

타겟의 qstatus 명령은 수평으로 파티셔닝된 복제와 관련된 Post 큐를 표시합니다.

city_scheme 컬럼 기반 파티션 scheme의 큐
sp_ctrl (pslinuxpgsp11:2200)> qstatus
 
Queues Statistics for pslinuxpgsp11 
  
  Name:  pune_queue (r.testdb-r.testdb) (Post queue)
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)
sp_ctrl (pslinuxpgsp08:2200)> qstatus
Queues Statistics for pslinuxpgsp08
 
  Name:  mumbai_queue (r.testdb-r.testdb) (Post queue) 
    Number of messages:          0 (Age         0 min; Size          1 mb)
    Backlog (messages):          0 (Age         0 min)

파티션 scheme 변경

파티션 scheme을 관리하는 데 다음 명령이나 매개변수를 사용할 수 있습니다. 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

작업

명령/매개변수

설명

파티션 수정

modify partition 명령

행 파티션 정의의 속성을 수정합니다.

파티션 scheme 제거

drop partition scheme 명령

파티션 scheme과 scheme 내에 있는 모든 행 파티션을 제거합니다.

수직으로 파티셔닝된 복제 구성

수직으로 파티셔닝된 복제를 사용하여 테이블 컬럼의 하위 집합을 복제합니다. 예를 들어 다이어그램에 표시된 것처럼 C1, C2, C3, C4에 대한 데이터 변경 사항을 복제할 수 있지만 C5 및 C6에 대한 변경 사항은 복제할 수 없습니다.

지원되는 소스 및 타겟

  • PostgreSQL에서 PostgreSQL, Oracle, SQL Server 및 Kafka로

  • Oracle에서 모든 타겟으로

  • PGDB as a Service에서 PGDB as a Service로

  • PGDB as a Service에서 Oracle로

  • PGDB as a Service에서 PostgreSQL로

수직으로 파티셔닝된 복제 사용에 대한 가이드라인

수직으로 파티셔닝된 복제를 포함하는 구성 파일을 생성할 때 다음 가이드라인을 따릅니다.

  • 수직으로 파티셔닝된 복제는 보고 및 기타 데이터 공유 전략에 적합하지만 고가용성 환경에는 적합하지 않습니다. 수직으로 파티셔닝된 복제를 위해 테이블을 구성하면 SharePlex는 다른 컬럼을 인식하지 못하므로 해당 컬럼의 데이터가 복제되지 않습니다.

  • 수평으로 파티셔닝된 복제와 수직으로 파티셔닝된 복제를 결합하여 배포되는 정보와 배포 위치를 최대한 제어할 수 있습니다.

    예: 회사에는 본사와 지역 부서가 있습니다. 본사는 기업 데이터베이스를 유지 관리하고 각 지역 부서는 지역 데이터베이스를 유지 관리합니다. 본사는 수직으로 파티셔닝된 복제를 사용하여 테이블의 컬럼 데이터 중 일부를 해당 위치와 공유하며, 다른 민감한 데이터는 본사에 보관합니다. 공유 컬럼에 대한 행 변경 사항은 적절한 지역 데이터베이스에 복제하기 위해 수평으로 추가로 파티셔닝됩니다.

  • 일부 컬럼을 하나의 타겟 시스템에 복제하고 모든 컬럼을 다른 타겟 시스템에 복제하도록 테이블을 구성할 수 없습니다(수직으로 파티셔닝된 복제와 전체 테이블 복제의 조합). 그러나 한 타겟의 동일한 테이블에 대한 전체 테이블 복제를 구성한 다음, 해당 타겟의 수직으로 파티셔닝된 복제를 파티션 컬럼만 필요한 테이블이 포함된 두 번째 타겟으로 구성할 수 있습니다.
  • 타겟 테이블은 소스 테이블과 동일한 컬럼을 모두 포함할 수 있지만 반드시 포함할 필요는 없습니다. 타겟에는 소스 테이블에서 복제되는 컬럼만 포함할 수 있습니다. 해당 소스 및 타겟 컬럼의 이름은 동일할 필요가 없습니다. 해당 컬럼에는 동일한 데이터 유형(동일한 유형, 크기, 정밀도)이 포함되어야 합니다.

수직으로 파티셔닝된 복제 개요: Oracle에서 모든 타겟으로

수직으로 파티셔닝된 복제를 구성하려면 구성 파일에 컬럼 파티션 또는 제외 컬럼 파티션을 지정합니다.

  • 컬럼 파티션은 복제에 포함할 컬럼을 지정합니다. 지정된 컬럼에 수행된 데이터 변경 사항만 타겟으로 전송됩니다.
  • 제외 컬럼 파티션은 복제에서 제외할 컬럼을 지정합니다. 해당 컬럼의 데이터는 타겟에 복제되지 않습니다.

두 유형의 컬럼 파티션을 지정하려면 다음 규칙을 따릅니다.

  • 소스 테이블당 하나의 파티션이 있을 수 있습니다. 컬럼 파티션과 제외 파티션은 상호 배타적입니다.
  • 컬럼 목록은 괄호로 묶어야 합니다.
  • 각각의 컬럼 이름은 쉼표로 구분합니다. 쉼표 뒤의 공백은 선택 사항입니다.
  • 파티션의 최대 길이는 174,820바이트(구성 파일에 허용되는 최대 줄 길이)입니다. 따라서 나열할 수 있는 실제 컬럼 수는 각 이름의 길이에 따라 달라집니다.
  • 컬럼은 소스 테이블에서 연속적이거나 연속적이지 않을 수 있습니다. 예를 들어 테이블의 첫 번째, 세 번째, 일곱 번째 컬럼을 복제할 수 있습니다.
  • 키 컬럼은 파티션에 포함할 필요가 없습니다.
  • 이 테이블에 대해 수평으로 파티셔닝된 복제와 수직으로 파티셔닝된 복제를 함께 사용하는 경우 파티션 scheme의 모든 컬럼이 컬럼 조건에 속해야 합니다.
  • 전체 테이블 복제가 있는 테이블과 파티셔닝된 복제를 사용할 테이블을 포함하여 지정된 데이터 소스에서 복제할 모든 데이터에 대해 하나의 구성 파일을 사용합니다.

수직으로 파티셔닝된 복제에 대한 항목을 구성하려면 다음 구문을 사용합니다. 구성 파일을 생성하는 방법에 대한 자세한 내용은 데이터 복제를 위해 SharePlex 구성을 참조하십시오.

datasource_specification    

# table specification with column partition

src_owner.table (src_col,src_col,...)

tgt_owner.table [(tgt_col,tgt_col,...)] routing_map

# table specification with exclusion column partition

src_owner.table !(src_col,src_col,...) tgt_owner.table routing_map
구성 구성 요소 설명
src_owner.tabletgt_owner.table 각각 소스 및 타겟 테이블의 사양입니다.

(src_col, src_col,...)

복제에 포함할 컬럼을 나열하는 컬럼 파티션을 지정합니다. 복제 시작 후 추가된 컬럼의 데이터를 포함하여 다른 컬럼 데이터는 복제되지 않습니다(DDL 복제가 활성화된 것으로 가정).

!(src_col,src_col,...)

복제에서 제외할 컬럼을 나열하는 제외 컬럼 파티션을 지정합니다. 복제 시작 후 추가된 컬럼의 데이터를 포함하여 다른 모든 컬럼 데이터는 복제되지 않습니다(DDL 복제가 활성화된 것으로 가정).

참고: 제외 컬럼 파티션을 사용하는 경우 해당 소스 및 타겟 컬럼 이름이 동일해야 하며 제외된 컬럼은 키 정의에 사용할 수 없습니다. 자세한 내용은 유니크 키 정의 를 참조하십시오.

(tgt_col,tgt_col,...)

타겟 컬럼입니다. 소유자나 이름이 다른 타겟 컬럼에 소스 컬럼을 매핑하려면 이 옵션을 사용합니다. 소스 컬럼과 타겟 컬럼의 소유자나 이름이 동일한 경우 타겟 컬럼을 생략할 수 있습니다.

소스 컬럼을 타겟 컬럼에 매핑하려면 다음 규칙을 따릅니다.

  • 소스 컬럼 파티션의 구문 규칙은 타겟 컬럼 목록에도 적용됩니다.
  • 타겟 컬럼은 소스 컬럼과 정의가 동일해야 합니다(해당 이름은 제외).

  • 해당 소스 컬럼과 동일한 논리적 순서로 타겟 컬럼을 나열합니다. 이는 테이블에 있는 타겟 컬럼의 실제 순서와 관계없이 필요하므로 SharePlex는 객체 캐시에 올바른 상관 관계를 빌드합니다. 예를 들어 소스 목록의 두 번째 컬럼에 대한 변경 사항은 타겟 목록의 두 번째 컬럼에 복제됩니다.
routing_map

컬럼 파티션의 라우팅 맵입니다. 라우팅 맵은 다음 중 하나일 수 있습니다.

  • 소스 테이블에 대해 수평으로 파티셔닝된 복제를 사용하는 경우 !partition_scheme과 같이 파티션 scheme을 지정합니다.
  • 소스 테이블에 대해 수평으로 파티셔닝된 복제를 사용하지 않는 경우 다음과 같이 라우팅 맵을 지정합니다.

    • 컬럼 파티션을 하나의 타겟에 복제하는 경우 sysB@o.myora와 같은 간단한 라우팅 맵을 사용합니다. 명명된 익스포트 또는 Post 큐가 있는 경로가 지원됩니다. 자세한 내용은 다음을 참조하십시오.

      명명된 Export 큐 구성

      명명된 Post 큐 구성

    • 컬럼 파티션을 여러 타겟 시스템에 복제하는 경우 sysB@o.myora+sysC@o.myora2와 같은 복합 라우팅 맵을 사용합니다.

중요! 여러 타겟을 별도의 항목에 나열하지 않고 복합 라우팅 맵을 사용해야 합니다. 소스 테이블당 하나의 컬럼 조건만 구성 파일에 나열될 수 있기 때문입니다. 복합 라우팅 맵을 사용하려면 모든 타겟 테이블의 소유자와 이름이 동일해야 합니다. 자세한 내용은 구성 파일의 라우팅 사양을 참조하십시오.

구성 예

다음은 복합 라우팅 맵을 사용하여 여러 타겟에 복제하는 수직으로 파티셔닝된 복제 구성입니다. 이 소스 테이블에 복합 라우팅 맵을 사용하려면 모든 타겟의 이름을 scott.sal로 지정해야 합니다.

Datasourceo.oraA    
scott.emp (c1,c2) scott.sal

sysB@o.oraB+sysC@o.oraC

다음은 단일 타겟에 복제하는 수직으로 파티셔닝된 복제 구성이며, 여기서 타겟 컬럼의 이름은 소스의 이름과 다릅니다.

Datasourceo.oraA    
scott.emp (c1,c2) scott.sal (c5,c6)

sysB@o.oraB

다음 구성 파일은 구성 파일에서 scott.emp (c1, c2)의 동일한 컬럼 파티션을 두 번 반복하기 때문에 유효하지 않습니다.

Datasourceo.oraA    
scott.emp (c1,c2) scott.cust (c1,c2)

sysB@o.oraB

scott.emp (c1,c2) scott.sales (c1,c2) sysC@o.oraC

PostgreSQL 및 PostgreSQL Database as a Service에 대한 수직으로 파티셔닝된 복제 개요

지원되는 타겟

PostgreSQL, Oracle, SQL Server 및 Kafka

참고: PostgreSQL-SQL Server 복제는 수직으로 파티셔닝된 데이터에 대해 BOOLEAN, TIME, TIME WITH TIME ZONE 및 BYTEA 데이터 유형을 지원하지 않습니다.

수직으로 파티셔닝된 복제를 구성하려면 다음을 수행합니다.

수직으로 파티셔닝된 복제를 구성하려면 구성 파일에 컬럼 파티션 또는 제외 컬럼 파티션을 지정합니다.

  • 컬럼 파티션은 복제에 포함할 컬럼을 지정합니다. 지정된 컬럼에 수행된 데이터 변경 사항만 타겟으로 전송됩니다.
  • 제외 컬럼 파티션은 복제에서 제외할 컬럼을 지정합니다. 해당 컬럼의 데이터는 타겟에 복제되지 않습니다.

두 유형의 컬럼 파티션을 지정하려면 다음 규칙을 따릅니다.

  • 소스 테이블당 하나의 파티션이 있을 수 있습니다. 컬럼 파티션과 제외 파티션은 상호 배타적입니다.
  • 컬럼 목록은 괄호로 묶어야 합니다.
  • 각각의 컬럼 이름은 쉼표로 구분합니다. 쉼표 뒤의 공백은 선택 사항입니다.
  • 파티션의 최대 길이는 174,820바이트(구성 파일에 허용되는 최대 줄 길이)입니다. 따라서 나열할 수 있는 실제 컬럼 수는 각 이름의 길이에 따라 달라집니다.
  • 컬럼은 소스 테이블에서 연속적이거나 연속적이지 않을 수 있습니다. 예를 들어 테이블의 첫 번째, 세 번째, 일곱 번째 컬럼을 복제할 수 있습니다.
  • 키 컬럼은 파티션에 포함할 필요가 없습니다. 키 컬럼을 파티셔닝하지 않으면 성능에 영향을 미칠 수 있습니다.
  • 전체 테이블 복제가 있는 테이블과 파티셔닝된 복제를 사용할 테이블을 포함하여 지정된 데이터 소스에서 복제할 모든 데이터에 대해 하나의 구성 파일을 사용합니다.

수직으로 파티셔닝된 복제에 대한 항목을 구성하려면 다음 구문을 사용합니다.

datasource_specification    

# table specification with column partition

src_schema.table (src_col,src_col,...)

tgt_schema.table [(tgt_col,tgt_col,...)] routing_map

# table specification with exclusion column partition

src_schema.table !(src_col,src_col,...) tgt_schema.table routing_map
구성 구성 요소 설명
src_schema.tabletgt_schema.table 각각 소스 및 타겟 테이블의 사양입니다.
(tgt_col,tgt_col,...)

타겟 컬럼입니다. 스키마나 이름이 다른 타겟 컬럼에 소스 컬럼을 매핑하려면 이 옵션을 사용합니다. 소스 컬럼과 타겟 컬럼의 스키마나 이름이 동일한 경우 타겟 컬럼을 생략할 수 있습니다.

소스 컬럼을 타겟 컬럼에 매핑하려면 다음 규칙을 따릅니다.

  • 소스 컬럼 파티션의 구문 규칙은 타겟 컬럼 목록에도 적용됩니다.
  • 타겟 컬럼은 소스 컬럼과 정의가 동일해야 합니다(해당 이름은 제외).

  • 해당 소스 컬럼과 동일한 논리적 순서로 타겟 컬럼을 나열합니다. 이는 테이블에 있는 타겟 컬럼의 실제 순서와 관계없이 필요하므로 SharePlex는 객체 캐시에 올바른 상관 관계를 빌드합니다. 예를 들어 소스 목록의 두 번째 컬럼에 대한 변경 사항은 타겟 목록의 두 번째 컬럼에 복제됩니다.
routing_map

컬럼 파티션의 라우팅 맵입니다. 라우팅 맵은 다음 중 하나일 수 있습니다.

  • 소스 테이블에 대해 수평으로 파티셔닝된 복제를 사용하는 경우 !partition_scheme과 같이 파티션 scheme을 지정합니다.
  • 소스 테이블에 대해 수평으로 파티셔닝된 복제를 사용하지 않는 경우 다음과 같이 라우팅 맵을 지정합니다.

    • 컬럼 파티션을 하나의 타겟에 복제하는 경우 sysB@r.dbname과 같은 간단한 라우팅 맵을 사용합니다. 명명된 익스포트 또는 Post 큐가 있는 경로가 지원됩니다. 자세한 내용은 다음을 참조하십시오.

      명명된 Export 큐 구성

      명명된 Post 큐 구성

    • 컬럼 파티션을 여러 타겟 시스템에 복제하는 경우 sysB@r.dbname+sysC@r.dbname2와 같은 복합 라우팅 맵을 사용합니다.

중요! 여러 타겟을 별도의 항목에 나열하지 않고 복합 라우팅 맵을 사용해야 합니다. 소스 테이블당 하나의 컬럼 조건만 구성 파일에 나열될 수 있기 때문입니다. 복합 라우팅 맵을 사용하려면 모든 타겟 테이블의 스키마와 이름이 동일해야 합니다.

구성 예

다음은 복합 라우팅 맵을 사용하여 여러 타겟에 복제하는 수직으로 파티셔닝된 복제 구성입니다. 이 소스 테이블에 복합 라우팅 맵을 사용하려면 모든 타겟의 이름을 scott.sal로 지정해야 합니다.

Datasource: r.dbname    
scott.emp (c1,c2) scott.sal

sysB@r.dbname1 + sysC@r.dbname2

다음은 단일 타겟에 복제하는 수직으로 파티셔닝된 복제 구성이며, 여기서 타겟 컬럼의 이름은 소스의 이름과 다릅니다.

Datasource: r.dbname    
scott.emp (c1,c2) scott.sal (c5,c6)

sysB@r.dbname1

다음 구성 파일은 구성 파일에서 scott.emp (c1, c2)의 동일한 컬럼 파티션을 두 번 반복하기 때문에 유효하지 않습니다.

Datasource: r.dbname    
scott.emp (c1,c2) scott.cust (c1,c2)

sysB@r.dbname1

scott.emp (c1,c2) scott.cust (c1,c2) sysC@r.dbname2

변경 내역 타겟에 대한 복제 구성

이 장에는 변경 내역 타겟을 유지하기 위해 SharePlex를 구성하는 방법에 대한 지침이 포함되어 있습니다. SharePlex를 사용하면 이 내역을 유지하는 한편 동일한 데이터 세트를 복제하여 최신 타겟을 유지할 수 있습니다.

내용

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating