Partage de technologie

Quels processus d’arrière-plan dans Oracle ne peuvent pas être supprimés ?

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Oracle dispose de nombreux processus en arrière-plan. Lorsque vous rencontrez des situations particulières telles que le verrouillage des tables, si vous attendez un processus en arrière-plan, vous devez alors vous demander si vous pouvez arrêter le processus en arrière-plan ? La suppression de ce processus en arrière-plan entraînera-t-elle le crash de l'instance ? Dans l'esprit de la pratique, la vraie connaissance vient de la pratique.Cet article se concentre sur les trois versions d'Oracle 11g, Oracle 19c et Oracle 23ai. Nous supprimerons tour à tour les processus d'arrière-plan du système pour voir si cela entraînera l'instance. accident.

1. Instance de base de données

1.1 Le script de test tue à tour de rôle le processus en arrière-plan

Tout le monde connaît déjà les six processus principaux de pmon, smon, dbwr, lgwr, ckpt et mman. La suppression de ces six processus principaux entraînera certainement le crash de l'instance, ces six processus seront donc éliminés du script.

#!/bin/shfunction startup(){    sqlplus / as sysdba<<EOF    startup    exitEOF}started=`ps -ef | grep pmon | grep -v grep | awk '{print $2}'`test -z "$started" && startup >> /dev/nullsleep 5# List of Oracle background processes to exclude from killingexclude_processes="pmon|smon|dbw0|dbw1|lgwr|ckpt|mman"# Get list of Oracle processesprolist=`ps -ef | grep ora | egrep -v "bash|su|h|ps|grep|more|sleep|awk|LOCAL|sy                                                                             sdba|log|$exclude_processes" | awk '{print $NF}'`for i in $prolistdo    proc_key=`echo $i | awk -F _ '{print $2}'`    pid=`ps -ef | grep $proc_key | grep -v grep | awk '{print $2}'`    test -z $pid && echo "$proc_key does not exist" || {        echo "Killing process $proc_key with PID $pid"        kill -9 $pid        sleep 20        # Check if PMON process exists        pc=`ps -ef | grep pmon | grep -v grep | wc -l`        echo "Number of PMON processes: $pc"        if [ $pc -eq 0 ]; then            echo "Killed process $proc_key has caused instance crash!"            startup >> /dev/null            sleep 5        else            echo "Killed process $proc_key has not caused instance crash."        fi    }done


Voici les résultats des tests de trois versions
oracle 11g

Killed process vktm has caused instance crash!Killed process gen0 has caused instance crash!Killed process dbrm has caused instance crash!

oracle 19c

Killed process clmn has caused instance crash!Killed process vktm has caused instance crash!Killed process gen0 has caused instance crash!Killed process lg00 has caused instance crash!Killed process lg01 has caused instance crash!Killed process lreg has caused instance crash!Killed process dbrm has caused instance crash!Killed process pman has caused instance crash!

oracle 23ai

Killed process clmn has caused instance crash!Killed process vktm has caused instance crash!Killed process gen0 has caused instance crash!Killed process lg00 has caused instance crash!Killed process lg01 has caused instance crash!Killed process lreg has caused instance crash!Killed process dbrm has caused instance crash!Killed process pman has caused instance crash!Killed process bg02 has caused instance crash!

1.2 Résumer quels processus en arrière-plan de la base de données ne peuvent pas être supprimés

oracle11g (9)

oracle 19c (9+4=13)
 

