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를 우선시한다.

[RANGE]

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

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

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

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

TYPE

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

[DDL OPERATION]

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

[DDL OBJECT]

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

circle-info

참고

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

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

다음은 Source DB에 따라 설정 가능한 [DDL OPERATION]과 [DDL OBJECT]의 조합이다.

Source DB가 Tibero인 경우

DDL OPERATION
DDL OBJECT

CREATE

ALTER

DROP

COMMENT ON

TABLE

INDEX

TRIGGER

SEQUENCE

VIEW

FUNCTION

PACKAGE

PACKAGE BODY

PROCEDURE

SYNONYM

PUBLIC SYNONYM

TRUNCATE

TABLE

Source DB가 Oracle인 경우

DDL OPERATION
DDL OBJECT

CREATE

TABLE

INDEX

TRIGGER

SEQUENCE

VIEW

MVIEW

FUNCTION

PACKAGE

PACKAGE BODY

PROCEDURE SYNONYM

PUBLIC SYNONYM TABLESPACE DIRECTORY MLOG

ROLE (⚠ Password 포함 DDL 동기화 제약사항 참조)

PUBLIC DATABASE LINK (⚠ Password 포함 DDL 동기화 제약사항 참조)

LIBRARY TYPE TYPEBODY

ALTER

TABLE

INDEX

TRIGGER

SEQUENCE

VIEW

MVIEW

FUNCTION

PACKAGE

PACKAGE BODY

PROCEDURE SYNONYM

PUBLIC SYNONYM TABLESPACE DIRECTORY MLOG

ROLE (⚠ Password 포함 DDL 동기화 제약사항 참조) TYPE TYPEBODY

DROP

TABLE

INDEX

TRIGGER

SEQUENCE

VIEW

MVIEW

FUNCTION

PACKAGE

PACKAGE BODY

PROCEDURE

SYNONYM

PUBLIC SYNONYM TABLESPACE DIRECTORY MLOG

ROLE

DATABASE LINK

PUBLIC DATABASE LINK LIBRARY TYPE TYPEBODY

COMMENT ON

-

TRUNCATE

TABLE

예제

다음은 모든 스키마에 대해서 모든 종류의 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 문장 크기 동기화 할 DDL 문장의 각 요소는 128글자를 넘을 수 없다.

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

  • CREATE TABLE 이후 동기화 CREATE TABLE에 대한 DDL 동기화 후 생성된 테이블을 DML 동기화 하려면 수동으로 동기화 대상 추가를 해야한다. 반면 DDL은 Rule에 의해 생성된 직후부터 동기화 될 수 있으므로 주의한다.

  • 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 동기화를 지원한다.

circle-exclamation

Last updated