Identificando Corretamente Nomes de Objetos Não Qualificados na DDL
O Extract captura o esquema atual (também chamado de esquema de sessão) que está em vigor quando uma operação DDL é executada. O contêiner atual também será capturado se a origem for um banco de dados contêiner multitenant.
O contêiner e o esquema são usados para resolver nomes de objeto não qualificados na DDL.
Considere o seguinte exemplo:
CONNECT ggadmin/PASSWORD
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE EAST.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;
Nas duas instruções DDL, a tabela não qualificada TAB1 é resolvida como SCOTT.TAB1 com base no esquema atual SCOTT que está em vigor durante a execução da DDL.
Há outra maneira de definir o esquema atual, que é definir o current_schema para a sessão, como no seguinte exemplo:
CONNECT ggadmin/PASSWORD
ALTER SESSION SET CURRENT_SCHEMA=SRC;
CREATE TABLE EMPLOYEES (X NUMBER);
CREATE TABLE HR.FINANCE(X NUMBER) AS SELECT * FROM EMPLOYEES;
Nas duas instruções DDL, a tabela não qualificada EMPLOYEES é resolvida como HR.EMPLOYEES com base no esquema atual HR que está em vigor durante a execução da DDL.
O Extract captura o esquema atual que está em vigor durante a execução de DDL e resolve os nomes de objetos não qualificados (se houver) usando o esquema atual. Como resultado, as instruções MAP especificadas para Replicat funcionam corretamente para DDL com nomes de objeto não qualificados.
Você também pode mapear um esquema de sessão de origem para outro esquema de sessão de destino, se isso for necessário para que a DDL seja bem-sucedida no destino. Este mapeamento é global e substitui qualquer outro mapeamento que envolva os mesmos nomes de esquema. Para mapear esquemas de sessão, use o parâmetro DDLOPTIONS com a opção MAPSESSIONSCHEMA.
Se o mapeamento de esquema de sessão padrão ou mapeado falhar, você poderá tratar o erro com a instrução de parâmetro DDLERROR a seguir, em que o erro 1435 significa que o esquema não existe.
DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION