데이터베이스 객체 이름에 와일드카드 사용
특정 데이터베이스에 대해 지원되는 경우 전체 객체 이름의 모든 부분에 와일드카드를 사용할 수 있습니다. 이러한 이름 부분은 컨테이너, 데이터베이스 또는 카탈로그 이름, 소유자(스키마 또는 데이터베이스 이름), 테이블 또는 시퀀스 이름일 수 있습니다. 객체 이름 및 와일드카드 지원 방법에 대한 자세한 내용은 해당 데이터베이스의 Oracle GoldenGate 설치 및 구성 설명서를 참조하십시오.
해당되는 경우 Oracle GoldenGate 파라미터는 두 개의 와일드카드 유형을 사용하여 하나의 명령문에서 여러 객체를 지정할 수 있도록 허용합니다.
-
물음표(?)는 한 문자를 대체합니다. 예를 들어,
TABn이라는 테이블을 포함하는 스키마에서 n은 0에서 9 사이이고,HQ.TAB?의 와일드카드 지정은HQ.TAB0,HQ.TAB1,HQ.TAB2등을 최대HQ.TAB9까지 반환합니다. 이 와일드카드는 DB2 LUW 데이터베이스 또는 DEFGEN에 대해 지원되지 않습니다. 이 와일드카드는TABLE또는MAP매개변수에서 소스 객체를 지정하는 데만 사용할 수 있습니다.TABLE또는MAP의TARGET절에서 대상 객체를 지정하는 데 사용할 수 없습니다. -
별표(*)는 임의의 수의 문자(0개의 시퀀스 포함)를 나타냅니다. 예를 들어,
HQ.T*의 사양은HQ.TOTAL,HQ.T123및HQ.T와 같은 객체를 반환할 수 있습니다. 이 와일드카드는 와일드카드가 허용되는 모든 Oracle GoldenGate 명령 및 매개변수의 모든 데이터베이스 유형에 적합합니다. -
TABLE및MAP문에서는 소스 객체 이름에 별표 및 질문 표시 와일드카드 문자만 결합할 수 있습니다.
소스 객체에 와일드카드 사용 규칙
소스 객체의 경우 별표만 사용하거나 부분 이름을 사용할 수 있습니다. 예를 들어, 다음 소스 사양이 적합합니다.
-
TABLE HQ.*; -
TABLE PDB*.HQ.*; -
MAP HQ.T_*; -
MAP HQ.T_*, TARGET HQ.*;
TABLE, MAP 및 SEQUENCE 매개변수는 와일드카드 확인을 위해 대소문자를 구분하고 데이터베이스의 로케일을 고려합니다. 대소문자를 구분하거나 대소문자를 구분하지 않고 생성된 데이터베이스의 경우 와일드카드는 정확한 이름과 대소문자를 일치시킵니다. 예를 들어, 데이터베이스가 대소문자를 구분하는 경우 SCHEMA.TABLE가 SCHEMA.TABLE와 일치하고, Schema.Table가 Schema.Table 등과 일치합니다. 데이터베이스가 대소문자를 구분하지 않는 경우 일치는 대소문자를 구분하지 않습니다.
동일한 데이터베이스 Instance에서 대소문자를 구분하고 대소문자를 구분하지 않는 객체 이름을 모두 포함할 수 있는 데이터베이스의 경우 대소문자를 구분하기 위해 따옴표를 사용하면 와일드카드가 다르게 작동합니다. TABLE 문에서 소스 이름에 단독으로 사용할 경우 별표가 따옴표 안에 있는지 여부에 관계없이 별표 와일드카드는 임의의 문자와 일치합니다. 다음 명령문은 동일한 결과를 생성합니다.
TABLE hr.*;
TABLE hr."*";
마찬가지로 단독으로 사용되는 물음표 와일드카드는 따옴표 안에 있는지 여부에 관계없이 모든 단일 문자와 일치합니다. 다음과 같은 결과가 나타납니다.
TABLE hr.?;
TABLE hr."?";
물음표 또는 별표 와일드카드가 다른 문자와 함께 사용되는 경우 대소문자를 구분하지 않는 문자에 적용하지만 와일드카드는 대소문자를 구분하지 않고 대소문자를 구분하지 않는 이름과 모두 일치합니다.
- 다음
TABLE문은 소문자abc로 시작하는 테이블 이름을 캡처합니다. 따옴표로 묶인 이름 대소문자는 보존되고 대소문자를 구분하는 일치 항목이 적용됩니다. 와일드카드는 대소문자를 구분하고 대소문자를 구분하지 않는 문자와 일치하므로"abcA"및"abca"를 포함하는 테이블 이름을 캡처합니다.
TABLE hr."abc*";
TABLE hr."abc?";
- 다음
TABLE문은 대문자ABC로 시작하는 테이블 이름을 캡처합니다. 부분 이름은 대소문자를 구분하지 않고 따옴표 없이 대문자로 저장되기 때문입니다. 하지만 와일드카드는 대소문자를 구분하지 않고 대소문자를 구분하지 않는 문자와 일치하므로 이 예제에서는ABCA및"ABCa"를 포함하는 테이블 이름을 캡처합니다.
TABLE hr.abc*;
TABLE hr.abc?;
대상 객체에 와일드카드 사용 규칙
MAP 문의 TARGET 절에서 와일드카드를 사용할 경우 대상 객체가 대상 데이터베이스에 존재해야 합니다. 단, 새 스키마와 해당 객체를 생성할 때 복제할 수 있도록 하는 DDL 복제가 사용되는 경우에는 예외입니다.
대상 객체의 경우 별표만 사용할 수 있습니다. 별표 와일드카드가 부분 이름과 함께 사용되는 경우 Replicat는 와일드카드를 해당 소스 객체의 전체 이름으로 바꿉니다. 따라서 다음과 같은 사양은 잘못됨입니다.
HQ.T
앞의 매핑은 대상 사양의 와일드카드가 T_TEST(소스 객체의 이름)로 바뀌어 전체 대상 이름이 T_T_TESTn이 되므로 잘못된 결과를 생성합니다. 다음은 잘못된 결과를 보여줍니다.
-
HQ.T_TEST1는RPT.T_T_TEST1에 매핑됩니다. -
HQ.T_TEST2는RPT.T_T_TEST2에 매핑됩니다. -
동일한 패턴이 다른 모든
HQ.T_TESTn 매핑에 적용됩니다.
다음 예에서는 별표 와일드카드의 올바른 사용을 보여줍니다.
MAP HQ.T_*, TARGET RPT.*;
이전 예에서는 다음과 같은 올바른 결과를 생성합니다.
-
HQ.T_TEST1는RPT.T_TEST1에 매핑됩니다. -
HQ.T_TEST2는RPT.T_TEST2에 매핑됩니다. -
동일한 패턴이 다른 모든
HQ.T_TESTn 매핑에 적용됩니다.
대체 이름 매핑
소스 이름을 대상 이름에 매핑할 수 없는 경우 Oracle GoldenGate에 폴백 매핑 방식이 있습니다. 대소문자를 구분하는 소스 객체에 대한 대상에서 정확한 일치 항목을 찾을 수 없는 경우 Replicat는 소스 이름을 대상의 대소문자 또는 소문자(데이터베이스 유형에 따라 다름)로 매핑하려고 시도합니다. 폴백 이름 매핑은 NAMEMATCH 매개변수로 제어됩니다. 자세한 내용은 Oracle GoldenGate에 대한 매개변수 및 함수 참조를 참조하십시오.
객체 이름에서 별표 또는 질문을 리터럴로 표시
객체 이름 자체에 별표나 물음표가 포함된 경우 다음 예와 같이 전체 이름을 이스케이프하여 큰따옴표로 묶어야 합니다.
TABLE HT."\?ABC";
와일드카드 해결 방법
기본적으로 객체 이름이 와일드카드로 지정되면 소스 객체의 첫번째 행이 처리될 때 해당 객체의 해상도가 발생합니다. 반대로 객체 이름이 명시적으로 명시된 경우 프로세스 시작 시 해결됩니다. 와일드카드 분석 규칙을 변경하려면 WILDCARDRESOLVE 매개변수를 사용합니다. 기본값은 DYNAMIC입니다.
와일드카드 사양에서 객체 제외
EXCLUDEWILDCARDOBJECTSONLY, CATALOGEXCLUDE, SCHEMAEXCLUDE, MAPEXCLUDE 및 TABLEEXCLUDE 매개변수를 사용하여 와일드카드 객체 선택과 명시적 객체 제외의 사용을 결합할 수 있습니다.