모든 페이지
1 / 3

Loading...

Loading...

Loading...

Mapping

본 장에서는 Map 파라미터를 통해 설정할 수 있는 Resolution Rule (DCR)과 Schema Mapping을 위한 DDL 설정에 대해 알아본다. Mapping은 기본적으로 테이블명, 컬럼명에 대한 Mapping을 지원한다.

MAP Rule

테이블, 컬럼 매핑 기능을 사용하기 위한 MAP 파라미터 설정 방법을 설명한다.

테이블, 컬럼 매핑 기능을 사용하기 위해서는 $PRS_HOME/config 디렉터리의 Apply config file인 '[INST_ID]_apply1.cfg'를 설정한다.

다음은 설정해야 할 파라미터에 대한 설명이다.

기본 MAP 파라미터에 Source DB의 특정 테이블을 Target DB의 특정 테이블로 동기화하기 위한 규칙을 설정한다.

MAP=([SYNC OPTION] SOURCE_USER.SOURCE_TABLE [SOURCE_COLUMNS]
     [COLUMN FILTERING OPTION],
     [TARGET_DATABASE.]TARGET_USER.TARGET_TABLE [TARGET_COLUMNS]
     [RESOLVE OPTION] [SKIP OPTION])
인자
설명

SYNC OPTION

다음은 MAP 파라미터를 이용해서 동기화 대상 반영 기능을 사용하는 방법에 대한 예제이다.

다음은 Source DB의 PROSYNC1 사용자의 T1 테이블을 Target DB의 PROSYNC2 사용자의 T2 테이블로 동기화하는 예제이다.

다음은 Source DB의 PROSYNC1 사용자의 T1 테이블에 컬럼 C1, C2, C3가 있고, 이중 C1와 C2 컬럼만 Target DB의 PROSYNC2 사용자의 T2 테이블의 C1, C2 컬럼과 동기화하는 예제이다.

다음은 Source DB의 PROSYNC1 사용자의 T1 테이블에 컬럼 C1, C2, C3가 있고, 이중 C1와 C2 컬럼만 Target DB의 PROSYNC2 사용자의 T2 테이블의 D1, D2 컬럼과 동기화하는 예제이다.


동기화 테이블 사용여부를 설정한다.

동기화 테이블을 지정하는 경우 SYNC OPTION에 TABLE을 설정한다.

동기화 대상이 아닌 오브젝트의 DDL 매핑을 지정하는 경우 SYNC OPTION에 OBJECT를 설정한다.

동기화 대상 테이블에 대해서는 앞서 설명한 TABLE 규칙을 따라 DDL 매핑이 지원되며, TABLE 규칙이 명시되지 않은 경우 매핑 없이 동기화된다. 동기화 대상으로 설정할 수 없는 INDEX 등의 OBJECT나 동기화 대상이 아닌 테이블에 대해서만 해당 규칙으로 설정할 수 있다. OBJECT 규칙에 대해서는 반드시 위의 형태로만 사용 가능하다. OBJECT_NAME에 와일드 카드로 '%'를 입력할 수 있다. 이 경우 [SOURCE_USER]의 임의의 OBJECT [SOURCE_USER].[OBJECT_NAME]을 [TARGET_USER].[OBJECT_NAME]에 DDL 매핑하여 DDL을 동기화한다.

동기화를 제외할 테이블을 지정하는 경우 SYNC OPTION에 EXCLUDE를 설정한다.

Source DB의 PROSYNC 사용자의 TMP_TBL 테이블을 제외하고 동기화 할 때 다음과 같이 '[INST_ID]_apply1.cfg'의 MAP 파라미터를 설정한다.


COLUMN FILTERING OPTION을 사용하여 일부 컬럼에 대한 동기화를 제거할 수 있다. 다만 Constraint가 걸려있는 컬럼에 대해서는 해당 옵션을 사용할 수 없다.

다음과 같이 COLUMN FILTERING OPTION을 사용할 수 있다.

Source DB의 PROSYNC1 사용자의 T1 테이블에 컬럼 C1, C2, C3가 있고, 이중 C1 컬럼만 제외하고 Target DB의 PROSYNC2 사용자의 T2 테이블의 C2, C3 컬럼과 동기화할 경우 다음과 같이 '[INST_ID]_apply1.cfg'의 MAP 파라미터를 설정한다.


동기화 시 충돌 상황에서 Source DB에 정합성 기준을 맞출 지, Target DB에 정합성 기준을 맞출 지, 아니면 특정 컬럼의 Min 혹은 Max 값 기준으로 데이터 정합성을 맞출 지를 결정하는 옵션이다. 필수 옵션은 아니며 주로 양방향 동기화에 사용된다.

정해진 Rule에 따라 DML 들이 변경되거나 생략 된다.

다음은 RESOLVE OPTION에 설정할 수 있는 RESOLVE_RULE의 종류이다.

RESOLVE_RULE
설명

MAX와 MIN RESOLVE_RULE의 경우에는 반드시 DEFAULT OPTION을 설정해야 한다. 컬럼 값이 null인 경우에 설정한 DEFAULT 값으로 비교한다. 단, 동기화는 설정한 DEFAULT 값이 아니라 실제 컬럼 값으로 수행한다.

UPDATE을 동기화하는 경우 MIN, MAX Rule을 사용한다면 비교 대상 컬럼의 변경 유무에 따라 다르게 비교를 수행한다. 비교 대상 컬럼이 변경되었다면 변경된 값, 변경되지 않았다면 기존 값으로 Target DB의 row와 비교를 진행한다. 비교 대상 컬럼이 NULL인 상태에서 UPDATE가 발생하는 경우 비교가 불가능하기 때문에 비교 없이 Source DB 값을 우선으로 DML을 수행한다.

예를 들어 DB1과 DB2간의 양방향 동기화하는 경우 DB1의 PROSYNC 사용자의 T1 테이블을 DB2의 PROSYNC 사용자의 T1 테이블로 동기화하고, column c3의 값이 더 큰 값을 우선하고자 하는 경우 마지막으로 INSERT할 때 DCR 컬럼인 c3에 null이 들어가는 경우 10으로 비교할 경우 다음과 같이 설정한다.


SKIP OPTION에는 동기화하지 않길 원하는 row들을 특정하기 위한 조건을 설정한다.

Database
Supported Column Types

SKIP OPTION은 다음과 같이 설정한다. SKIP_CONDITION이 True인 Row들은 동기화하지 않는다.

Source DB의 PROSYNC 사용자의 T1 테이블을 Target DB의 PROSYNC 사용자의 T1 테이블로 동기화하고, column c1의 값이 'example'이 아니면 DML을 skip할 경우 다음과 같이 MAP 파라미터를 설정한다.

위의 조건에 추가로 Source DB의 PROSYNC 사용자의 T2 테이블을 Target DB의 PROSYNC 사용자의 T2 테이블로 동기화하고, column c2의 값이 'example2'이면 DML을 skip할 경우 다음과 같이 MAP 파라미터를 설정한다.

MIN(COLUMN_NAME)

해당 컬럼의 값이 더 작은 Row를 우선으로 한다.

반드시 DEFAULT OPTION을 설정해야 한다.

TABLE : 동기화 할 테이블을 지정하는 경우 설정한다. OBJECT : 동기화 대상이 아닌 오브젝트의 DDL 매핑을 지정하는 경우 설정한다. EXCLUDE : 동기화를 제외할 테이블을 지정하는 경우 설정한다.

SOURCE_USER

동기화 할 Source DB 테이블의 사용자 이름을 설정한다.

SOURCE_TABLE

동기화 할 Source DB 테이블의 테이블 이름을 설정한다.

SOURCE_COLUMNS

동기화 할 Source DB 테이블의 컬럼들을 설정한다. (Column1, Column2, Column3)과 같은 방식으로 설정한다.

COLUMN FILTERING OPTION

동기화하지 않을 Source DB 테이블의 컬럼들을 설정한다.

TARGET_DATABASE

동기화시킬 Target DB의 데이터베이스 이름을 설정한다.

TARGET_USER

동기화시킬 Target DB 테이블의 사용자 이름을 설정한다.

