target 명령을 사용하여 특정 유형의 타겟을 지원하도록 Post를 구성할 수 있습니다. 이를 타겟 구성이라고 합니다. 타겟 구성에 저장된 속성은 Post가 복제된 데이터를 처리, 형식화 및 출력하는 방법을 제어합니다.
target 명령은 타겟 구성 설정을 재설정하거나 보는 옵션도 제공합니다.
target 명령을 사용하면 전역 수준에서 또는 queue 옵션을 사용하는 경우 프로세스별 수준에서 타겟 구성을 제어할 수 있습니다.
중요: 이 명령을 사용한 후에는 Post 프로세스를 중지했다가 재시작해야 합니다.
사용
지원되는 소스: |
Oracle |
지원되는 타겟: |
전체 |
인증 수준: |
운영자(2) |
문제 위치: |
타겟 시스템 |
관련 명령: |
connection |
구문
target {o. | r. | x. | c.}target
[queue queuename]
{command_option} |
{
{ set category property |
reset [category [property] ] |
show [category ] } |
switch
} |
사용 불가 |
구문 설명
{o. | r. | x. | c.}target |
Post를 구성하는 타겟입니다. 타겟 이름 앞의 문자는 Oracle 데이터베이스, Open Target 데이터베이스, JMS, Kafka 브로커, 파일 또는 변경 내역 타겟 등 타겟 유형을 식별합니다.
가능한 타겟은 다음과 같습니다.
o.SID
여기서, SID는 Oracle 데이터베이스의 ORACLE_SID입니다.
r.database
여기서, database는 Open Target 데이터베이스의 이름(DSN 아님)입니다.*
x.jms
여기서, jms는 JMS(Java Message Service) 큐 또는 항목입니다.
x.kafka
여기서, kafka는 Apache Kafka 브로커입니다.
x.file
여기서, file은 지원되는 형식 중 하나로 데이터를 포함하는 구조화된 파일입니다(형식 카테고리 참조).
c.SID
여기서, SID는 변경 내역 타겟으로 구성된 타겟 Oracle 데이터베이스의 ORACLE_SID입니다.
|
queue queuename |
지정된 큐와 연결된 SharePlex Post 프로세스에 대한 명령 작업을 제한합니다. 이 작업은 설정 중인 타겟 속성에 대한 전역 설정을 재정의합니다. queue 옵션이 없으면 타겟 명령은 로컬 SharePlex 인스턴스의 모든 Post 프로세스에 영향을 미칩니다.
예: 다음은 myjms1 큐와 연결된 Post 프로세스에 대한 메타데이터 속성을 설정합니다.
target x.jms queue myjms1 set metadata time, userid, trans, size |
{
set category property |
reset [category [property]] |
show [category] |
switch
} |
- set은 타겟 구성에 구성 속성을 적용합니다.
- reset은 구성 설정을 기본값으로 다시 지웁니다(존재하는 경우). 특정 카테고리 및 (해당되는 경우) 특정 속성으로 제한될 수 있습니다.
참고: reset은 한 속성 값을 다른 속성 값으로 재설정하지 않습니다. 이 작업을 수행하려면 다른 set 명령을 사용합니다.
- show는 구성 설정을 표시합니다.
- category는 구성 속성의 카테고리입니다. 속성은 명령을 통한 효율적인 관리를 위해 카테고리별로 그룹화됩니다. 카테고리 설명을 참조하십시오.
- property는 설정, 재설정 또는 표시할 구성 속성입니다. 카테고리별로 다른 속성이 있습니다.
- switch는 파일 타겟(x.file)에만 적용됩니다. 이 옵션을 사용하여 새 활성 출력 파일을 생성하고 현재 파일을 일련 번호가 지정된 오래된 파일로 저장할 수 있습니다. 이 명령을 실행하면 Post가 새 레코드를 처리한 후에 전환이 발생합니다. 이 옵션은 입력을 받지 않으며 구성 카테고리와 연결되지 않습니다.
|
카테고리 설명
cdc |
특정 테이블에 대해 SP_OPO_TRACK_PREIMAGE 매개변수로 설정된 Oracle 변경 내역 타겟에 대한 전역 설정을 재정의합니다. CDC 카테고리를 참조하십시오. |
characterset |
복제된 데이터를 Open Target 타겟 데이터베이스에 게시하기 전에 지정된 캐릭터셋으로 변환하도록 Post 프로세스에 지시합니다. 캐릭터셋 카테고리를 참조하십시오. |
file |
파일 타겟의 속성을 설정합니다. 자세한 내용은 파일 카테고리를 참조하십시오. |
format |
타겟에 작성되는 데이터의 형식을 설정합니다. 자세한 내용은 형식 카테고리를 참조하십시오. |
json |
format record=json일 때 JSON 출력의 속성을 설정합니다. 자세한 내용은 JSON 카테고리를 참조하십시오. |
jms |
JMS 타겟의 속성을 설정합니다. 자세한 내용은 JMS 카테고리 를 참조하십시오. |
kafka |
Kafka 타겟의 속성을 설정합니다. 자세한 내용은 kafka 카테고리를 참조하십시오. |
metadata |
SharePlex에 의해 복제되는 데이터에 metadata 속성을 추가합니다. 자세한 내용은 메타데이터 카테고리를 참조하십시오. |
resources |
타겟 시스템의 리소스에 영향을 미치는 매개변수를 설정합니다. 리소스 카테고리를 참조하십시오. |
규칙 | 필터 |
Oracle 변경 내역 타겟의 특정 테이블에 추적 규칙이나 필터를 적용하는 조건문을 지정합니다. 규칙 | 필터 카테고리를 참조하십시오. |
source |
Oracle 변경 내역 타겟에 대한 소스 식별자 속성을 설정합니다. 자세한 내용은 소스 카테고리를 참조하십시오. |
sql |
format record=sql일 때 SQL 출력의 속성을 설정합니다. 자세한 내용은 SQL 카테고리를 참조하십시오. |
CDC 카테고리
지원되는 타겟
Oracle 변경 내역 타겟
명령 옵션
target c.SID [queue queuename]
table tablename
{
set cdc preimage={yes | no}
reset cdc
show cdc
}
사용
특정 테이블에 대해 SP_OPO_TRACK_PREIMAGE 매개변수로 설정된 업데이트에 대한 전역 설정을 재정의합니다. 이는 업데이트 작업의 이전 이미지를 내역 테이블에서 추적할지 여부를 제어합니다. 유효한 값은 업데이트 이전 이미지를 추적하려면 yes이고, 이미지 이전 업데이트를 제외하려면 no입니다 .
캐릭터셋 카테고리
지원되는 타겟
Open Target 데이터베이스
명령 옵션
target r.database [queue queuename]
{
set characterset character_set |
reset characterset character_set |
show characterset character_set
}
사용
복제된 데이터가 타겟 데이터베이스에 게시되기 전에 지정된 캐릭터셋으로 변환될 로컬 Oracle 클라이언트로 보내도록 Post 프로세스에 지시합니다. 지정된 캐릭터셋은 Open Target 타겟에 문자 데이터를 게시할 때 Post에서 사용하는 기본 유니코드 캐릭터셋을 재정의합니다.
UTF8-UTF8 이모티콘 복제는 Oracle-Open Poster에 적합하게 작동합니다. 그러나 이러한 시나리오에서 이모티콘 문자를 non-Oracle 타겟에 복제하기 위해 UTF8 형식(예: CESU8)이 아닌 Oracle 소스 데이터베이스에 이모티콘 문자를 삽입하는 경우, 다음 구성 설정을 타겟 SharePlex 인스턴스에 적용해야 합니다.
-
데이터 변환을 위한 타겟에 Oracle 클라이언트를 설치합니다.
-
SP_OPX_NLS_CONVERSION 매개변수를 1(기본값)로 설정합니다.
-
데이터를 타겟 DB에 필요한 유효한 UTF8 바이트 시퀀스로 변환하기 위한 타겟 명령을 사용하여 타겟 캐릭터셋을 AL32UTF8로 설정합니다.
참고: 이 옵션을 사용하려면 타겟 시스템에 Oracle 클라이언트가 있어야 합니다. 자세한 내용은 SharePlex 설치 및 설정 안내서의 Open Target 체크리스트 섹션을 참조하십시오.
character_set |
타겟 캐릭터셋에 해당하는 Oracle로, 해당 Oracle 이름으로 지정됩니다. |
유니코드 |
예
GB2312 캐릭터셋의 데이터를 타겟에 게시하려면 Oracle ZHS16GBK 캐릭터셋을 지정합니다.
target r.mymss set characterset ZHS16GBK
파일 카테고리
지원되는 타겟
File
명령 옵션
target x.file [queue queuename]
{
set file property=value |
reset file [property] |
show file
}
사용
파일 타겟의 속성을 설정합니다.
location=pathname |
파일을 생성할 SharePlex variable-data 디렉토리 아래의 경로 이름 |
opx |
max_records=number |
파일을 전환하기 전에 레코드 수로 측정된 활성 파일의 최대 크기 |
50,000 |
max_size=megabytes |
파일을 전환하기 전에 메가바이트로 측정된 파일의 최대 크기 |
50 |
max_time=seconds |
파일을 전환하기 전에 대기할 최대 시간(초) |
300 |
record_length=number |
레코드의 최대 크기(문자 수) |
132 |
예
target x.file set file max_size=320
형식 카테고리
지원되는 타겟
File
Kafka
명령 옵션
target x.{file | kafka} [queue queuename]
{
set format property=value |
reset format [property] |
show format
}
사용
타겟에 작성되는 데이터의 형식을 설정합니다.
date=format |
날짜 형식 |
yyyy-MM-dd HH:mm:ss |
decimal=character |
10진수 문자 |
.(기간) |
enotation=notation |
지수 표기법 |
14 |
record=record_format |
출력 레코드의 형식입니다. 유효한 값은 sql, xml 또는 json입니다. |
xml |
timestamp=format |
타임스탬프 형식 |
yyyy-MM-ddTHH:mm:ss.ffffffffff |
예
target x.file set format record=sql
target x.kafka set format record=json
출력 형식에 대한 설명
다음은 format record=record_format에서 제공하는 출력 형식에 대한 설명입니다.
SQL 레코드 형식
SQL 형식 파일의 모든 트랜잭션은 SQL 파일 내의 트랜잭션 시퀀스와 고유 트랜잭션 ID를 포함하는 주석으로 시작됩니다. SQL 파일 끝에 있는 주석 줄에는 파일의 줄 수가 표시됩니다. 예를 들어 다음은 하나의 트랜잭션이 포함된 SQL 파일입니다. 이 예에서 트랜잭션 ID는 2-113319입니다. 파일에는 9개의 줄이 있습니다.
/installed/vardir> cat opx/0000000010_20140305140820_legacy.sql
-- 0000000001 2-113319 03052014140813 03052014140813
DELETE FROM "ROBIN"."TEST_TYPES" WHERE ORA_NUMBER = '22345' AND ROWNUM = 1;
INSERT INTO "ROBIN"."TEST_TYPES" (ORA_NUMBER, ORA_DATE, ORA_RAW, ORA_ROWID,
ORA_FLOAT, ORA_CHAR, ORA_VARCHAR2, ORA_TIMESTAMP, ORA_TIMESTAMP_TZ,
ORA_TIMESTAMP_LTZ) VALUES('22345', '08132066000000', '0123456789ABCDEF'
, 'AAAAAAAAAAAAAAAAAA', '12350', 'Character ', 'Variable data'
, '10201998021300.22000', '06172002080000.00000', '06172002160000.00000');
COMMIT;
-- EOF 0000000009
XML 레코드 형식
XML 형식은 더 쉽게 사용할 수 있도록 작업 및 스키마 "유형"으로 분리됩니다. 이러한 유형은 XSD 관점에서 볼 때 실제로 동일하며 별개의 유형이 아닙니다. 템플릿 XML은 가능한 모든 특성과 요소를 나타냅니다. 개별 XML은 지원되는 각 작업에 대한 최소한의 출력을 나타냅니다.
시작 후 Post가 특정 테이블에 대한 변경 레코드를 처음 작성할 때 먼저 해당 테이블에 대한 스키마 레코드를 작성합니다. 각 스키마 레코드에는 테이블 이름과 각 컬럼의 관심 있는 세부 정보가 포함되어 있습니다. 스키마 레코드는 해당 스키마가 변경되지 않는 한 Post 실행 중에 각 테이블에 대해 한 번만 작성되며 그런 다음, 새 스키마 레코드가 작성됩니다. Post가 중지되었다가 시작되면 Post가 해당 변경 레코드를 수신하므로 각 테이블에 대해 스키마 레코드가 한 번씩 다시 작성됩니다.
스키마 레코드 템플릿
<?xml version="1.0" encoding="UTF-8" ?>
<?opentarget version="1.0" ?>
<opentarget>
<txn
id="xs:integer"
oracleTxnId="xs:string"
commitTime="xs:dateTimeStamp" />
<tbl
name="xs:string"
utcOffset="xs:integer"
<cmd ops="schema">
<schema>
<col
name="xs:string"
xmlType="xs:string"
key="xs:boolean"
nullable="xs:boolean"
length="xs:integer"
/>
</schema>
</cmd>
</tbl>
</opentarget>
표1: 스키마 템플릿 설명(* = 선택 사항)
txn |
|
트랜잭션 메타데이터 |
|
id |
현재 트랜잭션의 ID |
|
oracleTxnId* |
Oracle 트랜잭션 ID |
|
commitTime* |
트랜잭션 커밋 타임스탬프 |
tbl |
|
테이블 메타데이터 |
|
name |
테이블의 정규화된 이름 |
|
utcOffset |
로그의 UTC 오프셋 |
cmd |
|
작업 메타데이터(스키마의 경우 작업이 없음) |
|
ops |
이 테이블에 대해 생성된 레코드 유형. 스키마의 경우 값은 schema |
schema |
|
컬럼 메타데이터 |
col |
|
컬럼의 메타데이터(이러한 요소 중 하나가 테이블의 모든 레코드에 나타남) |
|
name |
컬럼 이름 |
|
xmlType |
XML 데이터 유형 |
|
key |
키 플래그(true, false) |
|
nullable |
null 허용 플래그 |
|
length |
컬럼 길이 |
작업 레코드 템플릿
<?xml version="1.0" encoding="UTF-8" ?>
<?opentarget version="1.1" ?>
<opentarget>
<txn
id="xs:integer"
msgIdx="xs:integer"
msgTot="xs:integer"
oracleTxnId="xs:string"
commitTime="xs:dateTimeStamp"
userId="xs:string" />
<tbl
name="xs:string"
<cmd ops="xs:string">
<row id="xs:string">
<col name="xs:string"></col>
<lkup>
<col name="xs:string"></col>
</lkup>
</row>
</cmd>
</tbl>
</opentarget>
표2: 작업 템플릿 설명(* = 선택 사항)
txn |
|
작업에 대한 트랜잭션 메타데이터 |
|
id |
현재 트랜잭션의 ID |
|
msgIdx |
트랜잭션에서 현재 레코드의 인덱스 |
|
msgTot* |
트랜잭션의 총 메시지 수 |
|
oracleTxnId* |
SCN(System Change Number)에서 가져온 Oracle 트랜잭션 ID |
|
commitTime* |
트랜잭션 커밋 타임스탬프 |
|
userId* |
작업을 수행한 사용자 ID |
tble |
|
테이블 메타데이터 |
|
name |
정규화된 테이블 이름 |
cmd |
|
작업 메타데이터 |
|
ops |
작업 유형(Insert, Update, Delete, Truncate) |
row |
|
작업에서 변경된 행의 메타데이터 |
|
id |
Oracle ROWID |
col |
|
컬럼의 데이터 변경(작업에서 변경된 모든 컬럼에 대해 이러한 요소 중 하나가 나타남) |
|
name |
해당 컬럼의 이후 값이 있는 컬럼 이름 |
lkup |
|
업데이트 및 삭제 작업에 사용할 이전 이미지 |
col |
|
컬럼의 이전 이미지(작업에서 변경된 모든 컬럼에 대해 이러한 요소 중 하나가 나타남) |
|
name |
해당 컬럼에 대한 이전 값 또는 키 값(작업에 따라 다름)이 있는 컬럼 이름 |
참고: id 및 msgIdx 특성은 함께 작업을 고유하게 식별합니다.
지원되는 데이터 유형
Oracle 데이터 유형이 XML로 변환되는 방법을 보여주는 차트는 SharePlex 릴리스 노트를 참조하십시오.
샘플 XML 레코드
소스 테이블
샘플 작업이 생성되는 테이블입니다.
SQL> desc products
Name |
Null? |
Type |
PRODUCT_ID |
NOT NULL |
NUMBER |
DESCRIPTION |
|
VARCHAR2(600) |
PRICE |
|
NUMBER |
소스 DML 작업
insert into products values (230117, ‘Hamsberry vintage tee, cherry’, 4099);
commit;
update products set price=3599 where product_id=230117 and price=4099;
commit;
delete products where product_id=230117;
commit;
truncate table products;
스키마 레코드
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218316945" commitTime="2014-10-10T13:18:43" userId="85" oracleTxnId="3.10.1339425" />
<tbl name="MFG.PRODUCTS" utcOffset="-5:00">
<cmd ops="schema">
<schema>
<col name="PRODUCT_ID" xmlType="decimal" key="true" nullable="false" length="22" />
<col name="DESCRIPTION" xmlType="string" key="false" nullable="true" length="600" />
<col name="PRICE" xmlType="decimal" key="false" nullable="true" length="22" />
</schema>
</cmd>
</tbl>
</opentarget>
삽입 레코드
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218316945" msgIdx="1" msgTot="1" commitTime="2014-10-10T13:18:43" userId="85" oracleTxnId="3.10.1339425" />
<tbl name="MFG.PRODUCTS">
<cmd ops="ins">
<row id="AAAmDbAAEAAApRrAAA">
<col name="PRODUCT_ID">230117</col>
<col name="DESCRIPTION">Hamsberry vintage tee, cherry</col>
<col name="PRICE">4099</col>
</row>
</cmd>
</tbl>
</opentarget>
업데이트 레코드
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218318728" msgIdx="1" msgTot="1" commitTime="2014-10-10T13:19:12" userId="85" oracleTxnId="1.17.970754" />
<tbl name="MFG.PRODUCTS">
<cmd ops="upd">
<row id="AAAmDbAAEAAApRrAAA">
<col name="PRICE">3599</col>
<lkup>
<col name="PRODUCT_ID">230117</col>
<col name="PRICE">4099</col>
</lkup>
</row>
</cmd>
</tbl>
</opentarget>
삭제 레코드
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218319446" msgIdx="1" msgTot="1" commitTime="2014-10-10T13:19:25" userId="85" oracleTxnId="5.23.1391276" />
<tbl name="MFG.PRODUCTS">
<cmd ops="del">
<row id="AAAmDbAAEAAApRrAAA">
<lkup>
<col name="PRODUCT_ID">230117</col>
</lkup>
</row>
</cmd>
</tbl>
</opentarget>
자르기 레코드
<?xml version="1.0" encoding="UTF-8"?>
<?opentarget version="1.1"?>
<opentarget>
<txn id="2218319938" commitTime="1988-01-01T00:00:00" userId="85" oracleTxnId="11.4.939801" />
<tbl name="MFG.PRODUCTS">
<cmd ops="trunc" />
</tbl>
</opentarget>
JSON 레코드 형식
참고: 이 형식은 출력을 더 읽기 쉽게 만들기 위해 target x.kafka set json indent=2가 사용되었다는 점을 제외하면 기본 출력입니다.
샘플 작업이 생성되는 테이블입니다.
SQL> desc products
Name |
Null? |
Type |
PRODUCT_ID |
NOT NULL |
NUMBER |
DESCRIPTION |
|
VARCHAR2(600) |
PRICE |
|
NUMBER |
소스 DML 작업
insert into products values (230117, ‘Hamsberry vintage tee, cherry’, 4099);
commit;
update products set price=3599 where product_id=230117 and price=4099;
commit;
delete products where product_id=230117;
commit;
truncate table products;
스키마 레코드
{
"meta":{
"op":"schema",
"table":""
},
"schema":{
"name":"BILL.PRODUCTS",
"utcOffset":"-7:00",
"PRODUCT_ID":{
"jsonType":"decimal",
"num":1,
"key":1,
"nullable":1,
"length":22,
"precision":0,
"scale":0,
"src_name":"PRODUCT_ID"
},
"DESCRIPTION":{
"jsonType":"string",
"num":2,
"key":1,
"nullable":1,
"length":600,
"precision":0,
"scale":0,
"src_name":"DESCRIPTION"
},
"PRICE":{
"jsonType":"decimal",
"num":3,
"key":1,
"nullable":1,
"length":22,
"precision":0,
"scale":0,
"src_name":"PRICE"
}
}
}
삽입 레코드
{
"meta":{
"op":"ins",
"table":"BILL.PRODUCTS"
},
"data":{
"PRODUCT_ID":230117,
"DESCRIPTION":"Hamsberry vintage tee, cherry",
"PRICE":4099
}
}
업데이트 레코드
{
"meta":{
"op":"upd",
"table":"BILL.PRODUCTS"
},
"data":{
"PRICE":3599
},
"key":{
"PRODUCT_ID":230117,
"DESCRIPTION":"Hamsberry vintage tee, cherry",
"PRICE":4099
}
}
삭제 레코드
{
"meta":{
"op":"del",
"table":"BILL.PRODUCTS"
},
"data":{
"PRODUCT_ID":230117,
"DESCRIPTION":"Hamsberry vintage tee, cherry",
"PRICE":3599
}
}
자르기 레코드
{
"meta":{
"op":"truncate",
"table":"BILL.PRODUCTS"
}
}
JMS 카테고리
지원되는 타겟
JMS
명령 옵션
target x.jms [queue queuename]
{
set jms property=value |
reset jms [property] |
show jms
}
사용
JMS 타겟의 속성을 설정합니다.
factory_class=factory_class |
필수. 팩토리 클래스의 정규화된 클래스 이름입니다. 공급자에 대한 초기 컨텍스트 팩토리의 클래스 이름을 지정하기 위해 JNDI 환경 속성 java.naming.factory.initial을 설정합니다. |
None |
provider_url=url |
필수. 객체 이름 구성 요소가 없는 RMI URL입니다. 이는 JNDI 환경 속성 java.naming.provider.url을 설정하여 초기 컨텍스트로 사용되는 레지스트리 위치를 지정합니다.
JMS 공급자 및 URL 유형에 따라 올바른 형식을 사용합니다. 예를 들어 LDAP를 사용하는 경우 URL은 다음과 유사할 수 있습니다.
ldap://hostname.company.com/contextName
JMS 공급자 URL은 JMS 공급자 관리자에게 문의하십시오. |
None |
lib_location=path |
필수. 클라이언트 라이브러리 파일을 설치한 디렉토리의 경로입니다. |
None |
destination={queue | topic} |
메시징 도메인. 유효한 값은 queue(포트-포트) 또는 topic(게시자-구독자 모델)입니다. |
큐 |
factory_name=factory_name |
JNDI 연결 팩토리 조회의 이름입니다. 쉼표로 구분된 목록을 사용하여 여러 이름을 지정할 수 있습니다(예: jndi.name1, jndi.name2). |
None |
user=user |
JMS에 연결 중인 사용자의 이름입니다. 인증이 필요하지 않은 경우에는 이 속성과 비밀번호 옵션을 생략합니다. |
None |
password=password |
JMS 사용자의 비밀번호입니다. |
None |
queuename=JMS_topic_queuename |
JMS 큐 또는 항목의 이름입니다. |
OpenTarget |
persistent={yes | no} |
yes는 보내기 작업의 일환으로 메시지를 디스크 스토리지에 기록합니다.
no는 로깅을 방지합니다. |
yes |
session_transacted ={yes | no} |
no는 복제된 모든 메시지에 대해 JMS 커밋을 발행하여 각 메시지를 즉시 표시하고 사용할 수 있도록 Post에 지시합니다. 이 설정은 기본값입니다.
yes는 트랜잭션 방식으로 작동하도록 Post에 지시합니다. 이 모드에서 Post는 다음을 기반으로 간격을 두고 JMS 커밋(메시지를 표시하고 사용할 수 있도록 만들기 위해)을 실행합니다.
|
no |
properties |
사용 중인 JMS 공급자가 SharePlex에서 제공하는 기본 속성 집합이 포함된 메시지를 사용할 수 없는 경우에 이 옵션을 사용합니다. 속성을 제거하거나 추가할 수 있습니다. 속성을 쉼표로 구분된 목록으로 제공합니다.
- 속성을 추가하려면 name=value로 지정합니다.
- SharePlex 속성을 제거하려면 이름 앞에 대시를 붙입니다. 예를 들어 이 문자열은 -JMSXDeliveryCount,-JMSXGroupSeq라는 두 개의 SharePlex 속성을 제거합니다.
|
None |
client_id |
사용 중인 JMS 공급자가 기본 SharePlex 클라이언트 ID가 포함된 메시지를 사용할 수 없는 경우에 이 옵션을 사용합니다. 이 값을 공급자가 허용하는 클라이언트 ID로 설정합니다. |
None |
commit_frequency |
Post가 transactional 스타일로 JMS 서버에 게시하도록 구성된 경우 이 옵션을 사용합니다(session_transacted 속성의 지시에 따라 모든 메시지를 실행한 후가 아니라 간격을 두고 JMS 커밋 실행). 이 매개변수는 JMS 커밋 간의 간격을 지정합니다. 이는 SP_OPX_READRELEASE_INTERVAL 매개변수와 함께 작동합니다. 유효한 값은 1부터 양의 정수까지입니다. |
1500 |
예
target x.jms set jms queuename=SharePlexJMS
JSON 카테고리
지원되는 타겟
File(format record=json)
Kafka(format record=json)
명령 옵션
target x. {file | kafka } [queue queuename]
{
set json property=value |
reset json [property] |
show json
}
사용
format record =json일 때 JSON 출력의 속성을 설정합니다.
before |
-
yes로 설정하면 변경된 행의 이전 이미지가 포함됩니다. 줄 끝에 이전 이미지가 있는 다음과 유사한 레코드가 생성됩니다. {"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C2":"Bye"},
"key":{"C1":"1","C2":"Hello"}}
{"meta":{"op":"upd","table":"BILL.JSON"},
"data":{"C1":"2"},"key":{"C1":"1"}}
-
no로 설정하면 변경된 행의 이전 이미지가 제외됩니다. 다음과 유사한 레코드가 생성됩니다. {"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C2":"Bye"}}
{"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C1":"2"}}
법적 고지 사항: 업데이트 작업의 경우 업데이트된 레코드에 대한 키를 보려면 "before"과 "yes" 값을 함께 사용해야 합니다. |
yes |
commit |
중요! commit을 yes로 설정하면 타겟 항목이 하나만 있을 수 있습니다. |
yes |
ddl |
-
yes로 설정하면 ALTER TABLE 명령이 포함됩니다. 다음과 유사한 레코드가 생성됩니다. {"meta":{"op":"ddl","table":"BILL.JSON"},
"sql":{"ddl":"alter table \"BILL\".\"JSON\""}
- No로 설정하면 ALTER TABLE 명령이 생략됩니다.
|
yes |
eol |
yes로 설정하면 JSON 문서 끝에 줄 끝 문자가 포함됩니다.
no로 설정하면 줄 끝 문자가 제외됩니다. |
yes |
indent |
레코드의 들여쓰기 수준을 제어합니다.
-
0 값은 다음과 같이 전체 레코드를 한 줄에 배치합니다.
{"meta":{"op":"ins","table":"BILL.JSON"}, "data":{"C1":"1","C2":"Hello ", "C3":"There","C4":"2017-03-20T09:46:34", "C5":"2017-03-20T09:46:34.735370000"}}
-
0보다 큰 값은 지정된 문자 수만큼 메타데이터(포함된 경우)와 데이터 줄을 들여쓰기합니다. 다음 예(indent= 4)와 같이 레코드를 논리적으로 여러 줄로 분할합니다. {
"meta":{
"op":"ins",
"table":"BILL.JSON"
},
"data":{
"C1":"1",
"C2":"Hello",
"C3":"There",
"C4":"2017-03-20T10:02:37",
"C5":"2017-03-20T10:02:37.456949000"
}
}
|
0 |
meta |
-
yes로 설정하면 JSON 레코드의 메타데이터 섹션이 포함됩니다. 다음과 유사한 레코드가 생성됩니다. {"meta":{"op":"ins","table":"BILL.JSON"},
"data":{"C1":"1","C2":"Hello","C3":"There",
"C4":"2017-03-20T10:04:44",
"C5":"2017-03-20T10:04:44.957758000"}}
{"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C2":"Bye"}}
{"meta":{"op":"upd","table":"BILL.JSON"},"data":{"C1":"2"}}
{"meta":{"op":"del","table":"BILL.JSON"},"data":{"C1":"2"}}
{"meta":{"op":"commit","table":""}}
-
no로 설정하면 메타데이터 섹션이 생략되며, 다음과 유사한 레코드가 생성됩니다. {"data":{"C1":"1","C2":"Hello","C3":"There",
"C4":"2017-03-20T10:05:09",
"C5":"2017-03-20T10:05:09.268094000"}}
{"data":{"C2":"Bye"}}
{"data":{"C1":"2"}}
{"data":{"C1":"2"}}
{}
참고: 레코드에 표시되는 메타데이터 필드를 지정하려면 set Metadata property 명령을 사용합니다. 메타데이터 카테고리를 참조하십시오.
예:
target x.kafka set metadata time,userid,op,scn |
yes |
schema |
- yes로 설정하면 스키마 레코드가 포함됩니다.
-
no로 설정하면 스키마 레코드가 생략됩니다.
새로운 SharePlex 구성이 활성화되거나 테이블에 DDL 변경이 있을 때 복제 중인 객체에 대한 스키마 레코드가 생성됩니다. yes 값(indent=4 사용)은 다음과 유사한 레코드를 생성합니다. {
"meta":{
"op":"schema",
"table":""
},
"schema":{
"name":"BILL.JSON",
"utcOffset":"-7:00",
"C1":{
"jsonType":"decimal",
"num":1,
"key":1,
"nullable":0,
"length":22,
"precision":0,
"scale":0,
"src_name":"C1"
},
"C2":{
"jsonType":"string",
"num":2,
"key":0,
"nullable":1,
"length":10,
"precision":0,
"scale":0,
"src_name":"C2"
},
"C3":{
"jsonType":"string",
"num":3,
"key":0,
"nullable":1,
"length":10,
"precision":0,
"scale":0,
"src_name":"C3"
} }
} |
yes |
예
target x.kafka set json meta=no
kafka 카테고리
지원되는 타겟
Kafka
명령 옵션
target x.kafka [queue queuename]
{
set kafka property=value |
reset kafka [property] |
show kafka
}
사용
Kafka 타겟의 속성을 설정합니다.
broker=broker |
필수. Kafka 브로커의 호스트 및 포트 번호, 또는 여러 브로커의 쉼표로 구분된 목록입니다. 이 목록은 Kafka 클러스터에 대한 부트스트랩입니다. Post가 이러한 브로커 중 하나에 연결할 수 있는 한 클러스터의 다른 브로커를 검색합니다. |
localhost:9092 |
client_id=ID |
선택 사항. 호출 추적을 지원하기 위해 Post가 각 요청에서 보내는 사용자 정의 문자열입니다. |
None |
compression.code={none, gzip, snappy} |
선택 사항. Kafka에서 데이터를 압축할지 여부를 제어합니다. 옵션은 none, gzip 또는 snappy입니다. |
None |
partition={number | rotate | rotate trans| messagekey} |
필수. 다음 중 하나입니다.
참고:
-
LOB 및 CLOB 컬럼은 Kafka 파티션 키로 간주되지 않습니다.
-
기본 키, 고유 키, 복합 키 또는 고유 인덱스가 없는 테이블의 경우 모든 컬럼(LOB 및 CLOB 컬럼 제외)은 키 컬럼으로 간주됩니다. 이러한 테이블에 대해 변경 쿼리를 수행하면 DDL 문이 모든 파티션에 복제되고 후속 DML 문은 기존 컬럼을 기반으로 특정 파티션으로 전송됩니다.
-
복제 테이블에 키가 정의되어 있지 않으면 SharePlex는 모든 테이블 컬럼을 Kafka messagekey로 간주합니다. 키가 아닌 테이블의 경우 SharePlex 사용자 정의 키를 사용하는 것이 좋습니다. 자세한 내용은 SharePlex 관리 안내서의 고유 키 정의: PostgreSQL-PostgreSQL 섹션을 참조하십시오.
-
여러 테이블이 복제에 포함된 경우, 특정 테이블이 다른 파티션 유형을 갖도록 하고 나머지 테이블은 메시지 키를 기반으로 파티셔닝되었다면 해당 특정 테이블에 대해 명명된 Post 큐를 정의할 수 있습니다.
예:
target x.kafka queue <queue_name> set kafka partition={number/rotate/rotate trans}
나머지 테이블에는 아래 명령을 사용합니다.
target x.kafka set kafka partition=messagekey |
중요:
messagekey를 기반으로 파티셔닝하는 경우 키 정보가 포함되지 않은 메시지는 Kafka의 내부 해시 함수에 따라 매핑됩니다. 이러한 메시지에는 커밋, 스키마, 롤백, 저장점 및 DDL 문이 포함될 수 있습니다.
복제 중에 파티션 수가 늘어나면 파티션에 대한 기존 키 매핑이 더 이상 유효하지 않게 됩니다.
인덱스 역할을 하는 컬럼이 몇 개 있고 다른 제약 조건이 정의되지 않은 테이블의 경우, 해당 인덱스를 SharePlex 구성 파일의 고유 키로 사용합니다.
예를 들어 다음 테이블에는 ID와 NAME이라는 두 컬럼에 정의된 고유 인덱스가 있습니다.
create table mytable(ID NUMBER(25,2),NAME CHAR(200),COL_VARCHAR2 VARCHAR2(400),COL_RAW RAW(1000));
CREATE INDEX indx_mytable ON mytable(ID,NAME);
SharePlex 구성 파일에서 인덱스 컬럼을 고유 키로 정의합니다.
datasource:o.SID |
src.mytable |
!key(ID,NAME) |
host |
자세한 내용은 SharePlex 관리 안내서의 고유 키 정의: Oracle-Oracle 섹션을 참조하십시오.
제약 조건이나 인덱스가 정의되지 않은 테이블의 경우 사용자는 SharePlex에서 구성하는 동안 고유 키를 정의할 수 있습니다.
복합 키가 있는 테이블의 경우 키 값 중 하나라도 수정되면 수정 메시지가 현재 파티션에 배치되고, 후속 메시지는 동일한 파티션에 할당되거나 할당되지 않을 수 있습니다. | |
0 |
request.required.acks=value |
선택 사항. Kafka 클라이언트 매개변수입니다. 기본적으로 -1 값으로 설정됩니다. 이는 all을 의미합니다. 이 주제에 대해서는 Kafka 문서를 참조하십시오. all은 실제로 모든 동기화 복제본을 의미하기 때문입니다. 이 매개변수는 min.insync.replicas 브로커 매개변수와 함께 사용하여 가용성과 데이터 일관성 간의 동작을 조정할 수 있습니다.
중요: 이러한 설정에 따라 Kafka 생성자(이 경우 SharePlex)와 Kafka 클러스터 간에 데이터가 손실될 수 있습니다. |
-1 |
topic=topic_name |
필수. 타겟 Kafka 항목의 이름입니다.
이 문자열에는 특수 시퀀스 %o 또는 %t가 포함될 수 있습니다. %o 시퀀스는 복제되는 테이블의 소유자 이름으로 대체됩니다. %t 시퀀스는 복제되는 테이블의 테이블 이름으로 대체됩니다. 이 기능은 'true'로 설정된 auto.create.topics.enabled의 Kafka 서버 설정과 함께 사용할 수 있습니다. 또한 default.replication.factor 및 num.partitions에 대한 서버 설정을 확인하십시오. 항목이 자동 생성될 때 기본값으로 사용되기 때문입니다.
중요! 여러 항목을 사용하는 경우 target 명령을 사용하여 다음 속성도 설정해야 합니다.
-
출력은 JSON 형식이어야 합니다. format 카테고리의 record 속성을 json으로 설정합니다.
target x.kafka set format record=json
-
커밋을 비활성화해야 합니다. json 카테고리의 commit 속성을 no로 설정합니다.
target x.kafka set json commit=no | |
shareplex |
* 지연 시간을 피하기 위해 Post가 들어오는 메시지를 더 이상 감지하지 않으면 임계값이 충족될 때까지 기다리지 않고 즉시 Kafka에 패킷을 보냅니다.
예
sp_ctrl> target x.kafka set kafka broker=host1:9092,host2:9092,host3:9092
sp_ctrl> target x.kafka set kafka topic=shareplex
메타데이터 카테고리
지원되는 타겟
Oracle 복제 타겟
Oracle 변경 내역 타겟
HANA 복제 타겟
File
JMS
Kafka
명령 옵션
target {o.SID | c.SID | r.database | x.file | x.jms | x.kafka} [queue queuename]
{
set metadata [colname:]property[, ...] |
reset metadata |
show metadata
}
사용
target 명령을 set metadata와 함께 사용하면 데이터베이스 타겟, XML 또는 JSON 파일 타겟, JMS 타겟, Kafka 타겟에 대해 설정된 기본 메타데이터 속성을 재정의할 수 있습니다. 이러한 모든 타겟 유형은 Post 출력에 메타데이터를 제공합니다.
- Oracle 및 HANA 복제 타겟: Oracle 및 HANA 복제 타겟에 대해 메타데이터를 구성할 수 있습니다. 메타데이터 컬럼은 타겟에 있어야 합니다. SharePlex는 메타데이터 컬럼을 추가하지 않습니다.
- Oracle 변경 내역 타겟: 타겟 지정이 수행되지 않은 경우 Post는 복제를 시작하기 전에 기본 이름에 있어야 하는 기본 메타데이터 컬럼을 업데이트합니다. 다음 표에는 기본적으로 변경 내역 타겟에 속성이 포함된 경우 기본 컬럼 이름이 나와 있습니다. 메타데이터를 더 추가하거나 컬럼(colname 옵션 사용)에 사용자 지정 이름을 할당하려면 set metadata만 사용합니다.
- XML 입력(JMS, Kafka, 파일)을 지원하는 타겟의 경우 메타데이터는 XML 스키마에 따라 형식이 지정됩니다. 다음 표에 표시된 대로 set metadata를 사용할 필요 없이 특정 메타데이터가 기본적으로 출력에 포함됩니다. 메타데이터를 더 추가하려면 set metadata만 사용합니다.
- JSON 입력(Kafka)을 지원하는 대상의 경우 json Meta=no를 설정하지 않으면 op 및 table 속성이 기본적으로 포함됩니다.
변경 내역 타겟 데이터베이스를 지원하도록 SharePlex를 구성하는 방법에 대한 자세한 내용은 SharePlex 관리자 안내서를 참조하십시오.
여러 메타데이터 속성을 설정하려면 해당 속성을 쉼표로 구분된 목록으로 지정합니다.
time |
Oracle에서 제공한 대로 작업이 소스에 적용된 시간입니다.
중요! Oracle 버전 11g 이상에서는 시간이 트랜잭션 경계 레코드(예: 트랜잭션 시작)에만 나타납니다. Oracle 리두 로그의 선형 설계와 SharePlex가 트랜잭션 순서로 작업을 복제하는 방식을 기반으로 SharePlex는 다른 타임스탬프가 있는 레코드가 있을 때까지 기존 레코드에 포함된 타임스탬프를 후속 레코드에 적용합니다.
기본 컬럼 이름: SHAREPLEX_SOURCE_TIME
데이터 유형: TIMESTAMP
이 속성은 기본적으로 XML 출력 및 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 및 XML 출력 |
userid |
작업을 수행한 사용자 ID
기본 컬럼 이름: SHAREPLEX_SOURCE_USERID
데이터 유형: NUMBER
이 속성은 기본적으로 XML 출력 및 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 및 XML 출력 |
op |
작업 유형(INSERT, UPDATE, DELETE, TRUNCATE, DROP COLUMN, UPDATE BEFORE, UPDATE AFTER). JMS 구현의 경우 이 필드는 항상 SPOps라는 필드로 XML 출력에 추가됩니다. 이를 JMS 속성에 추가하려면 명시적인 target 명령을 op 옵션과 함께 실행합니다.
기본 컬럼 이름: SHAREPLEX_SOURCE_OPERATION
데이터 유형: VARCHAR2
이 속성은 기본적으로 XML 및 JSON 출력과 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 및 XML 출력 |
scn |
작업이 적용된 경우의 소스 SCN
기본 컬럼 이름: SHAREPLEX_SOURCE_SCN
데이터 유형: NUMBER
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
HANA 복제 타겟
JSON 출력 |
rowid |
변경된 행의 ROWID
기본 컬럼 이름: SHAREPLEX_SOURCE_ROWID
데이터 유형: ROWID
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 출력 |
trans |
작업에 대한 트랜잭션 ID. JMS 구현의 경우 이 필드는 XML 출력과 JMS 속성 모두에 SPTxnId라는 필드로 추가됩니다.
기본 컬럼 이름: SHAREPLEX_SOURCE_TRANS
데이터 유형: VARCHAR2
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 출력 |
seq |
트랜잭션 내 작업 순서
기본 컬럼 이름: SHAREPLEX_OPERATION_SEQ
데이터 유형: NUMBER
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 출력 |
host |
소스 호스트의 이름 또는 IP 주소
기본 컬럼 이름: SHAREPLEX_SOURCE_HOST
데이터 유형: VARCHAR2
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 출력 |
posttime |
작업이 타겟에 게시된 시간 |
JSON 출력 |
queue |
SharePlex 큐의 이름
기본 컬럼 이름: SHAREPLEX_QUEUENAME
데이터 유형: VARCHAR2
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 출력 |
source |
타겟의 set source 옵션으로 설정된 사용자 정의 소스 식별자. 소스 카테고리를 참조하십시오.
기본 컬럼 이름: SHAREPLEX_SOURCE_ID
데이터 유형: VARCHAR2
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟
JSON 출력 |
changeid |
작업의 고유한 순차 ID
기본 컬럼 이름: SHAREPLEX_CHANGE_ID
데이터 유형: NUMBER
이 속성은 기본적으로 변경 내역 테이블에 포함됩니다. |
Oracle 복제 타겟
변경 내역 타겟 |
size |
트랜잭션의 작업 수
|
JSON 출력
Kafka |
table |
타겟 테이블의 이름. 타겟 테이블의 이름은 SPTblName이라는 필드로 JMS 속성에 추가됩니다.
이 속성은 기본적으로 JSON 출력에 포함됩니다. |
JMS
JSON 및 XML 출력 |
idx |
트랜잭션 내에서 이 작업의 인덱스. 이는 SPMSgIdx라는 필드로 JMS 속성에 추가됩니다. JMS 속성에서 m/n 형식으로 지정됩니다. 여기서, n은 트랜잭션의 총 작업 수이고 m은 트랜잭션 내의 작업 번호입니다. |
JMS |
JMS 및 Kafka 세트 메타데이터 예
다음은 소스의 IP 주소 또는 호스트 이름, SharePlex 큐의 이름, 트랜잭션의 작업 수를 JMS 타겟의 출력에 추가하도록 모든 Post 프로세스를 설정합니다.
target x.jms set metadata host, queue, size
또는...
target x.kafka set metadata host, queue, size
Oracle 세트 메타데이터 예
다음 예에서는 작업 시간과 작업을 실행한 사용자 ID를 Timestamp 및 User 컬럼(두 컬럼 모두 대소문자를 구분하는 사용자 정의 이름임)에 추가하도록 myqueue1 큐와 연결된 Post 프로세스를 설정합니다.
target c.targSID queue myqueue1 set metadata time:"Timestamp", userid:"User"
리소스 카테고리
지원되는 타겟
모든 타겟
명령 옵션
target {o. | r. | x. | c.} target [queue queuename]
{
set resources property=value |
reset resources [property] |
show resources [for datastore]
}
사용
타겟 시스템의 리소스에 영향을 미치는 매개변수를 설정합니다.
commit_frequency=number_of_operations |
Post가 커밋을 실행한 후 최대 작업 수를 지정합니다. 1보다 큰 정수일 수 있습니다. 대규모 트랜잭션을 두 개 이상의 작은 트랜잭션으로 나누는 데 사용할 수 있습니다. 각 트랜잭션에는 지정된 최대 number_of_Operations가 포함됩니다. 이 옵션은 트랜잭션당 허용되는 행 잠금 수와 같이 대규모 트랜잭션에 영향을 미치는 리소스 제한을 해결할 수 있습니다.
참고: "commit_frequency" 속성은 JMS 타겟에 대해서만 지원됩니다. |
50000 |
max_active_statements=number_of_cursors |
Post가 한 세션에서 타겟 데이터베이스에 대해 처리할 수 있는 동시 활성 SQL 문의 수를 지정합니다. 데이터베이스 또는 클라이언트 드라이버에서 허용하는 최대 활성 문 수까지의 정수일 수 있습니다. SP_OPX_SQL_CACHE_DISABLE 매개변수가 0(활성화)으로 설정된 경우 Post에서만 사용됩니다. |
16 |
예
target r.mydb queue q1 set resources commit_frequency=10000
target r.mydb queue q1 set resources max_active_statements=10
규칙 | 필터 카테고리
지원되는 타겟
Oracle 변경 내역 타겟
명령 옵션
target c.SID [queue queuename]
table tablename
{
set {rule | filter} { 'column_condition' | !filename }
reset {rule | filter}
show {rule | filter}
}
사용
특정 테이블에 추적 규칙이나 필터를 적용하는 조건문을 지정합니다. 업데이트 작업에 적용됩니다. 관심이 없는 데이터를 제외하면서 추적할 데이터를 타겟 테이블로 한정하는 조건부 논리를 적용합니다. 타겟 테이블당 하나의 규칙 또는 필터가 있을 수 있지만 중첩된 식을 괄호와 AND, OR 및 NOT 논리 연결과 결합하여 다양한 조건을 생성할 수 있습니다.
규칙 | 필터 |
- 규칙은 업데이트 작업이 column_condition과 일치하는 경우 경우에만 Post에 행을 삽입하도록 지시합니다. UPDATE가 컬럼 조건과 일치하지 않으면 행이 삭제됩니다.
- 필터는 UPDATE가 column_condition과 일치하지 않는 경우에만 Post에 행을 삽입하도록 지시합니다. UPDATE가 컬럼 조건과 일치하면 행이 삭제됩니다.
|
table tablename |
규칙 또는 필터를 설정 중인 타겟 테이블의 이름입니다. |
column_condition |
UPDATE 작업에서 충족해야 하는 조건부 논리입니다. column_condition은 전체 조건문을 나타내며 작은따옴표로 묶어야 합니다. 컬럼 조건은 각각 괄호로 묶인 다음과 같은 식 중 하나 또는 조합일 수 있습니다.
(column is changed)
(column is not changed)
([column1, column2, ...] matches change_list)
([column1, column2, ...] contains change_list)
여기서,
- column은 타겟 컬럼의 이름입니다. 목록에서 컬럼 이름을 구분하려면 쉼표를 사용하고 목록을 대괄호로 묶습니다.
- is changed는 지정된 컬럼이 업데이트 작업에서 변경되었음을 의미합니다.
- is not changed는 지정된 컬럼이 업데이트 작업에서 변경되지 않았음을 의미합니다.
- change_list 는 변경된 소스 컬럼의 논리적 표현입니다.
- matches change_list는 조건이 변경 목록과 정확히 일치하는 경우에 충족됩니다(변경 목록보다 적은 컬럼 없음, 변경 목록보다 많은 컬럼 없음, 동일한 이름).
- contains change_list는 조건이 변경 목록의 모든 컬럼을 포함하는 경우에 충족됩니다. 변경 목록은 조건 컬럼의 하위 집합일 수 있지만 변경 목록보다 많은 컬럼을 포함할 수는 없습니다. 이름이 동일해야 합니다.
|
!filename |
target 명령을 실행할 때 큰 컬럼 조건을 텍스트 파일에 저장한 다음, 전체 컬럼 조건 구문 대신 파일을 지정할 수 있습니다. |
참고: 규칙/필터 기능에는 일괄 및 직접 로드 작업이 지원되지 않습니다.
예
다음 명령은 식을 결합하여 여러 규칙을 설정하는 방법에 대한 몇 가지 예를 보여줍니다.
target c.mySIDtable mytable set rule '(col3 is not changed) and (col5 is not changed)'
target c.mySIDtable mytable set rule '([col1, col3] matches change_list)'
target c.mySIDtable mytable set rule 'not ([col2, col5] contains change_list)'
다음 표에서는 규칙 및 필터가 행을 포함하거나 삭제하는 다양한 방법을 보여줍니다.
rule = '(c2 is not changed)' |
c2 |
no |
rule = '(c2 is not changed)' |
c3 |
yes |
rule = '(c2 is changed)' |
c2 |
yes |
rule = '(c2 is changed or c4 is changed)' |
c1 |
no |
rule = '(c2 is changed or c4 is changed)' |
c1,c3,c5 |
no |
rule = '(c2 is changed or c4 is changed)' |
c2 |
yes |
rule = '(c2 is changed or c4 is changed)' |
c3,c4,c5 |
yes |
rule = '([c3,c6,c7,c8] matches change_list)' |
c3,c6,c7,c8 |
yes |
rule = '([c3,c6] matches change_list)' |
c3,c6,c7 |
no |
rule = '([c3,c6,c7] contains change_list)' |
c3,c6 |
yes |
rule = '([c3,c6] contains change_list)' |
c3,c8 |
no |
|
|
|
필터 |
업데이트된 컬럼 |
행 삽입 여부 |
filter = '(c2 is not changed)' |
c2 |
yes |
filter = '(c2 is not changed)' |
c3 |
no |
filter = '(c3 is changed and c4 is changed)' |
c1 |
yes |
filter = '(c3 is changed and c4 is changed)' |
c3,c4 |
no |
filter = '(c3 is changed and c4 is changed)' |
c1,c2,c3 |
yes |
filter = '([c3,c6,c7] matches change_list)' |
c3,c6 |
yes |
filter = '([c3,c6,c7] matches change_list)' |
c3,c6,c7 |
no |
filter = '([c3,c6] contains change_list)' |
c3,c6 |
no |
filter = '([c3,c6,c7] contains change_list)' |
c3,c8 |
yes |
소스 카테고리
지원되는 타겟
Oracle 변경 내역 타겟
명령 옵션
target c.SID [queue queuename]
{
set source sourceID |
reset source |
show source
}
사용
SHAREPLEX_SOURCE_ID 메타데이터 컬럼에 대한 사용자 정의 소스 식별자를 설정합니다. 타겟을 set metadata source 옵션과 함께 사용하여 이 컬럼을 채우도록 Post를 구성합니다. 단일 영숫자 문자열을 지정합니다.
예
다음은 여러 소스 데이터베이스의 데이터가 동일한 타겟 데이터베이스에 복제되는 구성을 지원하기 위해 set source를 사용하는 방법을 보여줍니다. 이 타겟 구성을 사용하면 각 Post 프로세스가 소스 데이터베이스에 따라 SHAREPLEX_SOURCE_ID 컬럼을 다른 소스 ID로 업데이트하여 타겟 데이터베이스의 데이터를 구별합니다. 이 예에서는 4개의 Post 프로세스를 사용합니다.
target c.target1 queue source718 set source east
target c.target1 queue source92 set source south
target c.target1 queue source101 set source west
target c.target1 queue source75 set source north
"source718" 큐의 Post 프로세스는 해당 스트림의 테이블에 대한 모든 삽입 또는 업데이트에 대해 SHAREPLEX_SOURCE_ID 컬럼을 "east" 값으로 업데이트합니다. "source92" 큐의 Post 프로세스는 다른 두 Post 프로세스에 대해서도 마찬가지로 SHAREPLEX_SOURCE_ID 컬럼을 "south" 값으로 업데이트합니다.
SQL 카테고리
지원되는 타겟
파일(format record=sql)
명령 옵션
target x.file [queue queuename]
{
set sql property=value |
reset sql [property] |
show sql
}
사용
formatrecord=sql일 때 SQL 출력의 속성을 설정합니다.
add_rownum={yes | no} |
행 번호를 포함하려면 yes, 제외하려면 no |
yes |
begin_transaction={yes | no} |
시작 트랜잭션 레코드를 포함하려면 yes, 제외하려면 no |
no |
comment=character |
주석을 표시하는 문자 |
-- |
concatenate=character |
문자열을 연결하는 문자 |
|| |
end_transaction={yes | no} |
종료 트랜잭션 레코드를 포함하려면 yes, 제외하려면 no |
no |
legacy={yes | no} |
SharePlex 8.6에서 필요합니다. 다음과 같은 레거시 SQL 날짜 및 타임스탬프 형식을 사용합니다.
MMDDYYYYHH24MISS 및 MMDDYYYYHH24MISS.FFFFFF(yes/no) |
no |
name_delimiter=character |
SID, 테이블, 소유자, 컬럼 이름을 구분하는 문자입니다. 이 값은 Post가 SQL_DELIMITER 설정에 대해 ODBC 드라이버를 쿼리할 때 반환되는 값을 재정의합니다. |
없음 |
record_terminator=character |
SQL을 종료하는 문자 |
; |
예
target x.file set sql comment=#