지금 지원 담당자와 채팅
지원 담당자와 채팅

SharePlex 11.4 - 관리 안내서

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

와일드카드를 사용하여 여러 객체 지정

와일드카드 문자를 사용하여 구성 파일의 한 항목에 스키마의 여러 객체를 지정할 수 있습니다. SharePlex는 명시적으로 제외된 객체를 제외하고 와일드카드를 충족하는 어떤 객체든 복제합니다.

참고: 객체 이름만 와일드카드로 사용할 수 있습니다. 소유자 이름은 와일드카드로 사용할 수 없습니다.

와일드카드 지원 요구 사항 및 제한 사항

지원되는 와일드카드 구문

SharePlex는 다음과 같은 SQL 와일드카드를 지원합니다.

  • 문자열을 지정하는 백분율(%) 와일드카드 (와일드카드를 사용하여 여러 객체 지정 참조)
  • 단일 문자를 지정하려면 밑줄(_) 와일드카드를 사용합니다.
  • 백분율 기호 또는 밑줄 문자(예: emp_salary)가 포함된 테이블 이름의 경우 SharePlex는 백슬래시(\)를 이스케이프 문자로 인식하여 해당 문자를 와일드카드가 아닌 리터럴로 표시합니다.

구성 파일에 와일드카드 이름 지정

구성 파일에 와일드카드 이름을 지정할 때 도움이 필요한 경우 이 템플릿을 사용합니다.

와일드카드 객체 이름을 사용한 구성
datasource_specification
expand src_owner.wildcard_name [not (list)]

tgt_owner.wildcard_name

routing_map
구문 요소 설명
구성 요소 설명
expand

사양에 확장해야 하는 와일드카드 문자가 포함되어 있음을 나타냅니다. SharePlexexpand 키워드를 감지하면 와일드카드 사양의 기준과 일치하는 모든 객체에 대해 데이터베이스를 쿼리합니다. 이 필수 키워드가 없으면 와일드카드 문자는 명시적인 객체 이름의 일부로 간주되며 와일드카드 확장이 수행되지 않습니다.

참고: expand와 소스 객체 사양의 시작 사이에 공백을 둡니다.

src_owner.wildcard_name
  • src_owner는 소스 객체의 소유자입니다. 소유자 이름은 와일드카드로 사용할 수 없습니다. 소유자 이름에 와일드카드를 사용하는 경우 SharePlex는 해당 와일드카드가 소유자(스키마) 이름에 속한다고 가정합니다.
  • wildcard_name은 소스 객체의 와일드카드 이름입니다.

규칙:

Oracle: 타겟 객체의 이름은 소스 객체의 이름과 동일해야 하지만 객체는 다른 소유자에 속할 수 있습니다.

not (list)

와일드카드 확장에서 생략할 객체를 정의하는 제외 목록입니다. 복제하지 않을 객체를 제외하려면 이 옵션을 사용합니다.

참고:not 키워드는 SQL 와일드카드 NOT 연산자와 동일한 의미를 갖지 않습니다.

  • not 키워드와 괄호는 필수 요소입니다.
  • list는 동일한 소유자가 소유한 쉼표로 구분된 테이블 목록(와일드카드 또는 명시적)입니다. 예: not (spo%, gen%, product)

not 키워드 앞뒤에 공백을 둡니다. 목록의 각 쉼표 뒤에는 공백이 허용됩니다.

참고: 와일드카드를 충족하는 객체가 구성 파일의 다른 곳에 나열되는 경우 해당 항목은 와일드카드 항목에 지정된 처리 또는 라우팅을 재정의합니다. 이 경우 not 절은 필요하지 않습니다. 를 참조하십시오.

tgt_owner.wildcard_name
  • tgt_owner는 타겟 객체의 소유자입니다.
  • wildcard_name은 타겟 객체의 와일드카드 이름입니다.

타겟 사양은 owner.% 형식이어야 합니다. owner.tab%와 같이 부분적으로 확장된 타겟 와일드카드 이름은 지원되지 않습니다.

routing_map 유효한 라우팅 맵입니다. 자세한 내용은 구성 파일의 라우팅 사양를 참조하십시오.

와일드카드 사양 검증

와일드카드 사양이 복제할 특정 테이블 목록을 생성하는지 확인하려면 구성을 활성화하기 전에 sp_ctrl에서 verify config 명령을 실행합니다. 이 명령은 SharePlex가 캡처하고 복제할 객체 목록과 발생한 문제 목록을 생성합니다. 이 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

유효한 와일드카드 사양 예

