mingming

Oracle - 엑세스 절차 본문

새싹 하이브리드 클라우드/Database

Oracle - 엑세스 절차

mingming_96 2023. 10. 17. 23:22

일반 유저가 데이터베이스에 접속하고 작업을 수행하는 과정을 단계별로 알아보겠습니다.

 

1. 데이터베이스 접속 

사용자가 오라클에 접속을 요청하게 되면, 클라이언트에 유저 프로세스가 생성되고, 서버에는 서버 프로세스가 생성됩니다. 사용자가 sqlplus , SQL Developer , Orange와 같은 툴을 이용해 세션을 맺으려고 할 때 클라이언트 시스템에 유저 프로세스가 생성되고, 작업을 수행하게 되면 해당 세션 정보와 실행된 SQL 정보를 가지고 서버 프로세스에 수행 요청합니다.

 

2. 서버 프로세스와  파싱

데이터베이스에 접속해 서버 프로세스를 할당받았다면 해당 서버 프로세스에 의해 실제 SQL이 수행됩니다. 

이때 서버 프로세스는 SGA 영역의 Shared Pool 라이브러리 캐시에 해당 SQL에 대한 파싱을 의뢰합니다. 

 

파싱 수행 절차

  • 문장 확인 (Syntax Check)
  • Semantic 확인
  • 검색 (Shared Pool Searching)
  • Optimization
  • TM 락 

3. 데이터 버퍼 캐시 검색

파싱 단계가 완료되면 버퍼 캐시에서 찾고자 하는 데이터 블록을 검색합니다. 만약 데이터가 버퍼 캐시내에 존재한다면 해당 데이터 블록을 값으로 반환합니다. 

데이터가 버퍼 캐시내에 존재하지 않는다면 데이터파일에 접근해 해당 데이터 블록을 데이터 버퍼 캐시로 적재합니다.

 

4. 대상 집합 락 처리 

변경데이터 대상에 락을 수행합니다. 해당 락을 TX(Transaction Exclusive) 락이라 부르며, 오직 변경하는 유저만이 해당 로우를 변경할 수 있는 락 입니다. 

해당 데이터 블록을 조회하는 다른 서버 프로세스에 대해서는 조회가 가능하지만 다른 서버 프로세스에서 데이터를 변경하기 위해서는 앞에서 수행된 TX 락이 종료될 때까지 대기해야 합니다.  

 

5. 로그 기록 

WAL (Write Ahead Log) 기법에 의해 리두 로그 버퍼에 내용을 기록하게 됩니다. 변경 전 이미지와 변경 후 이미지의 정보가 리두 로그 버퍼에 기록됩니다. 

 

변경 전 이미지 저장 

실제 작업을 수행하면 변경 전 이미지가 언두에 저장됩니다. 변경 전 이미지는 아래의 이유로 저장됩니다.

  • 롤백 수행 지원
  • 읽기 일관성 지원
  • 인스턴스 복구 수행   

실제 작업 수행

변경이 발생할 데이터에 대해 언두 블록에 저장 후 실제 변경 작업을 수행합니다.  

 

응답 수행 

변경이 성공적으로 수행되면 서버 프로세스가 유저프로세스에게 결과를 전달하게 됩니다.  

 

커밋

커밋을 수행하면 리두 로그 버퍼에 존재하는 변경에 대한 로그를 리두 로그 파일에 기록합니다. 빠른 커밋 아키텍쳐와 지연쓰기 아키텍쳐에 의해 데이터 파일에 기록은 하지 않습니다.  

'새싹 하이브리드 클라우드 > Database' 카테고리의 다른 글

Oracle - 필수 파일  (0) 2023.10.21
Oracle - System View  (2) 2023.10.21
Oracle - 메모리 관리  (2) 2023.10.17
Oracle DB Architecture - Process  (0) 2023.10.12
Oracle DB Architecture - Redo Log Buffer  (0) 2023.10.11