기술나눔

Oracle에서 종료할 수 없는 백그라운드 프로세스는 무엇입니까?

2024-07-12

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

Oracle에는 많은 백그라운드 프로세스가 있습니다. 테이블 잠금과 같은 특별한 상황이 발생했을 때 백그라운드 프로세스를 기다리고 있다면 백그라운드 프로세스를 종료할 수 있는지 고려해야 합니다. 이 백그라운드 프로세스를 종료하면 인스턴스가 중단됩니까? 실천의 정신으로, 진정한 지식은 실천에서 나옵니다. 이 기사에서는 Oracle 11g, Oracle 19c 및 Oracle 23ai의 세 가지 버전에 초점을 맞춰 인스턴스가 발생하는지 확인합니다. 충돌.

1. 데이터베이스 인스턴스

1.1 테스트 스크립트는 차례로 백그라운드 프로세스를 종료합니다.

모든 사람은 이미 pmon, smon, dbwr, lgwr, ckpt 및 mman의 6개 핵심 프로세스에 익숙합니다. 이 6개 핵심 프로세스를 종료하면 인스턴스가 확실히 충돌하므로 이 6개는 스크립트에서 제거됩니다.

#!/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


세 가지 버전의 테스트 결과는 다음과 같습니다.
오라클 11g

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

오라클 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!

오라클 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 종료할 수 없는 데이터베이스 백그라운드 프로세스 요약

oracle11g (9)

오라클 19c (9+4=13)
 

공식 문서에는 bgnn에 대한 소개가 없나요?

  • PMON(프로세스 모니터):

    • 백그라운드 프로세스 및 사용자 프로세스의 상태를 모니터링하는 역할을 담당합니다. 사용자 프로세스의 이상이나 연결 끊김이 감지되면 PMON은 관련 리소스를 정리하고 잠금을 해제하는 역할을 담당합니다.

  • SMON(시스템 모니터):

    • 시스템 수준 트랜잭션과 데이터베이스 인스턴스 복구를 처리합니다. SMON은 완료되지 않은 트랜잭션을 롤백하고 임시 세그먼트를 정리하는 등 데이터베이스의 일관성을 유지하는 역할을 담당합니다.

  • DBWR(데이터베이스 작성자):

    • 버퍼의 데이터를 디스크에 다시 쓰는 역할을 담당합니다. DBWR은 데이터베이스의 일관성과 내구성을 보장하기 위해 필요에 따라 체크포인트를 수행합니다.

  • LGWR(로그 작성자):

    • 리두 로그 버퍼에 있는 로그 레코드를 리두 로그 파일에 씁니다. LGWR은 트랜잭션 내구성을 보장하여 충돌 후 데이터베이스를 복구할 수 있도록 합니다.

  • CKPT(체크포인트 프로세스):

    • 데이터베이스 인스턴스에서 정기적인 체크포인트 작업을 수행하는 역할을 담당합니다. 체크포인트는 복구 작업을 위해 데이터베이스 버퍼의 수정된 데이터를 데이터 파일에 기록합니다.

  • MMAN(메모리 관리자):

    • 데이터베이스 인스턴스의 메모리 할당 및 사용량을 관리합니다. MMAN은 데이터베이스 성능을 최적화하기 위해 공유 풀 및 기타 메모리 구조의 크기를 자동으로 조정하는 역할을 담당합니다.

  • VKTM(Virtual Keeper of Time):

    • 데이터베이스 인스턴스에서 시간 서비스를 제공합니다. VKTM은 이벤트 대기 및 트랜잭션 타임스탬프를 포함하여 데이터베이스의 모든 시간 관련 작업을 관리합니다.

    • Oracle 11g에 새로운 백그라운드 프로세스가 도입되었습니다.

  • DBRM(데이터베이스 리소스 관리자):

    • CPU, I/O, 연결 수를 포함한 데이터베이스 리소스의 할당 및 사용을 관리합니다. DBRM은 다양한 사용자와 애플리케이션 간에 공정하고 효율적인 리소스 할당을 보장합니다.

    • Oracle 11g에 도입된 새로운 백그라운드 프로세스

  • GEN0(일반 백그라운드 프로세스):

    • 데이터베이스 인스턴스에서 다양한 시스템 작업 및 관리 작업을 처리하는 데 사용되는 범용 백그라운드 프로세스입니다.

    • Oracle 10g에 도입된 백그라운드 프로세스

    23ai (13+1=14)

    새로운브그네 프로세스, 23ai에는 여러 개의 백그라운드 bgnn 프로세스가 있습니다. 종료되면 인스턴스가 중단됩니다. 핵심 프로세스여야 하는데 공식적인 참조가 없습니까? 아주 이상한! 혹시 아시는 분 계시면 메시지 남겨주시고 조언 부탁드려요!

    • CLMN(클린업 메인 프로세스)

      • 기능: Oracle 인스턴스에서 정리 작업을 수행하는 역할을 담당합니다.

      • 책임: 정지된 프로세스, 종료된 세션, 트랜잭션, 네트워크 연결, 유휴 세션, 분리된 트랜잭션 및 유휴 시간 초과를 초과한 네트워크 연결의 정리를 관리합니다.
        Oracle 12c는 일부 정리 작업을 처리하는 데 pmon을 지원하기 위해 clnn을 도입했습니다.

    • LGnn (로그 작성자 작업자)

      • 기능: lgwr 보조 프로세스.

      • 책임: 다중 프로세서 시스템에서 LGWR은 프로세스 쓰기 성능을 향상시키기 위해 작업자를 생성합니다.

      • 로그 쓰기 성능을 향상시키기 위해 동시성을 처리하는 lgwr 프로세스를 지원하기 위해 Oracle19c가 도입되었습니다.

    • LREG(청취자 등록 프로세스)

      • 기능: Oracle 인스턴스를 리스너에 등록합니다.

      • 책임 : 인스턴스, 서비스, 핸들러 및 엔드포인트에 대해 리스너에게 알립니다. 리스너가 연결할 수 있는 데이터베이스 서비스를 알고 있는지 확인하십시오.

      • 오라클 12c 도입

    • PMAN(프로세스 관리자)

      • 기능: Oracle 데이터베이스의 다양한 백그라운드 프로세스를 관리합니다.

      • 책임: 필요에 따라 배포자 및 공유 서버 프로세스, 연결 브로커, 데이터베이스 상주 연결 풀을 위한 풀링된 서버 프로세스, 작업 큐 프로세스 및 다시 시작 가능한 백그라운드 프로세스를 모니터링, 시작 및 중지합니다.

      • 오라클 12c 도입

