PERMITIRNOOPUPDATES | NOALLOWNOOPUPDATES
Válido para
Replicat
Descripción
Utilice ALLOWNOOPUPDATES y NOALLOWNOOPUPDATES para controlar cómo responde Replicat a una operación no-op. Una operación de no operación es aquella en la que no hay ningún efecto en la tabla de destino. Los siguientes son algunos ejemplos de cómo puede ocurrir esto.
-
La tabla de origen tiene una columna que no existe en la tabla de destino o tiene una columna que se ha excluido de la replicación (con una cláusula
COLSEXCEPT). En cualquier caso, si se actualiza esa columna de origen, no habrá ningún nombre de columna de destino que utilizar en la cláusulaSETdentro de la sentencia SQL de Replicat. -
Se realiza una actualización que establece una columna con el mismo valor que la actual. La base de datos no registra el nuevo valor, porque no ha cambiado. Sin embargo, Oracle GoldenGate captura la operación como un registro de cambios porque la clave primaria se ha registrado, pero no hay ningún valor de columna para la cláusula
SETen la sentencia SQL de Replicat.
Cuando se utiliza NOALLOWNOOPUPDATES, Replicat solo finaliza de forma anormal si las tablas de origen y destino no tienen una clave definida o si Replicat no utiliza KEYCOLS. En tales casos, en los que la tabla de destino no tiene una clave única definida y se lleva a cabo una operación de actualización en cualquiera de las columnas de origen, se produce un error similar al siguiente:
Encountered an update for target table TELLER, which has no unique key defined. KEYCOLS can be used to define a key. Use ALLOWNOOPUPDATES to process the update without applying it to the target database. Use APPLYNOOPUPDATES to force the update to be applied using all columns in both the SET and WHERE clause.
Puede utilizar el parámetro APPLYNOOPUPDATES para forzar la aplicación de UPDATE. APPLYNOOPUPDATES sustituye a ALLOWNOOPUPDATES. Si se especifican ambos, Replicat aplica actualizaciones para las que hay columnas clave para las tablas de origen y destino.
Si se especifica ALLOWNOOPUPDATES cuando se utiliza el parámetro HANDLECOLLISIONS o INSERTMISSINGUPDATES y si Oracle GoldenGate tiene todos los valores de clave de destino, Oracle GoldenGate aplica un valor UPDATE mediante el uso de todas las columnas de la tabla en la cláusula SET y la cláusula WHERE (llamando al comportamiento APPLYNOOPUPDATES). Esto es necesario para que Oracle GoldenGate pueda determinar si la fila está presente o falta. Si falta, Oracle GoldenGate convierte UPDATE en INSERT.
Valor por defecto
NOALLOWNOOPUPDATES
Sintaxis
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES