Método de cierre de Oracle

9

Cerrar una base de datos antes de realizar una actualización o un parche se puede hacer de varias maneras.

shutdown immediate;

o

shutdown abort;
startup restrict;
shutdown immediate;

o

shutdown abort;
startup restrict;
shutdown;

o

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

Por supuesto, también hay otras opciones. ¿Cuál debería preferirse y por qué?

Leigh Riffel
fuente

Respuestas:

12

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 shutdowncomandos SQL * Plus que logran esto en teoría, todos los cuales evitan inmediatamente que se conecten nuevas sesiones a la instancia:

  1. shutdown normalo 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 shutdownmodo que no cancelaba las transacciones en ejecución.
  2. shutdown transactional: desconecta las sesiones una vez que se ejecutan las transacciones actualmente completas, evitando que comiencen nuevas transacciones.
  3. 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 shutdownes 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 immediatemenos 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 immediatepara 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.
Jack dice que intente topanswers.xyz
fuente
¿Puede proporcionar más detalles sobre las desventajas de 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 un shutdown abort, particularmente si es más rápido y vamos a hacer inmediatamente ay startup restricta shutdown immediate? En otras palabras, ¿hay hechos que podamos ver para respaldar la grave advertencia de Oracle shutdown abort?
Leigh Riffel
@Leigh: el único peligro específico que conozco se shutdown abortrelaciona con la copia de seguridad accidental de registros en línea, pero eso es solo en el caso de que posteriormente no se realice un apagado limpio. Si sabe lo que está haciendo, creo que shutdown abortpuede considerarse perfectamente seguro, y no estoy seguro de si la posición de Oracle cuenta como una "advertencia grave" ;-)
Jack dice que intente topanswers.xyz
3

Prefiero el método de apagado y apagado porque es la forma más rápida de desactivar una base de datos. hay algunas operaciones que no se pueden hacer después de un apagado, por ejemplo

  • recrear el archivo de control de la base de datos con crear registros de reinicio del archivo de control (para cambiar el nombre de la base de datos, cambiar el nombre de los archivos de registro para cambiar el nombre de los archivos de datos)
  • cambie el dbid con el procedimiento de dbms_backup_restore (este fue el único método en 8i para cambiar el dbid)

En ambos casos, la base de datos estaba dañada y debe restaurarse desde una copia de seguridad completa.

desde 9i, el cambio de nombre de la base de datos o el cambio de dbid se pueden hacer con la utilidad dbnewid . Hasta donde sé, la utilidad verifica si la base de datos se cerró correctamente. El cambio de nombre de archivos de datos, archivos temporales y archivos de registro se puede realizar mediante la ejecución de las instrucciones SQL adecuadas sin volver a crear el archivo de control, por supuesto.

milagro173
fuente