Identificación Correcta de Nombres de Objetos No Cualificados en DDL

Extract captura el esquema actual (también denominado esquema de sesión) que está en vigor cuando se ejecuta una operación DDL. El contenedor actual también se captura si el origen es una base de datos de contenedor multi-inquilino.

El contenedor y el esquema se utilizan para resolver nombres de objetos no cualificados en el DDL.

Considere el siguiente ejemplo:

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

En ambas sentencias DDL, la tabla no calificada TAB1 se resuelve como SCOTT.TAB1 en función del esquema actual SCOTT que está en vigor durante la ejecución DDL.

Hay otra forma de definir el esquema actual, que es definir current_schema para la sesión, como en el siguiente ejemplo:

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

En ambas sentencias DDL, la tabla no calificada EMPLOYEES se resuelve como HR.EMPLOYEES según el esquema actual HR que está en vigor durante la ejecución de DDL.

Extract captura el esquema actual que está en vigor durante la ejecución de DDL y resuelve los nombres de objeto no cualificados (si los hay) mediante el esquema actual. Como resultado, las sentencias MAP especificadas para Replicat funcionan correctamente para DDL con nombres de objeto no cualificados.

También puede asignar un esquema de sesión de origen a otro esquema de sesión de destino, si es necesario para que el DDL se realice correctamente en el destino. Esta asignación es global y sustituye cualquier otra asignación que implique los mismos nombres de esquema. Para asignar esquemas de sesión, utilice el parámetro DDLOPTIONS con la opción MAPSESSIONSCHEMA.

Si falla la asignación de esquema de sesión por defecto o asignada, puede manejar el error con la siguiente sentencia de parámetro DDLERROR, donde el error 1435 significa que el esquema no existe.

DDLERROR 1435 IGNORE INCLUDE OPTYPE ALTER OBJTYPE SESSION