TARGET_TABLE

동기화시킬 Target DB 테이블의 테이블 이름을 설정한다. 인자에 대한 자세한 내용은 각 절의 설명을 참고한다.

RESOLVE OPTION

충돌(Conflict) 발생 시 적용할 RESOLVE 동작(DCR Rule)을 설정한다. RESOLVE BY 구문으로 SOURCE, TARGET, MAX(컬럼), MIN(컬럼) 중 하나를 지정한다. 인자에 대한 자세한 내용은 각 절의 설명을 참고한다.

SKIP OPTION

동기화 할 때 동기화를 하지 않을 row의 조건을 설정한다.

TARGET_COLUMNS

동기화시킬 Target DB 테이블의 컬럼들을 설정한다. SOURCE_COLUMNS와 순서대로 매핑되고 컬럼 개수는 일치해야 한다. (Column1, Column2, Column3)과 같은 방식으로 설정한다.

MAP=(TABLE PROSYNC1.T1, PROSYNC2.T2)
MAP=(TABLE PROSYNC1.T1(C1, C2), PROSYNC2.T2)
MAP=(TABLE PROSYNC1.T1(C1, C2), PROSYNC2.T2(D1, D2))
MAP=(TABLE [SOURCE_USER].[SOURCE_TABLE]... )
MAP=(OBJECT [SOURCE_USER].[OBJECT_NAME], [TARGET_USER].[OBJECT_NAME])
MAP=(EXCLUDE [SOURCE_USER].[SOURCE_TABLE]...)
MAP=(TABLE DEFAULT EXCLUDE PROSYNC.TMP_TBL)
MAP=(... EXCEPT FOR ([COLUMN_NAME], ..., [COLUMN_NAME])...)
MAP=(TABLE PROSYNC1.T1 EXCEPT FOR (C1), PROSYNC2.T2)
MAP=(... RESOLVE BY [RESOLVE_RULE] ...)

SOURCE

Source 테이블의 Row를 우선으로 한다.

TARGET

Target 테이블의 Row를 우선으로 한다.

MAX(COLUMN_NAME)

MAP=(... RESOLVE BY MAX(COLUMN_NAME) DEFAULT (COLUMN_VALUE) ...)
MAP=(TABLE PROSYNC.T1, PROSYNC.T1 RESOLVE BY MAX(c3) DEFAULT (10))

TIBERO

CHAR, VARCHAR, NUMBER, TIME, DATE, TIMESTAMP

ORACLE

CHAR, VARCHAR, NUMBER

POSTGRESQL

CHAR, VARCHAR

EQUAL (=), NOT_EQUAL (!=)

NUMBER, TIME, DATE, TIMESTAMP

EQUAL (=), NOT_EQUAL (!=), INEQUALITY (<, <=, >, >=)

MAP=(... SKIP=(SKIP_CONDITION))
MAP=(TABLE PROSYNC.T1, PROSYNC.T1 SKIP=(c1!="example"))
MAP=(TABLE PROSYNC.T1, PROSYNC.T1 SKIP=(c1!="example")
    TABLE PROSYNC.T2, PROSYNC.T2 SKIP=(c2="example2"))

주의

다음 키워드는 MAP Rule 의 예약어이므로 table 등 대상을 명시하는 용도로 사용 불가하다.

"ALL" "BY" "DEFAULT" "EXCEPT FOR" "EXCLUDE" "FILTER" "INCLUDE" "MAX" "MIN" "RESOLVE" "SOURCE" "SKIP" "SYNC" "TABLE" "TARGET" "TYPE" "OBJECT" "INSERT" "DELETE" "UPDATE"

동기화 대상 반영 기능 사용

서로 다른 오너 / 다른 이름을 가진 테이블 동기화

테이블의 특정 컬럼들만 동기화

테이블간 컬럼 이름을 다르게 동기화

SYNC OPTION

TABLE

OBJECT

주의

DB 버전, 비표준 쿼리 등으로 인해 DDL의 OBJECT의 인식이 불가능할 수 있다. 따라서 MAP 파라미터를 사용해서 DDL 매핑을 할 때 TABLE과 OBJECT에 schema를 명시하는 것을 권장한다.

또한, 동기화 테이블 T1에 대해 DROP TABLE T1 실행 후 CREATE TABLE T1를 실행할 때 T1은 OBJECT로써 매핑될 것이고, 생성될 컬럼은 동기화 테이블 컬럼 MAP 파라미터에 영향을 받지 않는다.

EXCLUDE

예제

COLUMN FILTERING OPTION

예제

RESOLVE OPTION (Data Conflict Rule, DCR)

참고

보다 상세한 사항은 Flow Control 을 참고한다.

RESOLVE_RULE

예제

참고

RESOLVE OPTION이 정상 작동하기 위해서는 설정할 Source와 Target 테이블에 primary key가 필요하다.

MIN, MAX 룰을 사용하는 경우 비교 대상 컬럼에 NULL이 들어가는 경우에 대비 사용될 DEFAULT OPTION을 반드시 사용해야 한다.

SKIP OPTION

지원 컬럼 타입

지원 비교 조건

예제

참고

SKIP RULE를 사용할 때 UPDATE의 경우에서는 SET 절에 있는 값을 기준으로 skip을 할 것인지, 아니면 WHERE 절의 값을 기준으로 skip을 할 것인지 설정할 수 있다.

Apply Process Parameter 중에서 MAP_SKIP_UPD_WHERE의 값이 N 일 때 먼저 SET 절에 기준 컬럼이 있는지 확인 후 있으면 SET 절의 값을 기반으로, 없으면 WHERE 절에 있는 기준 컬럼의 값을 기반으로 skip한다. 해당 파라미터가 Y인 경우에는 무조건 WHERE에 있는 기준 컬럼의 값을 기반으로 Skip한다.

SKIP OPTION은 단방향 동기화에서만 지원한다. 양방향의 경우 정합성 문제로 지원하지 않는다.

참고

MAP=( ... ) 안에는 여러 종류의 MAP RULE을 함께 작성 할 수 있다.

한 블록 안에서 서로 다른 역할의 규칙(테이블 매핑, 동기화 제외, DCR, SKIP등)을 조합하여 사용할 수 있다.

예)

MAP=(TABLE PROSYNC.T1, PROSYNC.T2 RESOLVE BY SOURCE)

단, 같은 소스 테이블에 대해 TABLE 규칙을 여러 줄로 나누어 적은 경우에는 규칙이 합쳐지지 않고, 매칭되는 규칙 중 마지막 줄만 적용된다.

잘못된예)

MAP=(
  TABLE TIBERO.TEST_DUMMY, TIBERO.TEST_DUMMY SKIP=(C3 = "ch")
  TABLE TIBERO.TEST_DUMMY, TIBERO.TEST_DUMMY SKIP=(C3 = "ch1")
)

위와 같이 작성 시 SKIP=(C3 = "ch")가 있는 rule은 무시되고 마지막 줄인 SKIP=(C3 = "ch1") rule만 적용된다.

올바른예)

해당 컬럼의 값이 더 큰 Row를 우선으로 한다.

반드시 DEFAULT OPTION을 설정해야 한다.

CHAR, VARCHAR, NUMBER

MAP=(
  TABLE TIBERO.TEST_DUMMY, TIBERO.TEST_DUMMY SKIP=(C3 = "ch", C3 = "ch1")
)

DDL Rule

ProSync 사용자는 적용 프로세스의 설정 파일에서 DDL 파라미터를 설정할 수 있다. DDL 파라미터는 동기화 할 DDL에 대한 설정이다.

DDL 파라미터는 하나 이상의 DDL Rule 문장으로 구성된다. DDL Rule에는 DDL 동기화를 포함/배제할 대상과 DDL 종류를 명시할 수 있다.

사용법

DDL=([SET] [RANGE], TYPE=('[DDL OPERATION] [DDL OBJECT]', ...))
항목
설명

[SET]

INCLUDE 또는 EXCLUDE를 명시할 수 있다.

  • INCLUDE: 기술된 규칙에 대해 동기화한다.

  • EXCLUDE: 기술된 규칙에 대해 동기화하지 않는다. 어떠한 INCLUDE보다 EXCLUDE를 우선시한다.