2.ASM 인스턴스

위의 프로세스 외에도 클러스터 환경에는 ASM 인스턴스와 관련된 백그라운드 프로세스가 있으며, 종료할 수 없는 ASM 핵심 프로세스는 다음과 같습니다.

  • ASMB(ASM 백그라운드 프로세스)

    • 기능 :ASMB는 ASM(자동 저장소 관리)의 백그라운드 프로세스입니다. 주로 ASM 인스턴스와 Oracle 인스턴스 간의 통신을 유지하는 데 사용됩니다. ASMB는 Oracle 인스턴스에 대한 연결을 관리하고, ASM 인스턴스와 클라이언트 간의 메타데이터 작업 요청을 처리하고, 데이터 재조정 작업을 조정합니다.

  • RBAL(ASM 리밸런스 마스터 프로세스)

    • 기능 : RBAL은 ASM과 관련된 또 다른 프로세스입니다. 다른 ASM 인스턴스의 ARBx 슬레이브 프로세스에 재조정 작업을 배포하는 일을 담당합니다. ASM 디스크를 추가하거나 제거할 때 재조정 작업이 수행되어 디스크 그룹 전체에 데이터가 균등하게 배포됩니다.

  • PSP0(프로세스 스포너 프로세스)

    • 기능 : PSP0은 Oracle 인스턴스에서 다른 백그라운드 프로세스를 생성하고 관리하는 프로세스 생성자 프로세스입니다. 인스턴스가 시작될 때 필요한 백그라운드 프로세스가 시작되고 필요할 때 새 프로세스가 생성되도록 보장합니다.

  • GMON(ASM 디스크 그룹 모니터 프로세스)

    • 기능 : GMON은 ASM 디스크 그룹 모니터링 프로세스입니다. 주로 ASM 디스크 그룹의 상태를 모니터링하고 관리하는 데 사용됩니다. GMON은 디스크 그룹 일관성을 보장하고 디스크 그룹에서 오류나 불일치를 감지하면 수정 조치를 취합니다.

ps :오라클 23ai또 다른 변경 사항이 있습니다. 백그라운드 프로세스의 이름이 ora_xxxx에서 db_xxxx로 변경되어 수십 년 동안 사용되었던 규칙이 폐기되었습니다.

19세기

23ai(공식 EE 버전이 ora_ 또는 db_를 사용하는지 확실하지 않음)