>php教程 >PHP开发 >오라클 프로세스

오라클 프로세스

黄舟
黄舟원래의
2016-12-15 10:21:191151검색

ORACLE 프로세스
ORACLE 클라이언트와 서버가 상호작용하는 과정은 사용자 프로세스와 ORACLE 프로세스로 구분됩니다. 사용자가 PRO*C 프로그램이나 ORACLE 도구(SQL*PLUS 등)와 같은 ORACLE 클라이언트 응용 프로그램을 실행할 때 사용자가 실행 중인 응용 프로그램에 대한 사용자 프로세스가 생성됩니다. ORACLE 프로세스는 서버 프로세스와 백그라운드 프로세스라는 두 가지 범주로 나뉩니다. 서버 프로세스는 인스턴스에 연결된 사용자 프로세스의 요청을 처리하는 데 사용됩니다.
애플리케이션과 ORACLE이 네트워크를 통하지 않고 동일한 시스템에서 실행되는 경우 일반적으로 사용자 프로세스와 해당 서버 프로세스가 단일 프로세스로 결합되어 시스템 오버헤드를 줄입니다. 그러나 애플리케이션과 ORACLE이 서로 다른 시스템에서 실행되는 경우 사용자 프로세스는 별도의 서버 프로세스를 통해 ORACLE과 통신합니다. 다음 작업을 수행할 수 있습니다.
(1) 애플리케이션에서 발행한 SQL 문의 구문 분석 및 실행
(2) 디스크 데이터 파일에서 필요한 데이터 블록을 SGA의 공유 데이터베이스 버퍼로 읽습니다(언제 블록이 버퍼에 없음)
(3) 처리를 위해 결과를 애플리케이션에 반환합니다.
최고의 성능을 달성하고 여러 사용자를 조정하기 위해 시스템은 다중 프로세스 시스템에서 백그라운드 프로세스라고 하는 몇 가지 추가 프로세스를 사용합니다. 많은 운영 체제에서는 인스턴스가 시작될 때 백그라운드 프로세스가 자동으로 생성됩니다.
ORACLE 인스턴스에는 DBWR(데이터베이스 쓰기 프로세스), LGWR(로그 쓰기 프로세스), CKPT(체크포인트 프로세스), SMON(시스템 모니터링 프로세스), PMON(프로세스 모니터링 프로세스), ARCH(아카이빙) 등 여러 백그라운드 프로세스가 있습니다. 프로세스), RECO(복구 프로세스)입니다. 각 백그라운드 프로세스는 ORACLE 데이터베이스의 다른 부분과 상호 작용하며 처음 5개 프로세스는 필수이고 마지막 2개 프로세스는 선택 사항입니다.
다음은 백그라운드 프로세스의 기능을 간략하게 소개합니다.
1. DBWR 프로세스
이 프로세스의 기능은 버퍼 저장 관리를 담당하는 ORACLE 백그라운드 프로세스입니다. 버퍼의 버퍼가 수정되면 "더티"로 표시됩니다. DBWR의 주요 작업은 "더티" 버퍼를 디스크에 기록하여 버퍼를 "깨끗하게" 유지하는 것입니다.
버퍼 저장소의 버퍼가 데이터베이스를 가득 채우거나 사용자 프로세스로 인해 더러워지면 사용되지 않는 버퍼의 수가 줄어듭니다. 사용되지 않는 버퍼 영역이 디스크에서 메모리 저장 영역으로 블록을 읽으려고 할 때 사용자 프로세스가 사용되지 않는 버퍼 영역을 찾을 수 없을 정도로 작은 양으로 떨어지면 DBWR이 버퍼 저장 영역을 관리하고 사용자 프로세스는 항상
사용하지 않은 버퍼를 사용하여 얻습니다.
ORACLE은 LRU(LEAST RECENTLY USED) 알고리즘(최근에 가장 적게 사용된 알고리즘)을 사용하여 I/O를 최소화하기 위해 최근에 사용된 메모리에 데이터 블록을 유지합니다. DBWR은 다음과 같은 상황에서 더티 버퍼를 디스크에 씁니다.
(1) 서버 프로세스가 버퍼를 "더티" 테이블로 이동하고 더티 테이블이 임계 길이에 도달하면 서비스 프로세스는 DBWR에게 쓰기를 알립니다. 임계 길이는 DB-BLOCK-WRITE-BATCH 매개변수 값의 절반입니다.
(2) 서버 프로세스가 LRU 테이블에서 DB-BLOCK-MAX-SCAN-CNT 버퍼를 찾고 사용되지 않은 버퍼가 발견되지 않으면 검색을 중지하고 DBWR에 쓰라고 알립니다.
(3) 시간 초과가 발생하면(매회 3초) DBWR이 자체적으로 이를 알립니다.
(4) 체크포인트가 발생하면 LGWR이 DBWR에 알립니다.
처음 두 경우에 DBWR은 더티 테이블의 블록을 디스크에 씁니다. 한 번에 쓸 수 있는 블록 수는 초기화 매개변수 DB-BLOCK-WRITE-BATCH에 의해 지정됩니다. 더티 테이블에 지정된 블록 수의 버퍼가 없으면 DBWR은 LUR 테이블에서 다른 더티 버퍼를 찾습니다.
DBWR이 3초 동안 비활성화되면 시간 초과가 발생합니다. 이 경우 DBWR은 LRU 테이블에서 지정된 버퍼 수를 검색하고 발견된 더티 버퍼를 디스크에 씁니다. 데이터베이스가 유휴 상태이면 DBWR은 결국 전체 버퍼 저장소를 디스크에 씁니다.
체크포인트가 발생하면 LGWR은 수정된 버퍼 테이블을 디스크에 기록해야 한다고 지정합니다. DBWR은 지정된 버퍼를 디스크에 씁니다.
일부 플랫폼에서는 인스턴스가 여러 DBWR을 가질 수 있습니다. 이러한 경우 일부 블록은 하나의 디스크에 기록되고 다른 블록은 다른 디스크에 기록될 수 있습니다. DB-WRITERS 매개변수는 DBWR 프로세스 수를 제어합니다.
2. LGWR 프로세스
로그 버퍼를 디스크의 로그 파일에 쓰는 프로세스입니다. 로그 버퍼를 관리하는 ORACLE 백그라운드 프로세스입니다. LGWR 프로세스는 마지막으로 디스크에 기록된 이후의 모든 로그 항목을 인쇄합니다. LGWR 프로세스는 다음 조건에서 로그 버퍼 내용을 디스크에 씁니다.
(1) 사용자 프로세스가 트랜잭션을 커밋하면 커밋 레코드가 기록됩니다.
(2) 3초마다 로그 버퍼를 출력합니다.
(3) 로그 버퍼가 1/3이 차면 로그 버퍼를 출력합니다.
(4) DBWR이 수정 버퍼를 디스크에 쓰면 로그 버퍼가 출력됩니다.
LGWR 프로세스는 활성 미러 온라인 로그 파일 그룹에 동기적으로 기록합니다. 그룹의 파일이 삭제되거나 사용할 수 없게 된 경우 LGWR은 그룹의 다른 파일에 계속해서 쓸 수 있습니다.
로그 버퍼는 순환 버퍼입니다. LGWR이 로그 버퍼의 로그 항목을 로그 파일에 쓴 후 서버 프로세스는 새 로그 항목을 로그 버퍼에 쓸 수 있습니다. LGWR은 일반적으로 매우 빠르게 쓰기 때문에 로그 버퍼에 새 로그 항목이 기록될 공간이 항상 있도록 보장합니다. 트랜잭션이 커밋되면
에 SCN(시스템 수정 번호)이 할당되며 이는 트랜잭션 로그 항목과 함께 로그에 기록됩니다.
3. CKPT 프로세스
프로세스가 실행을 위해 활성화되면 모든 데이터 파일의 헤더가 수정되어 체크포인트를 표시하고 더티 데이터 블록을 데이터 파일에 쓰도록 DBWR에 알립니다.
4. SMON 프로세스
이 프로세스의 기능은 ORACLE 인스턴스가 시작될 때 인스턴스 복구를 수행하는 것이며 더 이상 사용되지 않는 임시 세그먼트를 정리하는 역할도 담당합니다.
5. PMON 프로세스
이 프로세스는 사용자 프로세스 실패 시 프로세스 복구를 수행하며, 전용 저장 영역을 정리하고 프로세스에서 사용하는 리소스를 해제하는 역할을 담당합니다. 예를 들어 활성 트랜잭션 테이블의 상태를 재설정하고, 차단을 해제하고, 활성 프로세스 테이블에서 실패한 프로세스 ID를 제거합니다.
6. RECO 프로세스
이 프로세스는 분산 트랜잭션의 실패를 자동으로 해결하기 위해 분산 옵션을 가질 때 사용되는 프로세스입니다.
7. ARCH 프로세스
이 프로세스는 채워진 온라인 로그 파일을 지정된 저장 장치에 복사합니다. ARCH 프로세스는 로그가 ARCHIVELOG에 사용될 때만 존재하며 자동으로 보관될 수 있습니다.

위 내용은 ORACLE 프로세스 내용입니다. 더 많은 관련 글은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.