다음은 설정 가능한 [DDL OPERATION]과 [DDL OBJECT]의 조합이다. Source DB가 Tibero인 경우와 Oracle인 경우 동일하게 지원한다.

  • O : 지원

  • △ : 특정 조건에서만 지원 (비고 참조)

  • X : 미지원

DDL OBJECT
CREATE
ALTER
DROP
비고

위 조합 외에 COMMENT ON과 TRUNCATE TABLE을 지원한다.

다음 DDL은 동기화를 지원하지 않으며, 추출 단계에서 skip 처리된다.

  • GRANT, REVOKE

  • RENAME (ALTER ... RENAME 구문은 ALTER로 동기화 설정하여 사용할 수 있다.)

  • ALTER DATABASE LINK,

다음은 모든 스키마에 대해서 모든 종류의 DDL 동기화를 하지만, 스키마 EXCLUDED_USR의 모든 테이블에 대한 DDL 동기화는 배제하는 예제이다.

다음은 동기화 대상 테이블에 대해 TABLE을 대상으로 하는 DDL을 동기화하고, INCLUDED_USR의 모든 오브젝트 이름에 대해 INDEX를 대상으로 하는 DDL을 동기화한다. 반면, 오브젝트 이름이 EXCLUDED_USR.IDX1일 경우 INDEX를 대상으로 하는 DDL을 동기화하지 않는다.

다음은 SRCUSR의 모든 테이블에 대해 TYPE에 해당되는 DDL을 동기화하지만, SRCUSR.T1에 대해서는 DROP TABLE과 CREATE TABLE에 해당되는 DDL을 동기화하지 않는다.

  • DDL 문장 크기 동기화 할 DDL 문장의 각 요소는 128글자를 넘을 수 없다.

  • 설정 전 확인 DDL 파라미터의 대상과, 동기화 할 DDL 종류가 정확한지 Wildcard를 고려하여 확인하고 설정한다. 다른 DB나 대상에게 먼저 적용해보고 설정하는 것을 권장한다.

  • CREATE TABLE 이후 동기화 CREATE TABLE에 대한 DDL 동기화 후 생성된 테이블을 DML 동기화 하려면 동기화 대상에 추가해야 한다. Admin 명령으로 수동 등록하거나 AUTO_SYNC_ON_CREATE=Y로 자동 등록할 수 있다. 반면 DDL은 Rule에 의해 생성된 직후부터 동기화 될 수 있으므로 주의한다.

TRUNCATE TABLE도 지원한다.

INDEX

O

O

O

VIEW

O

O

O

MATERIALIZED VIEW

O

△

O

ALTER MATERIALIZED VIEW는 추출·전달되며, Target DB가 Tibero인 경우에만 반영(apply) 단계에서 skip된다.

MATERIALIZED VIEW LOG

O

O

O

SEQUENCE

O

O

O

SYNONYM

O

X

O

PUBLIC SYNONYM도 SYNONYM과 동일한 종류로 처리된다.

PROCEDURE

O

O

O

FUNCTION

O

O

O

PACKAGE

O

O

O

PACKAGE BODY

O

O

O

TRIGGER

O

O

O

TYPE

O

O

O

TYPE BODY

O

O

O

USER

O

O

O

ROLE

△

△

△

스키마 비종속 객체로 INCLUDE ALL에서만 동기화된다. CREATE / ALTER는 비밀번호를 명시하지 않은 경우에만 지원한다.

TABLESPACE

△

△

△

스키마 비종속 객체로 INCLUDE ALL에서만 동기화된다. Target DB가 Oracle CDB-PDB 구성인 경우 아래 유의사항의 제약을 함께 확인한다.

DATABASE LINK

△

X

△

스키마 비종속 객체로 INCLUDE ALL에서만 동기화된다. PUBLIC DATABASE LINK도 DATABASE LINK와 동일한 종류로 처리된다.

DIRECTORY

△

X

△

스키마 비종속 객체로 INCLUDE ALL에서만 동기화된다.

LIBRARY

△

X

△