Il n'y a pas d'introduction à bgnn dans les documents officiels ?

  • PMON (Moniteur de processus):

    • Responsable de la surveillance de l'état des processus d'arrière-plan et des processus utilisateur. Lorsqu'une anomalie ou une déconnexion d'un processus utilisateur est détectée, PMON est responsable du nettoyage des ressources associées et de la libération des verrous.

  • SMON (Moniteur système):

    • Gère les transactions au niveau du système et la récupération des instances de base de données. SMON est responsable du maintien de la cohérence de la base de données, notamment en annulant les transactions inachevées et en nettoyant les segments temporaires.

  • DBWR (Rédacteur de base de données):

    • Responsable de l'écriture des données dans le tampon sur le disque. DBWR effectue des points de contrôle si nécessaire pour garantir la cohérence et la durabilité de la base de données.

  • LGWR (Rédacteur de journaux):

    • Écrivez les enregistrements de journal dans le tampon de journalisation dans le fichier de journalisation. LGWR garantit la durabilité des transactions, permettant à la base de données de récupérer après un crash.

  • CKPT (Processus de point de contrôle):

    • Responsable de l'exécution d'opérations de point de contrôle périodiques dans l'instance de base de données. Un point de contrôle écrit les données modifiées du tampon de base de données dans le fichier de données pour les opérations de récupération.

  • MMAN (Gestionnaire de mémoire):

    • Gérez l'allocation et l'utilisation de la mémoire dans les instances de base de données. MMAN est chargé d'ajuster automatiquement la taille des pools partagés et d'autres structures de mémoire pour optimiser les performances de la base de données.

  • VKTM (Gardien Virtuel du Temps):

    • Fournir des services de temps dans les instances de base de données. VKTM gère toutes les opérations liées au temps dans la base de données, y compris l'attente des événements et l'horodatage des transactions.

    • Un nouveau processus en arrière-plan introduit dans Oracle 11g.

  • DBRM (Gestionnaire de ressources de base de données):

    • Gérez l'allocation et l'utilisation des ressources de base de données, y compris le processeur, les E/S et le nombre de connexions. DBRM garantit une allocation juste et efficace des ressources entre les différents utilisateurs et applications.

    • Nouveau processus d'arrière-plan introduit dans Oracle 11g

  • GEN0 (processus d'arrière-plan générique):

    • Processus d'arrière-plan à usage général utilisé pour gérer diverses tâches système et opérations de gestion dans une instance de base de données.

    • Processus d'arrière-plan introduit dans Oracle 10g

    23ai (13+1=14)

    Nouveaubgnn Processus, 23ai a plusieurs processus bgnn en arrière-plan. Si elle est tuée, l'instance plantera. Cela devrait être un processus clé, mais il n'y a pas de référence officielle ? très étrange! Si quelqu'un le sait, laissez-moi un message et donnez-moi quelques conseils !

    • CLMN (processus principal de nettoyage)

      • Fonction: Responsable de l'exécution des tâches de nettoyage dans l'instance Oracle.

      • Responsabilités: gérez le nettoyage des processus morts, des sessions terminées, des transactions, des connexions réseau, des sessions inactives, des transactions détachées et des connexions réseau qui dépassent le délai d'inactivité.
        Oracle 12c introduit et clnn pour aider pmon à gérer certains travaux de nettoyage

    • LGnn (rédacteur de journaux)

      • Fonction: processus auxiliaire lgwr.

      • Responsabilités: Dans les systèmes multiprocesseurs, LGWR crée des travailleurs pour améliorer les performances d'écriture des processus

      • Oracle19c est introduit pour aider le processus lgwr à gérer la concurrence afin d'améliorer les performances d'écriture des journaux.

    • LREG (Processus d'inscription des auditeurs)

      • Fonction : enregistrez l'instance Oracle auprès de l'écouteur.

      • Responsabilités : informe les auditeurs des instances, des services, des gestionnaires et des points de terminaison. Assurez-vous que l'écouteur sait à quel service de base de données il peut se connecter.

      • Oracle 12c introduit

    • PMAN (Gestionnaire de processus)

      • Fonction: Gérer divers processus en arrière-plan dans la base de données Oracle.

      • Responsabilités: Surveillez, démarrez et arrêtez les processus de distribution et de serveur partagé, les courtiers de connexion, les processus de serveur regroupés pour les pools de connexions résidents de base de données, les processus de file d'attente de tâches et les processus d'arrière-plan redémarrables selon les besoins.

      • Oracle 12c introduit

2.Instance ASM

En plus de ce qui précède, il existe également des processus d'arrière-plan liés aux instances ASM dans un environnement de cluster. Les quatre processus clés ASM suivants ne peuvent pas être supprimés.

  • ASMB (processus d'arrière-plan ASM)

    • Fonction :ASMB est le processus d’arrière-plan de la gestion automatique du stockage (ASM). Il est principalement utilisé pour maintenir la communication entre les instances ASM et les instances Oracle. ASMB gère les connexions aux instances Oracle, gère les demandes d'opérations de métadonnées entre les instances ASM et les clients et coordonne les opérations de rééquilibrage des données.

  • RBAL (processus principal de rééquilibrage ASM)

    • Fonction : RBAL est un autre processus lié à l'ASM. Il est responsable de la distribution des tâches de rééquilibrage aux processus esclaves ARBx dans d'autres instances ASM. Les opérations de rééquilibrage sont effectuées lors de l'ajout ou de la suppression de disques ASM pour garantir une répartition uniforme des données sur le groupe de disques.

  • PSP0 (Processus de génération de processus)

    • Fonction : PSP0 est le processus Process Spawner, responsable de la génération et de la gestion d'autres processus en arrière-plan dans l'instance Oracle. Il garantit que les processus d'arrière-plan requis sont démarrés au démarrage de l'instance et que de nouveaux processus sont générés en cas de besoin.

  • GMON (processus de surveillance du groupe de disques ASM)

    • Fonction : GMON est le processus de surveillance des groupes de disques ASM. Il est principalement utilisé pour surveiller et gérer l’état et la santé des groupes de disques ASM. GMON garantit la cohérence du groupe de disques et prend des mesures correctives lorsqu'il détecte des erreurs ou des incohérences dans un groupe de disques.

ps : Oracle 23aiIl y a un autre changement : le nom du processus en arrière-plan est passé de ora_xxxx à db_xxxx, abandonnant la règle utilisée depuis des décennies.

19c

23ai (je ne sais pas si la version officielle EE utilise ora_ ou db_)