와일드카드를 사용하는 경우 복제에서 PostgreSQL DML 유형(INSERT, UPDATE, DELETE)을 필터링하도록 SharePlex를 구성할 수 있습니다.
DML 유형 필터링
어떤 유형의 DML 작업이든 필터링하도록 SharePlex를 구성할 수 있으므로 작업이 타겟 테이블에 복제되지 않습니다. DML 필터링은 대부분의 다른 SharePlex 구성 구문과 호환됩니다.
DML 필터 구성
DML 필터를 구성하려면 소스 테이블 사양에 다음 구문을 추가합니다. 테이블 사양과 필터 사양 사이에 공백을 둡니다. 필터링할 여러 작업 유형을 지정할 수 있습니다. 컬럼 목록이나 키 정의와 같은 다른 기능에 대한 추가 구문은 DML 필터 사양을 따라야 합니다.
!dml(DML_type[,DML_type][,...])
여기서, DML_type은 다음 중 하나입니다.
i |
INSERT |
d |
DELETE |
u |
UPDATE |
예
예 1
다음 예에서는 DELETE 작업이 타겟 테이블에 복제되지 않도록 필터링합니다.
Datasource:r.dbname |
|
|
scott.emp !dml(d) |
scott.emp |
prodsys@r.dbname |
예 2
다음 예에서는 UPDATE만 타겟 테이블에 복제되도록 DELETE 및 INSERT를 필터링합니다. 이 예에서는 DML 필터가 컬럼 매핑 사양과 호환되는 방식도 보여줍니다.
Datasource:r.dbname |
|
|
scott.stock !dml(d,i) !key (EMPLOYEE_ID) |
scott.stock |
sys2@r.dbname |
현재 DML 필터 보기
verify config 명령을 사용하여 구성 파일의 각 테이블에 대해 필터링되는 DML을 확인합니다. 이 명령은 활성 또는 비활성 구성 파일에 사용할 수 있습니다.
sp_ctrl> verify config myconfig detail
7: "SCOTT"."EMP" "SCOTT"."EMP" prodsys@o.proddb
Filter out >>>>> DELETES INSERTS
Unique Key : (EMPLOYEE_ID)
제한
구성 파일에 소스 테이블의 사양이 여러 개 있는 경우 테이블의 마지막 줄에 지정된 DML 필터 사양이 고려됩니다.
소스 및 타겟 컬럼 매핑
소스 및 타겟 컬럼 이름이 다른 경우 구성 파일에서 명시적인 컬럼 매핑을 지정하여 Post가 행 데이터를 올바른 타겟 컬럼에 적용하도록 할 수 있습니다.
컬럼 매핑 사용 가이드라인
컬럼 매핑 구성
다음 구문은 컬럼 맵을 생성합니다. 자세한 내용은 데이터 복제를 위해 SharePlex 구성를 참조하십시오.을 참조하십시오.
datasource_specification |
|
|
src_owner.table (src_col,src_col,...) |
tgt_owner.table (tgt_col,tgt_col,...) |
routing_map |
datasource_specification |
데이터 소스 사양입니다. 자세한 내용은 구성 파일의 데이터베이스 사양를 참조하십시오. |
src_owner.table 및 tgt_owner.table |
각각 소스 및 타겟 테이블의 사양입니다. 자세한 내용은 구성 파일 생성를 참조하십시오. |
(src_col,src_col,...) |
소스 컬럼의 목록입니다.
컬럼 목록을 지정하려면 다음 규칙을 따릅니다.
- 컬럼 목록은 괄호로 묶어야 합니다.
- 각각의 컬럼 이름은 쉼표로 구분합니다. 쉼표 뒤의 공백은 선택 사항입니다.
- 컬럼 목록의 최대 길이는 174,820바이트(구성 파일에 허용되는 최대 줄 길이)입니다.
|
(tgt_col,tgt_col,...) |
타겟 컬럼의 목록입니다.
- 해당 소스 컬럼과 동일한 논리적 순서로 타겟 컬럼을 나열합니다. 이는 테이블에 있는 타겟 컬럼의 실제 순서와 관계없이 필요하므로 SharePlex는 객체 캐시에 올바른 맵을 빌드합니다. 예를 들어 소스 목록의 두 번째 컬럼에 대한 변경 사항은 타겟 목록의 두 번째 컬럼에 복제됩니다.
- 소스 목록의 구문 규칙은 타겟 목록에도 적용됩니다.
|
routing_map |
라우팅 맵입니다. 자세한 내용은 구성 파일의 라우팅 사양를 참조하십시오. |
구성 예
이 예에는 대소문자를 구분하는 컬럼이 포함되어 있지 않습니다.
Datasource o.oraA |
|
|
sales.prod (ID,name,vendor) |
mfg.prod (UPC,product,supplier) |
sysB@o.oraB |
이 예에는 대소문자를 구분하는 컬럼이 포함되어 있습니다.
Datasource o.oraA |
|
|
sales.prod (ID,"name",vendor) |
mfg.prod (UPC,"product",supplier) |
sysB@o.oraB |
SharePlex 는 Oracle 소스 객체를 지정하기 위해 구성 파일의 빌드를 자동화하는 다음과 같은 스크립트를 제공합니다.
- config.sql: 데이터베이스의 모든 테이블과 모든 시퀀스(선택 사항)를 구성합니다.
- build_config.sql: 스키마에서 여러 테이블 또는 모든 테이블을 구성합니다.
지원되는 데이터베이스
Oracle
config.sql 사용
config.sql 스크립트를 사용하면 데이터베이스의 모든 스키마에 있는 모든 테이블과 모든 시퀀스(선택 사항)를 나열하는 구성을 빌드할 수 있습니다. 이 스크립트는 고가용성 복제 전략을 설정하거나 전체 데이터베이스를 동일한 보조 데이터베이스에 복제하려는 기타 시나리오를 설정할 때 시간을 절약합니다.
config.sql 사용 조건
config.sql을 실행하려면 다음을 수행합니다.
-
디렉토리를 SharePlex variable-data 디렉토리의 config 하위 디렉토리로 변경합니다. config.sql 스크립트는 현재 작업 디렉토리에 구성을 저장하고 SharePlex 구성은 config 하위 디렉토리에 있어야 합니다.
cd /vardir/config
- SQL*Plus에 SYSTEM으로 로그온합니다.
-
SharePlex product 디렉토리의 util 하위 디렉토리에서 전체 경로를 사용하여 config.sql을 실행합니다.
@ /proddir/util/config.sql
프롬프트를 따를 때 다음 표를 참조하십시오.
타겟 시스템 |
타겟 시스템의 이름(예: SystemB)입니다. |
소스 데이터베이스 SID |
소스(기본) Oracle 인스턴스의 ORACLE_SID입니다(예: oraA). o. 키워드는 포함하지 마십시오. ORACLE_SID는 대소문자를 구분합니다. |
타겟 데이터베이스 SID |
타겟(대상) Oracle 인스턴스의 ORACLE_SID입니다(예: oraB). o. 키워드는 포함하지 마십시오. ORACLE_SID는 대소문자를 구분합니다. |
시퀀스 복제 |
시퀀스를 복제하려면 y를 입력하고, 시퀀스를 복제하지 않으려면 n을 입력합니다. |
SharePlex Oracle 사용자 이름 |
소스 데이터베이스의 SharePlex 사용자 이름입니다. 이 항목은 복제 문제가 발생할 수 있는 SharePlex 스키마가 복제되는 것을 방지합니다. 유효한 이름이 제공되지 않으면 스크립트가 실패합니다. |
참고: SharePlex가 구성에 할당한 이름은 config.file입니다. 스크립트를 다시 실행하여 다른 구성 파일을 생성하면 첫 번째 파일을 덮어씁니다. 기존 파일을 보존하려면 두 번째 파일을 만들기 전에 이름을 바꾸십시오.
다음 단계:
-
테이블이나 소유자가 대소문자를 구분하는 경우 sp_ctrl에서 edit config 명령을 사용하여 구성 파일을 연 다음, 텍스트 편집기를 사용하여 대소문자 구분 테이블 및 소유자 이름을 큰따옴표로 묶습니다(예: "scott"."emp"). 스크립트는 대소문자 구분을 적용하기 위해 Oracle에서 요구하는 따옴표를 추가하지 않습니다.
sp_ctrl> edit config filename
-
구성이 올바른 위치에 있는지 확인하려면 list config 명령을 실행합니다. 구성 이름이 표시되지 않으면 잘못된 디렉토리에 생성된 것입니다. 파일을 찾아 variable-data 디렉토리의 config 하위 디렉토리로 이동합니다.
sp_ctrl> list config
build_config.sql 사용
build_config.sql 스크립트를 사용하면 스키마에 여러(또는 모든) 테이블을 포함하는 구성을 빌드할 수 있습니다. 구성의 각 구성 요소를 단계별로 묻는 대화형 스크립트입니다. 각 객체 및 라우팅에 대한 정보를 개별적으로 입력하는 대신 와일드카드를 사용하여 특정 테이블을 한 번에 선택하거나 스키마의 모든 테이블을 선택할 수 있습니다.
build_config.sql 사용 조건
- 소스 테이블 이름과 타겟 테이블 이름이 동일해야 합니다.
- 스크립트는 시퀀스를 지원하지 않습니다. 스크립트가 빌드하는 구성을 활성화하기 전에 sp_ctrl에서 edit config 명령을 사용하여 시퀀스 항목을 추가할 수 있습니다.
- 스크립트는 파티셔닝된 복제를 지원하지 않습니다. copy config 명령을 사용하여 스크립트가 빌드하는 구성을 복사한 다음, edit config 명령을 사용하여 파티셔닝된 복제를 사용하는 테이블에 대한 항목을 추가할 수 있습니다. 기존 구성이 아닌 새 구성을 활성화합니다.
- 스크립트는 SYS, SYSTEM 및 SharePlex 스키마의 객체를 구성하지 않습니다. 이러한 스키마는 시스템 및/또는 인스턴스별로 다르므로 복제할 수 없습니다.
- 여러 스키마에 대해 build_config.sql을 실행한 다음, 텍스트 편집기를 사용하여 해당 구성을 하나의 구성으로 결합할 수 있습니다. 파일에서 주석 처리되지 않은 첫 번째 줄인 Datasource:o.SID 줄 하나만 제외하고 모두 제거해야 합니다. config 하위 디렉토리 밖으로 파일을 이동하지 마십시오.
- edit config 명령을 사용하여 구성이 빌드된 후 필요에 따라 다른 변경 작업을 수행할 수 있습니다.
build_config.sql을 실행하려면 다음을 수행합니다.
-
디렉토리를 SharePlex variable-data 디렉토리의 config 하위 디렉토리로 변경합니다. build_config.sql 스크립트는 현재 작업 디렉토리에 구성을 저장하고 SharePlex 구성은 config 하위 디렉토리에 있어야 합니다.
cd /vardir/config
- SQL*Plus에 SYSTEM으로 로그온합니다.
-
SharePlex product 디렉토리의 util 하위 디렉토리에서 전체 경로를 사용하여 build_config.sql을 실행합니다.
@ /proddir/util/build_config.sql
프롬프트를 따를 때 다음 표를 참조하십시오.
타겟 시스템 |
타겟 시스템의 이름(예: SystemB)입니다. |
소스 데이터베이스 SID |
소스(기본) Oracle 인스턴스의 ORACLE_SID입니다(예: oraA). o. 키워드는 포함하지 마십시오. ORACLE_SID는 대소문자를 구분합니다. |
타겟 데이터베이스 SID |
타겟(대상) Oracle 인스턴스의 ORACLE_SID입니다(예: oraB). o. 키워드는 포함하지 마십시오. ORACLE_SID는 대소문자를 구분합니다. |
소스 데이터베이스 테이블의 소유자 |
소스 테이블의 소유자입니다. |
타겟 데이터베이스 테이블의 소유자 |
타겟 테이블의 소유자입니다. |
포함할 테이블 이름(모두 비어 있음) |
다음 중 하나를 수행합니다.
- Enter 키를 눌러 기본값을 적용합니다. 기본값은 소스 소유자에게 속한 모든 테이블을 선택합니다.
- 특정 테이블을 선택하려면 와일드카드(%) 문자와 문자열을 입력합니다(예: %e_salary%).
- 개별 테이블 이름을 입력합니다.
|
생성할 출력 파일의 이름 |
구성의 이름입니다. 스크립트는 파일에 .lst 접미사를 제공합니다(예: Scott_config.lst). |
다음 단계:
-
테이블이나 소유자가 대소문자를 구분하는 경우 sp_ctrl에서 edit config 명령을 사용하여 구성을 연 다음, 텍스트 편집기를 사용하여 대소문자 구분 테이블 및 소유자 이름을 큰따옴표로 묶습니다(예: "scott"."emp"). 스크립트는 대소문자 구분을 적용하기 위해 Oracle에서 요구하는 따옴표를 추가하지 않습니다.
sp_ctrl> edit config filename
-
구성이 올바른 위치에 있는지 확인하려면 list config 명령을 실행합니다. 구성 이름이 표시되지 않으면 잘못된 디렉토리에 생성된 것입니다. 파일을 찾아 variable-data 디렉토리의 config 하위 디렉토리로 이동합니다.
sp_ctrl> list config
SharePlex는 Oracle 멀티 테넌트 CDB(Container Databases)의 PDB(Pluggable Databases)와의 복제를 지원합니다. 이 지원은 Unix 및 Linux 플랫폼에서만 제공됩니다.
내용