스키마 비종속 객체로 INCLUDE ALL에서만 동기화된다.

ALTER PUBLIC DATABASE LINK
implicit DDL CREATE TABLE에 대한 DDL 동기화 실행 중 컬럼의 PRIMARY KEY로 인해 INDEX 생성이 되는 것처럼 명시되지 않은 DDL을 implicit DDL이라 하며, 동기화 설정할 때 이를 주의한다.
  • RENAME 지원 DDL 중 RENAME은 지원하지 않는다. ALTER ... RENAME을 이용한 DDL 구문은 ALTER를 동기화 설정하여 사용할 수 있다.

  • ORACLE LOGMNR Source DB가 Oracle, logmnr 를 사용할 때 동기화 대상에 대한 DDL 동기화만 지원한다.

  • INDEX / CONSTRAINTS 관련 주의사항 INDEX / CONSTRAINTS의 경우 SRC/TAR DB에서 이름이 다를 경우 동기화가 불가능하다.

  • DDL 설정 조합 복수 개의 DDL 룰에 대한 설정 시 아래와 같은 형태로 명시한다.

  • OBJECT 동기화 DDL 동기화의 경우 INCLUDE DEFAULT 사용 시 오브젝트에 대한 DDL 동기화는 수행되지 않으며, 오브젝트에 대한 DDL 동기화 수행을 원하는 경우 직접 명시해야한다

  • 스키마 미명시 DDL 구문의 동기화 제한 DDL 구문에서 대상 객체의 스키마(Schema) 가 명시되지 않은 경우, 해당 구문은 동기화가 수행되지 않는다. 따라서 스키마를 명시한 형태의 DDL 구문으로 작성해야만 동기화가 가능하다.

    예시

  • SYS 스키마 DDL 동기화 제약사항 스키마가 SYS인 경우, 해당 스키마를 대상으로 수행되는 모든 DDL은 동기화 시 Skip 처리된다.

  • 스키마 비종속 객체(Non-Schema Object) 동기화 제약사항

    TABLESPACE, DIRECTORY, DATABASE LINK, ROLE, LIBRARY 객체는 특정 스키마에 종속되지 않는 객체로, DDL 동기화 시 INCLUDE ALL 옵션이 설정된 경우에만 동기화를 지원한다. INCLUDE DEFAULT인 경우 동기화를 지원하지 않는다.

  • Password 포함 DDL 동기화 제약사항

    CREATE ROLE, ALTER ROLE, CREATE [PUBLIC] DATABASE LINK 등 비밀번호 정보가 포함될 수 있는 DDL 문장은 비밀번호를 명시하지 않는 경우에만 DDL 동기화를 지원한다.

  • Target Oracle CDB-PDB 환경의 TABLESPACE 동기화 제약사항

    ProSync는 DDL 문장을 Target DB 세션에서 그대로 수행하며, DATAFILE 경로를 Target DB 기준으로 변환하지 않는다. Target DB가 Oracle CDB-PDB 구성인 경우 TABLESPACE 관련 DDL은 다음 제약을 갖는다.

    • TABLESPACE는 Target 접속 정보(TAR_DB_NAME)가 가리키는 컨테이너에 생성된다. 접속 서비스가 PDB가 아닌 CDB(CDB$ROOT)를 가리키면 TABLESPACE도 CDB에 생성되므로, 동기화 대상 PDB의 서비스로 접속하도록 설정해야 한다.

    • DATAFILE을 파일명만(상대 경로) 명시한 DDL은 PDB 전용 디렉터리가 아니라 CDB와 모든 PDB가 공유하는 디렉터리($ORACLE_HOME/dbs)에 데이터 파일을 생성한다. Target에 DB_CREATE_FILE_DEST가 설정되어 있는 경우에만 해당 위치에 PDB별로 생성된다. 공유 디렉터리에 생성되므로 다른 컨테이너가 같은 이름의 데이터 파일을 이미 사용 중이면 ORA-01537, 이전에 생성된 파일이 남아 있으면 ORA-01119 / ORA-27038로 CREATE TABLESPACE가 실패한다. Source DB 기준의 절대 경로가 명시된 경우에도 Target에 동일한 경로가 없으면 실패한다.

    • CREATE TABLESPACE가 실패한 뒤 해당 TABLESPACE를 참조하는 CREATE TABLE이 동기화되면 ORA-00959: tablespace ... does not exist로 실패한다. 반영에 실패한 DDL은 기본 설정(DISCARD_DDL_YN=N)에서 계속 재시도되므로 이후 동기화가 진행되지 않는다. DISCARD_DDL_YN=Y로 설정하면 실패한 TABLESPACE DDL은 discard되지만, CREATE TABLE은 discard 대상이 아니므로 동일하게 재시도된다.

    따라서 Target이 CDB-PDB 구성인 환경에서는 Target PDB에 TABLESPACE를 미리 생성해 두고 DDL Rule에서 TABLESPACE 관련 DDL을 동기화 대상에서 제외하거나, Target에 DB_CREATE_FILE_DEST를 설정하여 데이터 파일이 PDB별 경로에 생성되도록 구성할 것을 권장한다.

  • [RANGE]

    ALL 또는 DEFAULT 중 하나를 명시하거나, DB의 오브젝트 이름을 직접 명시할 수 있다.

    • ALL: 모든 스키마, 테이블에 대해 적용된다.

    • DEFAULT: 모든 동기화 대상 테이블에 대해 적용된다.

    • 오브젝트 이름을 직접 명시: 대상에 대해 적용된다.

    TYPE

    TYPE은 하나 이상의 DDL OPERATION과 DDL OBJECT 쌍으로 구성된다. 지정되어 있지 않는 경우, Wildcard로 처리한다.

    [DDL OPERATION]

    Rule에 적용할 DDL 종류를 명시한다.

    [DDL OBJECT]

    Rule에 적용할 DDL 종류에 대한 대상을 명시한다.

    TABLE

    O

    O

    참고

    [RANGE]의 오브젝트 이름이나 [DDL OPERATION], [DDL OBJECT]에 %를 포함시켜 wildcard로 처리할 수 있다.

    Source DB가 Oracle인 경우 [DDL OPERATION]과 [DDL OBJECT]에 '%'를 사용할 수 없다.

    지원 DDL 종류

    참고

    TYPE에는 위 표의 이름을 그대로 명시해야 한다. 예를 들어 Materialized View는 TYPE=('CREATE MATERIALIZED VIEW')와 같이 명시하며, MVIEW와 같은 약어는 인식되지 않는다.

    지원하지 않는 DDL

    예제

    DDL 동기화 설정 시 유의사항

    주의 DDL=(INCLUDE ALL, TYPE=('%')) 설정 시, Source DB의 모든 스키마에서 수행되는 모든 타입의 DDL이 동기화된다. 동기화 대상 여부와 관계없이 모든 DDL이 적용되므로 사용 시 주의가 필요하다. 추가적으로 INCLUDE ALL로 설정하는 경우 설치될 Instance 는 단일 Instance 로 구성되어야 한다.

    O

    DDL=([SET] [RANGE], TYPE=('[DDL OPERATION] [DDL OBJECT]', ...)
                    [SET] [RANGE], TYPE=('[DDL OPERATION] [DDL OBJECT]', ...) ....)
    CREATE TABLE TEST_TABLE2 (
        c1 NUMBER,
        CONSTRAINT fk_test FOREIGN KEY (c1) REFERENCES [스키마명].TEST_TABLE1 (c1)
    );
    DDL=(
        INCLUDE ALL, TYPE=('%')
        EXCLUDE EXCLUDED_USR.%, TYPE=('%')
    )
    DDL=(
        INCLUDE DEFAULT, TYPE=('% TABLE')
        INCLUDE INCLUDED_USR.%, TYPE=('% INDEX')
        EXCLUDE EXCLUDED_USR.IDX1, TYPE=('% INDEX')
    )
    DDL=(
        INCLUDE SRCUSR.%, TYPE=('DROP TABLE', 'ALTER TABLE', 'TRUNCATE TABLE')
        EXCLUDE SRCUSR.T1, TYPE=('DROP TABLE', 'CREATE TABLE')
    )