예 1: 다음 와일드카드 사양은 SharePlexscott이 소유한 모든 테이블을 활성화하도록 지시합니다. 여기서, 테이블 이름은 %temp%와 같은 경우를 제외하고는 prod%와 같습니다. 이 설명과 일치하는 모든 테이블은 hal 스키마의 타겟에 있는 동일한 이름의 테이블에 복제됩니다. SharePlex는 자동으로 이름을 상향 이동하므로 실제로 테이블 이름이 'PROD%'와 비슷하지만 '%TEMP%'와 같지 않은 모든 테이블을 활성화합니다.

Datasource:o.sidA	 	 
expand scott.prod% not (%temp%)    hal.%    sysa@o.sidB

예 2: 다음 예에서는 와일드카드 사양의 테이블 중 하나(이 경우 photo 테이블)에 대해 특수 처리를 지정하는 방법을 보여줍니다. photo를 제외한 모든 테이블은 기본 Post 큐를 통해 라우팅됩니다. photo 테이블에 대한 별도의 항목은 와일드카드 항목을 무시하고 명명된 Post 큐를 통해 photo 테이블을 처리합니다. 자세한 내용은 명명된 Post 큐 구성를 참조하십시오.

Datasource:o.sidA    
cust.%        cust.%        hostB@o.oraB
cust.photo    cust.photo    hostB:lobQ@o.oraB

다음은 유효한 와일드카드 사양의 추가 예입니다.

Datasource:o.sidA	 	 
expand scott.%test%    scott.%    sysa@o.sidB
Datasource:o.sidA	 	 
expand scott.%t__t%    fred.%    sysa@o.sidB
Datasource:o.sidA	 	 
expand scott.% not (spo%, gen%, prodct)    scott.%     sysa@o.sidB
Datasource:o.sidA	 	 
expand scott.prod% not (%temp%)    hal.%    sysa@o.sidB

유효하지 않은 와일드카드 사양의 예

다음 예에는 허용되지 않는 와일드카드 스키마가 포함되어 있습니다.

Datasource:o.sidA    
expand rob%.%test%    scott.%    sysa@o.sidB

다음 예에는 허용되지 않는 부분적으로 와일드카드로 지정된 타겟 객체 이름이 포함되어 있습니다.

Datasource:o.sidA    
expand scott.%test%    scott.%obj%    sysa@o.sidB

와일드카드를 사용하여 PostgreSQL에 대한 여러 테이블 지정

와일드카드 문자를 사용하여 구성 파일의 한 항목에 스키마의 여러 테이블을 지정할 수 있습니다. SharePlex는 명시적으로 제외된 객체를 제외하고 와일드카드를 충족하는 어떤 테이블이든 복제합니다.

참고: 테이블 이름만 와일드카드로 사용할 수 있습니다. 스키마 이름은 와일드카드로 사용할 수 없습니다.

와일드카드 지원 요구 사항 및 제한 사항

구성이 활성화되기 전에 와일드카드 테이블 이름을 포함하는 스키마가 소스와 타겟에 있어야 합니다.

지원되는 와일드카드 구문

SharePlex는 다음과 같은 PostgreSQL 와일드카드를 지원합니다.

  • 문자열을 지정하는 백분율(%) 와일드카드 ( 참조)
  • 단일 문자를 지정하려면 밑줄(_) 와일드카드를 사용합니다.
  • 백분율 기호 또는 밑줄 문자(예: emp_salary)가 포함된 테이블 이름의 경우 SharePlex는 백슬래시(\)를 이스케이프 문자로 인식하여 해당 문자를 와일드카드가 아닌 리터럴로 표시합니다.

구성 파일에 와일드카드 이름 지정

구성 파일에 와일드카드 이름을 지정할 때 도움이 필요한 경우 이 템플릿을 사용합니다.

와일드카드 테이블 이름을 사용한 구성
datasource_specification
expand src_schema.wildcard_name [not (list)]

tgt_schema.wildcard_name

routing_map
구문 요소 설명
구성 요소 설명
expand

사양에 확장해야 하는 와일드카드 문자가 포함되어 있음을 나타냅니다. SharePlexexpand 키워드를 감지하면 와일드카드 사양의 기준과 일치하는 모든 테이블에 대해 데이터베이스를 쿼리합니다. 이 필수 키워드가 없으면 와일드카드 문자는 명시적인 테이블 이름의 일부로 간주되며 와일드카드 확장이 수행되지 않습니다.

참고: expand와 소스 테이블 사양의 시작 사이에 공백을 둡니다.

src_schema.wildcard_name
  • src_schema는 소스 테이블의 스키마입니다. 스키마 이름은 와일드카드로 사용할 수 없습니다. 스키마 이름에 와일드카드를 사용하는 경우 SharePlex는 해당 와일드카드가 스키마 이름에 속한다고 가정합니다.
  • wildcard_name은 소스 테이블의 와일드카드 이름입니다.

PostgreSQL: 타겟 테이블의 이름은 소스 테이블의 이름과 동일해야 하지만 테이블은 다른 스키마에 속할 수 있습니다.

not (list)

와일드카드 확장에서 생략할 테이블을 정의하는 제외 목록입니다. 복제하지 않을 테이블을 제외하려면 이 옵션을 사용합니다. 참고:not 키워드는 SQL 와일드카드 NOT 연산자와 동일한 의미를 갖지 않습니다.

  • not 키워드와 괄호는 필수 요소입니다.
  • list는 동일한 스키마가 소유한 쉼표로 구분된 테이블 목록(와일드카드 또는 명시적)입니다. 예: not (spo%, gen%, product)

not 키워드 앞뒤에 공백을 둡니다. 목록의 각 쉼표 뒤에는 공백이 허용됩니다.

참고: 와일드카드를 충족하는 테이블이 구성 파일의 다른 곳에 나열되는 경우 해당 항목은 와일드카드 항목에 지정된 처리 또는 라우팅을 재정의합니다. 이 경우 not 절은 필요하지 않습니다. 를 참조하십시오.

tgt_schema.wildcard_name
  • tgt_schema는 타겟 테이블의 스키마입니다.
  • wildcard_name은 타겟 테이블의 와일드카드 이름입니다.

타겟 사양은 schema.% 형식이어야 합니다. schema.tab%와 같이 부분적으로 확장된 타겟 와일드카드 이름은 지원되지 않습니다.

routing_map 유효한 라우팅 맵입니다.

와일드카드 사양 검증

와일드카드 사양이 복제할 특정 테이블 목록을 생성하는지 확인하려면 구성을 활성화하기 전에 sp_ctrl에서 verify config 명령을 실행합니다. 이 명령은 SharePlex가 캡처하고 복제할 테이블 목록과 발생한 문제 목록을 생성합니다. 이 명령에 대한 자세한 내용은 SharePlex 참조 안내서를 참조하십시오.

유효한 와일드카드 사양 예

예 1: 다음 와일드카드 사양은 SharePlexscott이 소유한 모든 테이블을 활성화하도록 지시합니다. 여기서, 테이블 이름은 %temp%와 같은 경우를 제외하고는 prod%와 같습니다. 이 설명과 일치하는 모든 테이블은 hal 스키마의 타겟에 있는 동일한 이름의 테이블에 복제됩니다.

Datasource:r.dbname    
expand scott.prod% not (%temp%)    hal.%    hostB@r.dbname

예 2: 다음 예에서는 와일드카드 사양의 테이블 중 하나(이 경우 photo 테이블)에 대해 특수 처리를 지정하는 방법을 보여줍니다. photo를 제외한 모든 테이블은 기본 Post 큐를 통해 라우팅됩니다. photo 테이블에 대한 별도의 항목은 와일드카드 항목을 무시하고 명명된 Post 큐를 통해 photo 테이블을 처리합니다.

Datasource:r.dbname    
cust.%        cust.%        hostB@r.dbname
cust.photo    cust.photo    hostB:queuename@r.dbname

다음은 PostgreSQL에서 PostgreSQL로의 복제에 대한 유효한 와일드카드 사양의 추가 예입니다.

Datasource:r.dbname    
expand scott.%test%    scott.%    hostB@r.dbname
Datasource:r.dbname	 	 
expand scott.%t__t%    fred.%    hostB@r.dbname
Datasource:r.dbname	 	 
expand scott.% not (spo%, gen%, prodct)    scott.%     hostB@r.dbname
Datasource:r.dbname	 	 
expand scott.prod% not (%temp%)    hal.%    hostB@r.dbname

다음은 PostgreSQL에서 Oracle로의 복제에 대한 유효한 와일드카드 사양의 예입니다.

Datasource:r.dbname    
expand "scott"."%test%"    "scott"."%"    hostB@o.target_dbname

다음은 PostgreSQL에서 SQL Server로의 복제에 대한 유효한 부분 와일드카드 사양의 예입니다.

Datasource:r.dbname    
expand scott.%test%    scott.%test%     hostB@r.target_dbname
유효하지 않은 와일드카드 사양의 예

다음 예에는 허용되지 않는 와일드카드 스키마가 포함되어 있습니다.

Datasource:r.dbname	 	 
expand rob%.%test%    scott.%    hostB@r.dbname

다음 예에는 허용되지 않는 부분적으로 와일드카드로 지정된 타겟 테이블 이름이 포함되어 있습니다.

