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 종류에 대한 대상을 명시한다.
다음은 Source DB에 따라 설정 가능한 [DDL OPERATION]과 [DDL OBJECT]의 조합이다.
Source DB가 Tibero인 경우
CREATE
ALTER
DROP
COMMENT ON
TABLE
INDEX
TRIGGER
SEQUENCE
VIEW
FUNCTION
PACKAGE
PACKAGE BODY
PROCEDURE
SYNONYM
PUBLIC SYNONYM
TRUNCATE
TABLE
Source DB가 Oracle인 경우
CREATE
ALTER
DROP
TABLE
INDEX
VIEW
TRUNCATE
TABLE
예제
다음은 모든 스키마에 대해서 모든 종류의 DDL 동기화를 하지만, 스키마 EXCLUDED_USR의 모든 테이블에 대한 DDL 동기화는 배제하는 예제이다.
DDL=(
INCLUDE ALL, TYPE=('%')
EXCLUDE EXCLUDED_USR.%, TYPE=('%')
)
다음은 동기화 대상 테이블에 대해 TABLE을 대상으로 하는 DDL을 동기화하고, INCLUDED_USR의 모든 오브젝트 이름에 대해 INDEX를 대상으로 하는 DDL을 동기화한다. 반면, 오브젝트 이름이 EXCLUDED_USR.IDX1일 경우 INDEX를 대상으로 하는 DDL을 동기화하지 않는다.
DDL=(
INCLUDE DEFAULT, TYPE=('% TABLE')
INCLUDE INCLUDED_USR.%, TYPE=('% INDEX')
EXCLUDE EXCLUDED_USR.IDX1, TYPE=('% INDEX')
)
다음은 SRCUSR의 모든 테이블에 대해 TYPE에 해당되는 DDL을 동기화하지만, SRCUSR.T1에 대해서는 DROP TABLE과 CREATE TABLE에 해당되는 DDL을 동기화하지 않는다.
DDL=(
INCLUDE SRCUSR.%, TYPE=('DROP TABLE', 'ALTER TABLE', 'TRUNCATE TABLE')
EXCLUDE SRCUSR.T1, TYPE=('DROP TABLE', 'CREATE TABLE')
)
주의
아래 사항을 유의하여 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 룰에 대한 설정 시 아래와 같은 형태로 명시한다.
DDL=([SET] [RANGE], TYPE=('[DDL OPERATION] [DDL OBJECT]', ...) [SET] [RANGE], TYPE=('[DDL OPERATION] [DDL OBJECT]', ...) ....)
OBJECT 동기화 DDL 동기화의 경우 INCLUDE DEFAULT 사용 시 오브젝트에 대한 DDL 동기화는 수행되지 않으며, 오브젝트에 대한 DDL 동기화 수행을 원하는 경우 직접 명시해야한다
Last updated