Garantizar la unicidad de fila en la tabla de origen y destino

A menos que se utilice una cláusula KEYCOLS en la sentencia TABLE o MAP, Oracle GoldenGate selecciona un identificador de fila para utilizarlo en el siguiente orden de prioridad, según el número y el tipo de restricciones que se hayan registrado (consulte Configuración y requisitos del log de transacciones).

Nota: La cláusula KEYCOLS no está soportada para las vistas de dualidad de relación JSON (DV de JSON) y las tablas de recopilación de JSON (JCT) porque tienen una única clave predefinida (_id).

  1. Clave primaria si no contiene ninguna columna VARCHAR2/NVARCHAR2 ampliada (32K). Clave primaria sin columnas invisibles.

  2. Clave única: clave única sin columnas invisibles.

    En el caso de un Replicat no integrado, la selección de la clave única es la siguiente:

    • Primera clave única alfanuméricamente sin columnas virtuales, sin UDT, sin columnas basadas en funciones, sin columnas nulas y sin columnas VARCHAR2/NVARCHAR2 ampliadas (32K). Para soportar una clave que contiene columnas que forman parte de un índice invisible, debe utilizar el parámetro ALLOWINVISIBLEINDEXKEYS en el archivo GLOBALS de Oracle GoldenGate.

    • Primera clave única alfanuméricamente sin columnas virtuales, sin UDT, sin columnas VARCHAR2/NVARCHAR2 ampliadas (32K) o sin columnas basadas en funciones, pero puede incluir columnas nulas. Para soportar una clave que contiene columnas que forman parte de un índice invisible, debe utilizar el parámetro ALLOWINVISIBLEINDEXKEYS en el archivo GLOBALS de Oracle GoldenGate.

  3. Claves únicas no nulas: al menos una columna de una de las claves únicas no debe ser nula. Esto se debe a que NOALLOWNULLABLEKEYS es el valor por defecto.

Nota: ALLOWNULLABLEKEYS no es válido para Replicat integrado.

  1. Si no existe ninguno de los tipos de clave anteriores (aunque puede haber otros tipos de claves definidos en la tabla) Oracle GoldenGate construye una pseudoclave de todas las columnas que la base de datos permite se utilizan en una clave única, excluidas las columnas virtuales, los UDT, las columnas basadas en funciones, las columnas VARCHAR2/NVARCHAR2 ampliadas (32K) y cualquier columna que un usuario de Oracle GoldenGate excluya explícitamente de la configuración de Oracle GoldenGate.

    A menos que se excluya lo contrario debido a las restricciones anteriores, se permiten columnas invisibles en la pseudoclave.

Nota: Si hay otras claves no utilizables en una tabla o si no hay ninguna clave en la tabla, Oracle GoldenGate registra un mensaje adecuado en el archivo de informe. La creación de una clave a partir de todas las columnas impide el rendimiento de Oracle GoldenGate en el sistema de origen. En el destino, esta clave hace que Replicat utilice una cláusula WHERE más grande y menos eficaz.

Si una tabla no tiene una clave adecuada o si prefiere que no se utilicen las claves existentes, puede definir una clave de sustitución si la tabla tiene columnas que siempre contienen valores únicos. Para definir esta clave de sustitución, incluya una cláusula KEYCOLS en el parámetro Extract TABLE y el parámetro Replicat MAP. La clave especificada sustituirá cualquier clave primaria o única existente que encuentre Oracle GoldenGate. Para obtener más información, consulte Referencia de parámetros y funciones para Oracle GoldenGate.

Si los siguientes criterios coinciden con Oracle Replicat, debe utilizar un índice único que coincida con las columnas de clave de la tabla de origen: