DDL의 부적격 객체 이름 올바르게 식별

Extract는 DDL 작업이 실행될 때 적용되는 현재 스키마(세션 스키마라고도 함)를 캡처합니다. 소스가 다중 테넌트 컨테이너 데이터베이스인 경우에도 현재 컨테이너가 캡처됩니다.

컨테이너와 스키마는 DDL의 부적격 객체 이름을 분석하는 데 사용됩니다.

다음 예제를 생각해 보겠습니다.

CONNECT ggadmin/PASSWORD
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE EAST.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;

이러한 두 DDL 문에서 부적격 테이블 TAB1는 DDL 실행 중에 유효한 현재 스키마 SCOTT를 기반으로 SCOTT.TAB1로 분석됩니다.

현재 스키마를 설정하는 또 다른 방법이 있습니다. 이 방법은 다음 예제와 같이 세션에 대해 current_schema를 설정하는 것입니다.

CONNECT ggadmin/PASSWORD
ALTER SESSION SET CURRENT_SCHEMA=SRC;
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE HR.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;

이러한 두 DDL 문에서 부적격 테이블 EMPLOYEES는 DDL 실행 중에 유효한 현재 스키마 HR를 기반으로 HR.EMPLOYEES로 분석됩니다.

Extract는 DDL 실행 중 유효한 현재 스키마를 캡처하고, 현재 스키마를 사용하여 부적격 객체 이름(있는 경우)을 해결합니다. 따라서 Replicat에 대해 지정된 MAP 문은 부적격 객체 이름이 있는 DDL에 대해 올바르게 작동합니다.

또한 대상에서 DDL이 성공하는 데 필요한 경우 소스 세션 스키마를 다른 대상 세션 스키마에 매핑할 수도 있습니다. 이 매핑은 전역 매핑이며 동일한 스키마 이름을 포함하는 다른 매핑을 대체합니다. 세션 스키마를 매핑하려면 DDLOPTIONS 매개변수를 MAPSESSIONSCHEMA 옵션과 함께 사용합니다.

기본 또는 매핑된 세션 스키마 매핑이 실패하면 다음 DDLERROR 매개변수 문으로 오류를 처리할 수 있습니다. 여기서 오류 1435는 스키마가 존재하지 않음을 의미합니다.

DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION