Méthode d'arrêt d'Oracle


9

L'arrêt d'une base de données avant d'effectuer une mise à niveau ou un correctif peut se faire de plusieurs manières.

shutdown immediate;

ou

shutdown abort;
startup restrict;
shutdown immediate;

ou

shutdown abort;
startup restrict;
shutdown;

ou

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

Bien sûr, il existe également d'autres options. Lequel devrait être préféré et pourquoi?

Réponses:


12

Le but lors de l'arrêt pour maintenance (ou sauvegarde à froid) est que la base de données reste dans un état cohérent sans besoin de restauration / récupération au démarrage.

Il existe 3 shutdowncommandes SQL * Plus qui permettent d'atteindre cet objectif en théorie, qui empêchent immédiatement la connexion de nouvelles sessions à l'instance:

  1. shutdown normalou tout simplement shutdown: attend que toutes les sessions se déconnectent. Ce mode est rarement utilisé dans la pratique car il repose sur des clients bien élevés qui ne laissent pas les connexions ouvertes. C'était le seul shutdownmode qui n'annulait pas les transactions en cours.
  2. shutdown transactional: déconnecte les sessions une fois les transactions en cours d'exécution terminées, empêchant le démarrage de nouvelles transactions.
  3. shutdown immediate: déconnecte toutes les sessions immédiatement et annule les transactions interrompues avant de s'arrêter. Notez que les déconnexions sont immédiates, mais l'arrêt peut ne pas l'être car toute transaction interrompue peut prendre du temps à revenir en arrière.

Le quatrième mode shutdownest shutdown abort. C'est comme tirer le cordon d'alimentation - l'instance s'arrête maintenant sans aucun nettoyage. Vous souhaitez généralement réactiver la base de données par la suite et la fermer proprement immédiatement après, comme dans votre exemple. Le guide des concepts dit :

Ce mode est destiné aux situations d'urgence, comme lorsqu'aucune autre forme d'arrêt n'est réussie.

Tous les exemples que vous donnez effectuer un point de contrôle dans le cadre du shutdown [normal]ou shutdown immediatesi explicite est sans doute pour point de reprise réduire le temps nécessaire pour la récupération .

conseils généraux:

  • Ne pas utiliser shutdown normal.
  • À utiliser shutdown transactional uniquement pour l'arrêt avec assistance , lorsque vous souhaitez minimiser les transactions annulées (uniquement si ce type d'arrêt n'est pas garanti pour arrêter la base de données en cas de dépassement des délais).
  • À utiliser shutdown immediatepour un arrêt sans assistance ou lorsque vous ne vous souciez pas des transactions en cours d'exécution.
  • N'utilisez pas shutdown abort(plus démarrage / arrêt) sauf si vous le devez - c'était plus courant dans les versions beaucoup plus anciennes d'Oracle qu'aujourd'hui. Dans d'autres situations (pas de correctif / mise à niveau), si vous avez besoin de minimiser les temps d'arrêt, ce mode peut être approprié.

Pouvez-vous fournir plus de détails sur les inconvénients de shutdown abort? Jouer l'antagoniste, si nous pouvons faire confiance à Oracle pour récupérer correctement lorsque le courant est coupé, ne devrions-nous pas lui faire confiance pendant un shutdown abort, en particulier s'il est plus rapide et que nous allons immédiatement faire un startup restrictet un shutdown immediate? En d'autres termes, y a-t-il des faits que nous pouvons voir pour étayer la terrible mise en garde d'Oracle shutdown abort?
Leigh Riffel

@Leigh - Le seul danger spécifique que je connaisse en ce qui concerne shutdown abortconcerne la sauvegarde accidentelle de journaux en ligne , mais qui est seulement dans le cas où vous ne le faites pas par la suite un arrêt propre. Si vous savez ce que vous faites, je pense que cela shutdown abortpeut être considéré comme parfaitement sûr - et je ne sais pas si la position d'Oracle compte comme un "avertissement terrible" ;-)
Jack dit d'essayer topanswers.xyz

3

Je préfère la méthode d' abandon de l' arrêt car c'est le moyen le plus rapide de mettre une base de données hors service. certaines opérations ne peuvent pas être effectuées après un arrêt, par exemple

  • recréer le fichier de contrôle de la base de données avec créer des journaux de réinitialisation du fichier de contrôle (pour renommer la base de données, renommer les fichiers journaux de renommer les fichiers de données)
  • changer la dbid avec la procédure de dbms_backup_restore (c'était la seule méthode dans 8i pour changer la dbid)

dans les deux cas, la base de données a été endommagée et doit être restaurée à partir d'une sauvegarde complète.

depuis 9i le renommage de la base de données ou le changement de la dbid peut se faire avec l' utilitaire dbnewid . pour autant que je sache, l'utilitaire vérifie si la base de données a été arrêtée correctement. renommer les fichiers de données, les fichiers temporaires et les fichiers journaux peut être fait en exécutant les instructions sql appropriées sans recréer le fichier de contrôle bien sûr.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.