오라클은 데이터를 어떤 방식으로 저장할까? 알아보기 전, 오라클 구조에 대해 먼저 알아보자.
오라클 구조는 2가지로 나뉜다.
1. 논리적 구조 : 데이터가 저장되는 디스크의 공간을 효율적으로 사용 가능
- 데이터블록 : 데이터가 저장되는 작은 단위 / 데이터의 배수로 공간 확보 / 표준크기는 db_block_size
=> 블록 크기 확인 명령 : show parameter db_block_size 또는 v$parameter
- 익스텐트 : 연속적인 여러 개의 데이터 블록들이 모여 하나의 익스텐트 구성 / 세그먼트를 구성하는 단위
* 하나의 세그먼트 공간이 꽉 차면, 오라클이 새로운 익스텐트를 만들어 세그먼트에 할당함.
- 세그먼트 : 여러 개의 익스텐트들이 모여 하나의 세그먼트 구성 / 하나의 세그먼트에 같은 종류 데이터&객체가 저장됨
*익스텐트는 연속적으로 저장되지 않을 수 있음.
ex. Data segment : 테이블 데이터 / Index segment : 인덱스 정보 저장 / Temporary segment : 임시 데이터 저장 / Rollback segment : 변경되는 데이터의 변경 전의 값 저장
- 테이블스페이스 : 오라클의 논리적 저장 단위 / 성격이 다른 데이터들을 서로 분리하여 저장관리함
* 데이터가 모이면 테이블, 테이블이 모이면 데이터베이스 => 하나의 데이터베이스는 여러 테이블스페이스로 구성
* 무조건 하나 이상의 세그먼트들이 포함됨.
* 물리적으로 하나 이상의 datafile로 구성됨.
2. 물리적 구조
- 데이터 파일 : 실제로 Orcle에서 관리하는 데이터가 저장되는 파일
- 컨트롤 파일 : 이름, 파일, 위치정보, 생성시간, 로그번호, 체크포인트 중요한 정보들이 저장됨.
- Redo 로그 파일 : DB의 변경 내역 저장, 데이터변경할 때 오류나도 redo로그파일로 복구가능
- 설정 파일 : DB 및 오라클 서버 관련 설정 정보 저장
- alert/trace log file : 오류 발생 시, 오류에 대한 정보나 메시지 저장