Condivisione della tecnologia

Quali processi in background in Oracle non possono essere terminati?

2024-07-12

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

Oracle ha molti processi in background. Quando si verificano situazioni speciali come il blocco delle tabelle, se si sta aspettando un processo in background, è necessario considerare se è possibile interrompere il processo in background? L'interruzione di questo processo in background causerà l'arresto anomalo dell'istanza? Nello spirito della pratica, la vera conoscenza deriva dalla pratica. Questo articolo si concentra sulle tre versioni di Oracle 11g, Oracle 19c e Oracle 23ai. Uccideremo a turno i processi in background del sistema per vedere se causerà l'attivazione dell'istanza incidente.

1. Istanza del database

1.1 Lo script di test, a turno, interrompe il processo in background

Tutti hanno già familiarità con i sei processi principali di pmon, smon, dbwr, lgwr, ckpt e mman L'eliminazione di questi sei processi principali causerà sicuramente l'arresto anomalo dell'istanza, quindi questi sei vengono eliminati dallo 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


Ecco i risultati dei test di tre versioni
oracolo 11g

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

oracolo 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!

oracolo 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 Riepilogare quali processi in background del database non possono essere terminati

oracolo11g (9)

oracolo 19c (9+4=13)
 

Non c'è alcuna introduzione a bgnn nei documenti ufficiali?

  • PMON (monitor di processo):

    • Responsabile del monitoraggio dello stato dei processi in background e dei processi utente. Quando viene rilevata un'anomalia o una disconnessione del processo utente, PMON è responsabile della pulizia delle risorse correlate e del rilascio dei blocchi.

  • SMON (monitor di sistema):

    • Gestisce le transazioni a livello di sistema e il ripristino delle istanze del database. SMON è responsabile del mantenimento della coerenza del database, compreso il rollback delle transazioni non completate e la pulizia dei segmenti temporanei.

  • DBWR (Scrittore di database):

    • Responsabile della riscrittura dei dati nel buffer su disco. DBWR esegue i checkpoint necessari per garantire la coerenza e la durabilità del database.

  • LGWR (scrittore di registro):

    • Scrivere i record di registro nel buffer del registro di ripristino nel file di registro di ripristino. LGWR garantisce la durabilità delle transazioni, consentendo il ripristino del database dopo un arresto anomalo.

  • CKPT (Processo di Checkpoint):

    • Responsabile dell'esecuzione di operazioni periodiche di checkpoint nell'istanza del database. Un checkpoint scrive i dati modificati dal buffer del database nel file di dati per le operazioni di ripristino.

  • MMAN (Gestore della memoria):

    • Gestire l'allocazione e l'utilizzo della memoria nelle istanze del database. MMAN è responsabile della regolazione automatica delle dimensioni dei pool condivisi e di altre strutture di memoria per ottimizzare le prestazioni del database.

  • VKTM (Custode Virtuale del Tempo):

    • Fornire servizi orari nelle istanze del database. VKTM gestisce tutte le operazioni relative al tempo nel database, inclusa l'attesa di eventi e i timestamp delle transazioni.

    • Un nuovo processo in background introdotto in Oracle 11g.

  • DBRM (Gestore delle risorse del database):

    • Gestisci l'allocazione e l'utilizzo delle risorse del database, inclusi CPU, I/O e numero di connessioni. DBRM garantisce un'allocazione equa ed efficiente delle risorse tra diversi utenti e applicazioni.

    • Nuovo processo in background introdotto in Oracle 11g

  • GEN0 (Processo di background generico):

    • Un processo in background di uso generale utilizzato per gestire varie attività di sistema e operazioni di gestione in un'istanza di database.

    • Processo in background introdotto in Oracle 10g

    23ai (13+1=14)

    Nuovobgnn Processo, 23ai ha più processi bgnn in background Se ucciso, l'istanza si bloccherà. Dovrebbe essere un processo chiave, ma non esiste un riferimento ufficiale? molto strano! Se qualcuno lo sa, lasciate un messaggio e datemi qualche consiglio!

    • CLMN (processo principale di pulizia)

      • Funzione: responsabile dell'esecuzione delle attività di pulizia nell'istanza Oracle.

      • Responsabilità: gestisci la pulizia di processi inattivi, sessioni terminate, transazioni, connessioni di rete, sessioni inattive, transazioni scollegate e connessioni di rete che superano il timeout di inattività.
        Oracle 12c introduce e clnn per assistere pmon nella gestione di alcuni lavori di pulizia

    • LGnn (Log Writer Worker)

      • Funzione: processo ausiliario lgwr.

      • Responsabilità: Nei sistemi multiprocessore, LGWR crea lavoratori per migliorare le prestazioni di scrittura del processo

      • Viene introdotto Oracle19c per assistere il processo lgwr nella gestione della concorrenza per migliorare le prestazioni di scrittura dei log

    • LREG (Processo di registrazione degli ascoltatori)

      • Funzione: registra l'istanza Oracle sul listener.

      • Responsabilità : avvisa gli ascoltatori su istanze, servizi, gestori ed endpoint. Assicurati che l'ascoltatore sappia a quale servizio di database può connettersi.

      • introdotto l'oracolo 12c

    • PMAN (Gestore dei processi)

      • Funzione: gestisci vari processi in background nel database Oracle.

      • Responsabilità: monitorare, avviare e arrestare i processi del distributore e del server condiviso, i broker di connessione, i processi del server in pool per i pool di connessione residenti nel database, i processi della coda dei processi e i processi in background riavviabili secondo necessità.

      • introdotto l'oracolo 12c

2.Istanza ASM

In aggiunta a quanto sopra, esistono anche processi in background relativi alle istanze ASM in un ambiente cluster. Esistono i seguenti quattro processi chiave ASM che non possono essere terminati.

  • ASMB (processo di background ASM)

    • Funzione :ASMB è il processo in background di Automatic Storage Management (ASM). Viene utilizzato principalmente per mantenere la comunicazione tra le istanze ASM e le istanze Oracle. ASMB gestisce le connessioni alle istanze Oracle, gestisce le richieste di operazioni sui metadati tra istanze ASM e client e coordina le operazioni di ribilanciamento dei dati.

  • RBAL (processo principale di ribilanciamento ASM)

    • Funzione : RBAL è un altro processo correlato ad ASM. È responsabile della distribuzione delle attività di ribilanciamento ai processi slave ARBx in altre istanze ASM. Le operazioni di ribilanciamento vengono eseguite quando si aggiungono o rimuovono dischi ASM per garantire una distribuzione uniforme dei dati nel gruppo di dischi.

  • PSP0 (Processo Spawner Process)

    • Funzione : PSP0 è il Process Spawner Process, responsabile della generazione e della gestione di altri processi in background nell'istanza Oracle. Garantisce che i processi in background richiesti vengano avviati all'avvio dell'istanza e che i nuovi processi vengano generati quando necessario.

  • GMON (processo di monitoraggio del gruppo di dischi ASM)

    • Funzione : GMON è il processo di monitoraggio del gruppo di dischi ASM. Viene utilizzato principalmente per monitorare e gestire lo stato e l'integrità dei gruppi di dischi ASM. GMON garantisce la coerenza del gruppo di dischi e intraprende azioni correttive quando rileva errori o incoerenze in un gruppo di dischi.

ps:oracolo 23aiC'è un'altra modifica: il nome del processo in background è stato cambiato da ora_xxxx a db_xxxx, abbandonando la regola utilizzata da decenni.

19c

23ai (non sono sicuro se la versione EE ufficiale utilizzi ora_ o db_)