오라클 아키텍처에 대해 알아보도록 하겠습니다. 오라클은 크게 데이터베이스 아키텍처와 인스턴스 아키텍처로 나눌 수 있습니다. 두 아키텍처는 밀접한 관련이 있습니다.
오라클 데이터베이스 아키텍처
오라클 데이터베이스 아키텍처는 여러 가지 구성요소로 이루어져 있습니다. 클라이언트는 데이터베이스와 사용자가 상호작용하는 애플리케이션입니다. 응용 프로그램 서버는 클라이언트가 데이터베이스에 접근할 수 있도록 접속하는 서버입니다. 그리고 데이터베이스 서버는 데이터베이스를 저장하고 관리하고 있는 서버를 말합니다. 인스턴스는 공유 메모리 영역을 가지고 있으며 이를 가지고 데이터베이스 서버에 연결되는 프로세스들을 관리합니다. 데이터베이스는 데이터를 관리하고 있는 서버에 저장된 데이터의 집합이라고 볼 수 있으며 하나 이상의 테이블스페이스, 테이블, 뷰, 인덱스 등으로 구성이 되어 있습니다. 데이터 파일은 세그먼트 단위로 구성이 되는데 이 세그먼트는 테이블스페이스, 테이블, 뷰, 인덱스 등 논리적인 데이터 단위를 말합니다. 데이터 파일은 물리적인 파일로 존재를 하며 운영체제에 저장이 됩니다. 데이터베이스에서 데이터 파일의 용량을 늘려주기 위해서는 데이터 파일을 추가해줘야 합니다. 이 데이터 파일은 백업과 복구에도 밀접한 관련이 있으면 매우 중요한 역할을 하고 있습니다. 롤백 세그먼트는 데이터베이스에서 트렌젝션이 발생하고 사용자가 롤백명령어를 실행했을 경우 트렌젝션 롤백을 실행시켜 주는 논리적인 영역입니다. 테이블스페이스는 데이터베이스에서 인덱스나 테이블 단위의 오브젝트를 저장하는 논리적인 영역입니다. 데이터 파일은 실제로 데이터가 저장되는 물리적인 영역입니다. 컨트롤 파일은 데이터베이스 구조와 상태에 대한 정보를 저장하는 물리적인 파일이고 파라미터 파일은 공유 메모리 영역의 크기나 데이터베이스의 환경설정, 컨트롤 파일 경로 등을 저장하는 물리적인 영역입니다. Redo 로그 파일은 데이터베이스의 변경작업이 저장되는 물리적인 영역이고 데이터베이스에서 문제가 생기거나 데이터를 복구할 때 이 파일로 복구를 진행할 수 있습니다. 여러 개의 그룹으로 구성이 되어 있고 각 그룹별로 여러 개의 물리적인 파일로 저장이 됩니다. 각 물리적인 파일은 멤버라고 지칭하며 순차적으로 기록이 되고 첫 번째 그룹이 다 차면 다음 그룹으로 넘어가며 순환 구조로 데이터가 기록이 됩니다. 이 외에도 오라클 데이터베이스를 구성하고 있는 중요한 구성 요소들이 많이 있습니다. 이러한 데이터베이스 아키텍처 구성 요소들은 데이터의 일관성과 무결성, 안정성 등을 보장하는 핵심 구성 요소들입니다.
오라클 인스턴스 아키텍처
오라클 인스턴스 아키텍처는 데이터베이스에서 아주 중요한 역할을 하고 있습니다. 독립적인 메모리 영역을 가지고 데이터베이스에서 액세스들을 제어하는 하나 이상의 프로세스 집합입니다. 인스턴스의 구성요소로는 SGA(System Global Area), 필수 백그라운드 프로세스(Database Writer, Log Writer, System Monitor, Process monitor, Checkpoint), PGA(Program Global Area)가 있습니다. SGA는 Buffer cache, Shared Pool, Redo log buffer가 포함되어 있습니다. Buffer cache는 디스크에 존재하는 데이터 파일에서 데이터를 읽어 메모리에 보관하는 메모리 영역입니다. 최근 사용된 데이터 블록이 저장이 되어 있고 디스크까지 가서 데이터를 가져오는 게 아니라 Buffer cache를 읽어서 메모리 상에서 데이터를 리턴해주게 됩니다. 블록에 대한 변경이 일어나는 경우는 Redo log buffer에 기록이 됩니다. Shared Pool은 공유 메모리 영역 부분으로 SQL문장이나 사용자정보, 데이터 사전등의 정보를 저장하고 있습니다.이로 인해 동일한 쿼리를 실행할 때 처음 쿼리는 속도가 느린데 두 번째부터는 속도가 빨라지는 현상이 첫 번째는 데이터를 Buffer cache에 기록을 하고 두 번째부터는 메모리에서 데이터를 가져오기 때문에 그렇습니다. 또한 Shared Pool은 SQL을 파싱하고 최적화 작업을 진행하며 실행계획을 최적화하는 기능도 담당하고 있습니다. Redo log buffer는 트렌젝션의 변경 내용을 저장하는 버퍼이고 트렌젝션 변경 시 우선적으로 Redo log buffer에 저장이 되며 일정시간 후 디스크에 내용이 저장되게 됩니다. 이로 인해 안정적이고 데이터의 일관성을 유지할 수 있으며 데이터베이스 장애나 문제가 발생하면 Redo 정보를 통해 복구를 진행할 수 있습니다. Redo log buffer는 여러 개가 있을 수 있습니다. 필수 백그라운드 중 Database Writer는 데이터베이스의 Buffer cache에 있는 정보를 디스크에 내려쓰는 역할을 하는 프로세스입니다. 일정 주기마다 Buffer cache에서 변경된 내용을 알아서 디스크에다 내려쓰는 역할을 합니다. Log Writer는 Redo log buffer에 저장된 변경된 정보를 redo log file 디스크에다 내려쓰는 역할을 하는 백그라운드 프로세스 입니다. 데이터베이스의 변경정보를 저장하거나 복구시 필요한 역할을 하는 중요한 프로세스입니다. System Monitor는 시스템 시작시 초기화 작업을 수행하며 인스턴스 종료 시 모든 프로세스를 종료시킵니다. 또한 데이터베이스의 Buffer cache의 내용을 디스크에 저장하도록 하며 오래된 트렌젝션을 감지해서 롤백하고 사용하지 않는 테이블스페이스를 해제하는 등 인스턴스에서 가장 중요한 역할을 담당하고 있습니다. Process monitor는 프로세스를 모니터링하면서 프로세스의 비정상적 종료나 응답이 없는 경우 프로세스를 종료시키고 메모리를 반환시켜줍니다. 또한 트렌젝션 롤백을 관리하며 자동 메모리 관리도 진행하고 있습니다. 데이터베이스가 안정적으로 운영하기 위해 매우 중요한 역할을 하는 프로세스입니다. Checkpoint는 데이터베이스의 변경 내용을 디스크에 기록하는 역할을 하는 필수 백그라운드 프로세스입니다. 주기적으로 데이터베이스에 자동으로 데이터를 디스크에 기록하는데 이를 체크포인트라고 합니다. 체크포인트 주기는 DBA가 설정할 수 있으며 데이터베이스가 활성화 되어 있으면 주기적으로 체크포인트가 실행됩니다.
오라클 데이터베이스와 인스턴스의 관계
오라클 데이터베이스는 디스크에 저장되는 데이터의 집합이며 인스턴스에 의해 관리가 됩니다. 데이터베이스가 시작이 될 때 인스턴스는 메모리를 할당받고 백그라운드 프로세스들이 실행되며 각 인스턴스는 독립적인 메모리 영역을 가집니다. 이 인스턴스는 트렌젝션의 액세스를 관리하고 데이터베이스의 상태를 관리하며 자원을 효율적으로 관리합니다. 오라클 데이터베이스는 물리적 구조라 볼 수 있고 인스턴스는 메모리상에 존재하는 논리적 구조로써 인스턴스가 데이터베이스를 관리하는 역할을 합니다.
'IT정보' 카테고리의 다른 글
시스템 뷰 (2) | 2023.05.02 |
---|---|
오라클 실행 계획 (0) | 2023.05.01 |
오라클에 관하여 (0) | 2023.04.30 |
오라클 데이터 정규화 (0) | 2023.04.29 |
오라클 조인 서브쿼리 (0) | 2023.04.28 |
댓글