¿Qué ocurre con una secuencia de Oracle después de la recuperación de desastres?

StackOverflow https://stackoverflow.com/questions/373914

  •  22-08-2019
  •  | 
  •  

Pregunta

Supongamos que una instancia de Oracle tiene que ser recuperado después de un desastre. Qué secuencias reconfiguradas a su estado inicial o el último estado guardado, o se almacenan en caché los valores preservados?

Muchas gracias. : -)

¿Fue útil?

Solución

Los valores sequnce se almacenan en la SYSTEM.SEQ $ (creo) de mesa, y una caché se mantiene en la memoria de los siguientes valores para ser utilizado, con el tamaño de la memoria caché que depender del valor de caché para la secuencia .

Cuando la caché se ha agotado la SEC $ tabla se actualiza a un nuevo valor (de manera no coherente -. Es decir, sin la aplicación de control de transación de la sesión de usuario) y la siguiente decir 100 valores (si cache = 100) son leer de la memoria.

Supongamos que usted está usando una secuencia con un tamaño de caché de 20. Cuando se selecciona un cierto valor de la secuencia, por ejemplo 1400, la mesa SEC $ se actualiza a un valor de 1420. Incluso si usted deshacer la transacción la SEC $ todavía tiene ese valor hasta que se han utilizado los siguientes 20 valores de secuencia, momento en el cual la SEC $ se actualiza a 1440. Si ha utilizado a continuación, sólo el valor 1.423 y un accidente ocurre instancia, a continuación, cuando el sistema se reinicia el siguiente valor a ser leído desde el sequnce será 1440.

Así que, sí la integridad de la secuencia será preservado y los números no será "reeditado". Tenga en cuenta que lo mismo se aplica a un apagado correcto - al reiniciar obtendrá un nuevo valor de 1,440 en el ejemplo anterior. Secuencias no están garantizados para estar libres brecha en la práctica por esta razón (también porque el uso de un valor y luego hacer retroceder no restaura el valor a la memoria caché).

Otros consejos

No es que tenga alguna experiencia con esto, pero estoy muy de suponer que una recuperación a un estado número de cambio de sistema consistente también volvería a la secuencia del último estado guardado. Cualquier otra cosa sería bastante inútil en términos de recuperación.

En cuanto a los valores almacenados en caché, esos son (puede ser) perdieron incluso cuando la instancia se cierra bajadas de una manera ordenada (*): instancias de memoria caché una serie de valores de secuencia en la memoria (SGA) en lugar de ir a la base de datos cada vez. secuencia sin usar valora que la instancia se ha reservado puede "desaparecer", dejándole con huecos en la secuencia.

(*) Documentación 8i menciona que esto puede suceder con instancias paralelas (RAC), en cuyo caso la secuencia puede incluso no ser estrictamente ascendente (pero sigue siendo único), documentos 10g dicen que sucede en el caso de un fallo de instancia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top