Vamos a ver un error que ocurrió en una migración al subir de una versión 10g a 11g, el error es el siguiente “Error ORA-04062: timestamp of procedure has been change” Este error se produce al ejecutar cualquier procedimiento o función en nuestra base de datos. ¿Cuál es el motivo de este error?
Es el parámetro REMOTE_DEPENDENCIES_MODE que al subir de versión no se dejo con el valor correcto.
La causa reside en cómo se manejan las dependencias entre objetos mediante el parámetro REMOTE_DEPENDENCIES_MODE.
Este parámetro tiene dos únicos valores posibles, TIMESTAMP o SIGNATURE. Ésta es la definición del parámetro según Oracle
Aquí el enlace a la página de Oracle
Es decir, cuando el valor es TIMESTAMP Oracle compara los instantes de compilación del procedimiento local y el remoto, y únicamente los ejecuta si ambos coinciden.
El valor SIGNATURE permite que el procedimiento se ejecute al considerarlo seguro, y evita la necesidad de recompilación.
Anuncio publicitario
Ajustes de privacidad
Por lo tanto, modificamos el valor del parámetro remote_dependencies_mode a SIGNATURE y podemos hacerlo en caliente ya que no requiere reinicio de la BBDD, atendiendo a su definición:
Sentencia para cambiar el parámetro es la siguiente
alter system set remote_dependencies_mode=signature Scope=Both;