La bitacora de eventos (event_log) muestra la siguiente entra una y otra vez:
Line# 1738481: SharePlex Instance:sp_cop2102: 01/16/08 00:19 Error:
Skipping failed DDL Replication [sp_opst/4187]
Line# 1738482: SharePlex Instance:sp_cop2102: 01/16/08 00:20 Error: OCI
Error: ORA-00959: tablespace '' does not exist.
[sp_opst/4187]
El error puede deberse a que un tablespace específico no existe en la base de datos del servidor de destino, hay varias razones para que esto sucediera, algunas de ellas son:
1. La estructura lógica de la base de datos del destino cambió en el servidor de destino despues que la replicación fué iniciada, por lo que el tablespace en cuestión no existe al momento. Para resolver el error, se puede parar el proceso de Post y realizar los cambios los cambios a la estructura lógica de la base de datos en el servidor destino de tal manera que el tablespace sea creado.
2. El parámetro SP_OCT_REPLICATE_ALL_DDL puede haber sido ajustado a 1 inadvertidamente en el servidor de origen de SharePlex, esto provocaría que cualquier DDL ejecutado en el servidor de origen (sin importar si esta en la replicación) sea replicado a la base de datos del servidor de destino, provocando el error de Oracle anteriormente descrito.
La solución podría ser ajustar el parámetro SP_OPO_STOP_ON_DDL_ERR a 0 en el servidor de destino usando el utilitario sp_ctrl y luego reiniciar el proceso de Post, esto le permitirá al proceso Post continuar aún cuando encuentre un error de DDL (lenguaje de definición de datos), una vez que el problema haya sido resuelto, este parámetro puede ser ajustado nuevamente a 1 permitiendo que el proceso Post se detenga cuando encuentre un error de DDL, el parámetro surtirá efecto una vez que el proceso de Post sea reiniciado.
3. La característica de auto agregado (AUTO ADD) está habilitada por defecto ya que el parámetro SP_OCT_AUTOADD_ENABLE está ajustado a 1, esto provoca que algunas sentencias DDL se repliquen aún cuando el parámetro para todas las formas de DDL esté deshabilitado (SP_OCT_REPLICATE_ALL_DDL).
En el servidor destino ignore las sentencias DDL ajustando el parámetro SP_OPO_STOP_ON_DDL_ERR a 0 y reinicie el proceso de Post, a partir de este momento todos los errores debido a sentencias DDL serán ignoradas por el proceso Post, una vez que la sentencia DDL problemática haya pasado el proceso Post, el parámetro SP_OPO_STOP_ON_DDL_ERR puede retornar a su valor por defecto 0 usando el utilitario sp_ctrl y ejecutando la sentencia "reset param SP_OPO_STOP_ON_DDL_ERR". Dejarlo habilitado indefinidamente no es una buena idea. por favor refierase a la solución 21396 para más detalles.
En resumen:
A. Ajuste el parámetro e inicie el proceso Post:
sp_ctrl> set param SP_OPO_STOP_ON_DDL_ERR 0
sp_ctrl> start post
B. Deshabilitarlo y ajustarlo a su valor por defecto:
sp_ctrl> reset param SP_OPO_STOP_ON_DDL_ERR
Para evitar la causa y el problema no se presente en el futuro, deshabilite la característica de auto agregado al ajustar el siguiente parámetro del proceso Capture en el servidor de origen como se detalla a continuación.
sp_ctrl> set param SP_OCT_AUTOADD_ENABLE 0
© ALL RIGHTS RESERVED. Terms of Use Privacy Cookie Preference Center