AUTOSCHEMAOPTIONS 파라미터 사용
TYPEMAP 및 IGNORE_DATA_TRUNCATION 옵션이 있는 AUTOSCHEMAOPTIONS 매개변수를 사용하면 다음 대체를 수행할 수 있습니다.
| 자동 스키마 옵션 option_name | 설명 | 구문 | 예제 |
|---|---|---|---|
IGNORE_MODIFY_KEY_COLUMN |
기본적으로 자동 스키마는 기본 키 열을 수정할 수 없으며 Replicat 비정상 종료 시 적절한 오류가 발생합니다. AUTOSCHEMAOPTIONS IGNORE_MODIFY_KEY_COLUMN를 지정하여 키 열에 대한 수정을 건너뛸 수 있습니다. |
AUTOSCHEMAOPTIONS IGNORE_MODIFY_KEY_COLUMN |
- |
ALLOW_MODIFY_KEY_COLUMN |
기본적으로 자동 스키마는 기본 키 열 및 Replicat 비정상 종료를 수정할 수 없습니다. 키 열에 대한 수정을 허용하려면 AUTOSCHEMAOPTIONS ALLOW_MODIFY_KEY_COLUMN을 지정합니다. |
자동 스키마 옵션 ALLOW_MODIFY_KEY_COLUMN | - |
MODIFY_COLUMN_NULLABILITY_ONLY |
유형 수정이 아닌 열의 Null 가능성을 기반으로 수정에만 관심이 있는 경우 AUTOSCHEMAOPTIONS MODIFY_COLUMN_NULLABILITY_ONLY를 지정합니다. |
AUTOSCHEMAOPTIONS MODIFY_COLUMN_NULLABILITY_ONLY |
- |
AUTOSCHEMAOPTIONS TYPEMAP |
특정 소스 데이터 유형 이름에 대한 특정 데이터 유형을 선택할 수 있습니다. | AUTOSCHEMAOPTIONS TYPEMAP '<source type name> ' '<target type name>' |
예를 들어, 데이터 유형이 smallint인 소스 열을 대상 열에 필요한 데이터 유형으로 int로 변환해야 하는 경우 다음을 사용합니다. AUTOSCHEMAOPTIONS TYPEMAP 'smallint' = 'int' |
AUTOSCHEMAOPTIONS TYPEMAP |
특정 소스 열 이름에 대한 특정 데이터 유형을 선택할 수 있습니다. | ||
주: 전체 열 이름도 지원됩니다(예: table_name, column_name). 이름 구성 요소에는 와일드카드가 포함될 수 있으며 따옴표로 묶인 이름도 지원됩니다. |
AUTOSCHEMAOPTIONS TYPEMAP '<source column name>' = 'target type name' |
예를 들어, 이름이 EMPLOYEE_ID인 소스 열에 해당하는 대상 열에 필요한 데이터 유형으로 int를 사용하려면 다음과 같이 하십시오. AUTOSCHEMAOPTIONS TYPEMAP EMPLOYEE_ID = 'int' |
|
AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION |
자동 스키마 전개는 가능한 모든 위치에서 유형 확대(업 변환)를 허용하여 데이터 자르기를 방지합니다. IGNORE_DATA_TRUNCATION 옵션을 사용하여 모든 종류의 와이드닝을 대체할 수 있습니다. string 또는 binary 유형(키 열 또는 비키 열)의 경우 고정 길이 데이터 유형을 사용하고 대상 길이가 small인 경우 AUTOSCHEMA는 소스 데이터를 수용할 수 있는 경우 해당하는 가변 길이 데이터 유형으로 변환됩니다. 그렇지 않으면 실패합니다. AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION로 대체할 수 있습니다. |
AUTOSCHEMAOPTIONS IGNORE_DATA_TRUNCATION |
- |
AUTOSCHEMAOPTIONS를 독립형 매개변수로 사용하기 위한 구문
Replicat 매개변수 파일에서 AUTOSCHEMAOPTIONS를 독립형 매개변수로 사용으로 설정하려면 다음 구문을 사용합니다.
구문:
AUTOSCHEMAOPTIONS TYPEMAP '<datatype_src>' = '<datatype_tgt>'
AUTOSCHEMAOPTIONS TYPEMAP '<column_name>' = '<datatype_tgt>'
예제:
AUTOSCHEMAOPTIONS TYPEMAP 'int'='bigint'
AUTOSCHEMAOPTIONS TYPEMAP 'smallint'='bigint'
AUTOSCHEMAOPTIONS TYPEMAP employee_no='bigint'
AUTOSCHEMAOPTIONS TYPEMAP "Employee&Name"='varchar(50)'
맵 레벨 구문
MAP 레벨에서 AUTOSCHEMAOPTION 절을 사용으로 설정하려면 다음 구문과 같이 괄호로 묶어야 합니다.
구문:
MAP src.table1, TARGET tgt.table1, AUTOSCHEMAOPTIONS (TYPEMAP 'int'='smallint');
동일한 MAP 문의 일부로 TYPEMAP와 같은 여러 AUTOSCHEMAOPTIONS 절을 지정하려면 각 옵션을 괄호로 묶어야 합니다.
구문:
MAP src.table2, TARGET tgt.table2, AUTOSCHEMAOPTIONS (TYPEMAP 'smallint'='bigint','varchar(*)'='clob', employee_no='bigint', "Employee&Name"='varchar(50)');
예제
예 1
Replicat 매개변수 파일에 언급된 모든 테이블에 대해 AUTOSCHEMAOPTIONS를 사용으로 설정하려면 다음을 수행합니다.
AUTOSCHEMAOPTIONS TYPEMAP 'int'='bigint'
DISCARDFILE ./dirrpt/RREP.dsc
MAP west.table1, TARGET east.table1;
MAP west.table2, TARGET east.table2;
MAP west.src*, TARGET east.tgt*;
예 2
Replicat 매개변수 파일의 모든 테이블에 대해 TYPEMAP 'int' = 'bigint'를 사용하여 AUTOSCHEMAOPTIONS를 사용으로 설정하고 hr 스키마의 테이블에 대해서만 TYPEMAP 'clob'= 'varchar(2000)'를 추가로 사용하려면 다음을 수행합니다.
AUTOSCHEMAOPTIONS TYPEMAP 'int'= 'bigint'
MAP west.table1, TARGET east.table1;
MAP west.table2, TARGET east.table2;
MAP hr.src*, TARGET hr.*, AUTOSCHEMAOPTIONS (TYPEMAP 'varchar(2000)'='clob')
매개변수 파일의 각 행은 순차적으로 처리되며 해결되는 각 맵은 해당 시점의 전역 AutoSchema 매개변수의 현재 상태를 기반으로 합니다. MAP 레벨에서 지정된 AutoSchema 옵션은 충돌하는 전역 AUTOSCHEMAOPTIONS보다 우선합니다.
예를 들어, 소스 테이블이 다음과 같이 생성된 경우
create table src.t111 (pkcol int not null primary key, smallintcol smallint);
create table src.t222 (pkcol int not null primary key, smallintcol smallint);
create table src.t333 (pkcol int not null primary key, smallintcol smallint);
Replicat 매개변수 파일에 다음이 포함된 경우
REPLICAT RTEST
USERIDALIAS ggeast
DDL AUTOSCHEMA INCLUDE ALL
discardfile ./dirrpt/irddl.dsc
AUTOSCHEMAOPTIONS TYPEMAP 'int'='bigint'
MAP src.t111, TARGET tgt.ran_t111;
MAP src.t222, TARGET tgt.ran_t222, AUTOSCHEMAOPTIONS ((TYPEMAP 'int'='smallint'));
AUTOSCHEMAOPTIONS TYPEMAP 'smallint'='bigint'
MAP src.t333, TARGET tgt.ran_t333;
그런 다음 AUTOSCHEMA는 다음과 같이 대상 테이블에 대한 DDL을 생성합니다.
create table 'tgt.'ran_t111' ('pkcol' bigint not null, smallintcol smallint, primary key( 'pkcol'))
create table 'tgt'.'ran_t222' ('pkcol' smallint not null,`smallintcol` smallint, primary key('pkcol'))
create table 'tgt'.'ran_t333' ('pkcol' bigint not null,'smallintcol' bigint, primary key('pkcol'))