El objetivo al cerrar por mantenimiento (o copia de seguridad en frío) es que la base de datos se deje en un estado coherente sin necesidad de reversión / recuperación al inicio.
Hay 3 shutdown
comandos SQL * Plus que logran esto en teoría, todos los cuales evitan inmediatamente que se conecten nuevas sesiones a la instancia:
shutdown normal
o simplemente shutdown
: espera a que todas las sesiones se desconecten. Este modo rara vez se usa en la práctica porque se basa en clientes con buen comportamiento que no dejan las conexiones abiertas. Este solía ser el único shutdown
modo que no cancelaba las transacciones en ejecución.
shutdown transactional
: desconecta las sesiones una vez que se ejecutan las transacciones actualmente completas, evitando que comiencen nuevas transacciones.
shutdown immediate
: desconecta todas las sesiones inmediatamente y revierte las transacciones interrumpidas antes de cerrar. Tenga en cuenta que las desconexiones son inmediatas, pero el cierre puede no serlo, ya que cualquier transacción interrumpida puede demorar en revertirse.
El cuarto modo de shutdown
es shutdown abort
. Esto es como tirar del cable de alimentación: la instancia se detiene ahora sin ninguna limpieza. Por lo general, desea volver a abrir la base de datos después y cerrarla limpiamente inmediatamente después, como en su ejemplo. La guía de conceptos dice :
Este modo está destinado a situaciones de emergencia, como cuando ninguna otra forma de apagado tiene éxito.
Todos los ejemplos que proporcione realizan un punto de control como parte de los puntos de control más shutdown [normal]
o shutdown immediate
menos explícitos, presumiblemente para reducir el tiempo requerido para la recuperación .
consejos generales:
- No utilice
shutdown normal
.
- Úselo solo
shutdown transactional
para el cierre asistido , cuando desee minimizar las transacciones canceladas (asistido solo porque este tipo de cierre no garantiza el cierre de la base de datos en caso de incumplimiento de los tiempos de espera).
- Úselo
shutdown immediate
para el cierre desatendido o cuando no le interesen las transacciones que se ejecutan actualmente.
- No lo use
shutdown abort
(más inicio / apagado) a menos que sea necesario; esto era más común en versiones anteriores de Oracle que en la actualidad. En otras situaciones (no parche / actualización), si necesita minimizar el tiempo de inactividad, este modo puede ser apropiado.
shutdown abort
? Jugando al antagonista, si podemos confiar en que Oracle se recuperará correctamente cuando se extrae el poder, ¿no deberíamos confiar en él durante unshutdown abort
, particularmente si es más rápido y vamos a hacer inmediatamente aystartup restrict
ashutdown immediate
? En otras palabras, ¿hay hechos que podamos ver para respaldar la grave advertencia de Oracleshutdown abort
?