Datasource:r.dbname    
expand scott.%test%    scott.%obj%    hostB@r.dbname

Oracle 데이터베이스에 대한 유니크 키 정의

유니크 키 정의

기본 키나 유니크 키를 사용하여 테이블을 생성하지 않은 경우 구성 파일에서 객체를 지정할 때 키로 사용할 컬럼을 지정할 수 있습니다. SharePlex는 지정된 컬럼을 WHERE 절의 유니크 키로 사용하여 게시할 타겟 행을 찾습니다.

참고:
  • 기본 키나 유니크 키가 없으면 SharePlex는 테이블의 모든 컬럼(또는 컬럼 파티션의 모든 컬럼)을 키로 사용하므로 복제 성능이 저하됩니다.
  • 기본 키나 유니크 키가 있는 테이블에 키 정의가 지정되면 키 정의가 정의된 키를 재정의합니다. 이 기능은 SharePlex에서 기존 키를 사용하지 않으려는 경우 유용할 수 있습니다.

유니크 키 정의 - Oracle-Oracle

키로 지정하는 컬럼은 다음 기준을 충족해야 합니다.

  • LONG 또는 LOB 컬럼일 수 없습니다.
  • 행을 고유하게 식별할 수 있어야 합니다. 식별할 수 없으면 복제가 동기화 중단 오류를 반환하거나 잘못된 타겟 행에 게시될 수 있습니다.
  • 테이블이 수직으로 파티셔닝된 복제를 위해 구성된 경우 컬럼 파티션의 일부여야 합니다. 수직 파티셔닝에서 제외 컬럼 표기법을 사용하면 제외된 컬럼을 키 정의에 사용할 수 없습니다. 자세한 내용은 파티셔닝된 복제 구성를 참조하십시오.
  • 추가 로그 그룹에 컬럼을 포함합니다. 포함하지 않으면 SharePlex는 데이터베이스에서 해당 값을 쿼리해야 합니다.
  • 타겟 테이블에 인덱스를 생성하고 variable-data 디렉토리에 있는 SharePlex 힌트 파일에 인덱스를 추가합니다. 이는 Post 프로세스가 인덱스를 사용하도록 지시합니다.

키 정의 구문

키 정의를 생성하려면 소스 객체 뒤에 공백을 입력하고 괄호를 포함하여 다음 구문을 사용합니다.

src_owner.table !key (column_list)

여기서,

  • !key는 필수 키워드입니다.
  • column_list는 키에 포함할 컬럼 목록입니다. 컬럼 이름은 쉼표로 구분합니다. 쉼표 뒤의 공백은 선택 사항입니다.

datasource_specification

   
src_owner.table !key (col_name, col2_name, ...)

tgt_owner.table

host@o.SID

Datasource:o.ora1
scott.tab !key(name,ID)    scott.tab2    sysB@oraB

유니크 키 정의 - PostgreSQL-PostgreSQL

키로 지정하는 컬럼은 다음 기준을 충족해야 합니다.

  • 유니크 키는 TEXT, BYTEA, JSON, JSONB, 2,000자를 초과하는 CHAR, 크기가 없거나 4,000자를 초과하는 VARCHAR일 수 없습니다.

  • 행을 고유하게 식별할 수 있어야 합니다. 식별할 수 없으면 복제가 동기화 중단 오류를 반환하거나 잘못된 타겟 행에 게시될 수 있습니다.
  • 테이블이 수직으로 파티셔닝된 복제를 위해 구성된 경우 컬럼 파티션의 일부여야 합니다. 수직 파티셔닝에서 제외 컬럼 표기법을 사용하면 제외된 컬럼을 키 정의에 사용할 수 없습니다. 자세한 내용은 파티셔닝된 복제 구성을 참조하십시오.

  • 타겟 테이블에 인덱스를 생성하면 Post 프로세스가 인덱스를 사용하도록 지시합니다.

키 정의 구문

키 정의를 생성하려면 소스 객체 뒤에 공백을 입력하고 괄호를 포함하여 다음 구문을 사용합니다.

src_schema.table !key (column_list)

여기서,

  • !key는 필수 키워드입니다.
  • column_list는 키에 포함할 컬럼 목록입니다. 컬럼 이름은 쉼표로 구분합니다. 쉼표 뒤의 공백은 선택 사항입니다.

datasource_specification

   
src_schema.table !key (col_name, col2_name, ...)

tgt_schema.table

host@r.dbname

Datasource:r.dbname
scott.tab !key(name,ID)    scott.tab2    sysB@dbname

유니크 키 정의 - PostgreSQL-Oracle

키로 지정하는 컬럼은 다음 기준을 충족해야 합니다.

  • 유니크 키는 TEXT, 2000자를 초과하는 CHAR, 크기가 없거나 4000자를 초과하는 VARCHAR일 수 없습니다.

  • 행을 고유하게 식별할 수 있어야 합니다. 식별할 수 없으면 복제가 동기화 중단 오류를 반환하거나 잘못된 타겟 행에 게시될 수 있습니다.
  • 테이블이 수직으로 파티셔닝된 복제를 위해 구성된 경우 컬럼 파티션의 일부여야 합니다. 수직 파티셔닝에서 제외 컬럼 표기법을 사용하면 제외된 컬럼을 키 정의에 사용할 수 없습니다. 자세한 내용은 파티셔닝된 복제 구성를 참조하십시오.
  • 타겟 테이블에 인덱스를 생성하고 variable-data 디렉토리에 있는 SharePlex 힌트 파일에 인덱스를 추가합니다. 이는 Post 프로세스가 인덱스를 사용하도록 지시합니다.

키 정의 구문

키 정의를 생성하려면 소스 객체 뒤에 공백을 입력하고 괄호를 포함하여 다음 구문을 사용합니다.

src_schema.table !key (column_list)

여기서,

  • !key는 필수 키워드입니다.
  • column_list는 키에 포함할 컬럼 목록입니다. 컬럼 이름은 쉼표로 구분합니다. 쉼표 뒤의 공백은 선택 사항입니다.

datasource_specification

   
src_schema.table !key (col_name, col2_name, ...)

tgt_owner.table

host@o.SID

Datasource:r.dbname
"scott"."tab" !key(name,ID)    "scott"."tab2"    sysB@o.oraB

Oracle 데이터베이스에 대한 DML 작업 필터링

와일드카드를 사용하는 경우 복제에서 다음 DML을 필터링하도록 SharePlex를 구성할 수 있습니다.

  • Oracle DML 유형(INSERT, UPDATE, DELETE)
  • Oracle 시퀀스 및 Oracle SQL*Loader direct-path loads와 관련된 DML입니다.

DML 유형 필터링

어떤 유형의 DML 작업이든 필터링하도록 SharePlex를 구성할 수 있으므로 작업이 타겟 테이블에 복제되지 않습니다. DML 필터링은 대부분의 다른 SharePlex 구성 구문과 호환됩니다.

DML 필터 구성

DML 필터를 구성하려면 소스 테이블 사양에 다음 구문을 추가합니다. 테이블 사양과 필터 사양 사이에 공백을 둡니다. 필터링할 여러 작업 유형을 지정할 수 있습니다. 컬럼 목록이나 키 정의와 같은 다른 기능에 대한 추가 구문은 DML 필터 사양을 따라야 합니다.

!dml(DML_type[,DML_type][,...])

여기서, DML_type은 다음 중 하나입니다.

DML_type 입력 작업 유형
i INSERT
d DELETE
u UPDATE

예 1

다음 예에서는 DELETE 작업이 타겟 테이블에 복제되지 않도록 필터링합니다.

Datasource:o.ora

 

 

scott.emp !dml(d)

scott.emp

prodsys@o.sysdb

예 2

다음 예에서는 UPDATE만 타겟 테이블에 복제되도록 DELETE 및 INSERT를 필터링합니다. 이 예에서는 DML 필터가 컬럼 매핑 사양과 호환되는 방식도 보여줍니다.

Datasource:o.ora

 

 

scott.stock !dml(d,i) (ID, name)

scott.stock (SKU, prod)

sys2@o.sysdb

현재 DML 필터 보기

verify config 명령을 사용하여 구성 파일의 각 테이블에 대해 필터링되는 DML을 확인합니다. 이 명령은 활성 또는 비활성 구성 파일에 사용할 수 있습니다.

sp_ctrl> verify config myconfig

7: "SCOTT"."EMP" "SCOTT"."EMP" prodsys@o.proddb

Filter out >>>>> DELETES

Unique Key : (EMPLOYEE_ID)

제한

복제에서 특정 Oracle 객체와 관련된 DML 필터링

SharePlex가 시퀀스 및 SQL*Loader direct-path loads를 복제하는 것을 방지할 수 있습니다. 기본적으로 이러한 객체의 복제는 활성화되어 있습니다.

이 객체 필터링 이 매개변수 설정
시퀀스 SP_OCT_REPLICATE_SEQUENCES 0
SQL*Loader direct-path loads SP_OCT_REPLICATE_DLOAD 0

The document was helpful.

평가 결과 선택

I easily found the information I needed.

평가 결과 선택