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).
-
Clave primaria si no contiene ninguna columna
VARCHAR2/NVARCHAR2ampliada (32K). Clave primaria sin columnas invisibles. -
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/NVARCHAR2ampliadas (32K). Para soportar una clave que contiene columnas que forman parte de un índice invisible, debe utilizar el parámetroALLOWINVISIBLEINDEXKEYSen el archivoGLOBALSde Oracle GoldenGate. -
Primera clave única alfanuméricamente sin columnas virtuales, sin UDT, sin columnas
VARCHAR2/NVARCHAR2ampliadas (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ámetroALLOWINVISIBLEINDEXKEYSen el archivoGLOBALSde Oracle GoldenGate.
-
-
Claves únicas no nulas: al menos una columna de una de las claves únicas no debe ser nula. Esto se debe a que
NOALLOWNULLABLEKEYSes el valor por defecto.
Nota: ALLOWNULLABLEKEYS no es válido para Replicat integrado.
-
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/NVARCHAR2ampliadas (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:
-
No se ha especificado el parámetro
KEYCOLS. -
No se ha especificado el parámetro
USEALLKEYCOLUMNS. -
No se ha especificado el parámetro
ALLOWNULLABLEKEYS. -
Las columnas de clave de origen y destino no coinciden.
-
Existe una coincidencia de índice único con la columna de clave de tabla de origen.