-
[ORACLE] 오라클 DB의 논리적/물리적 구조 및 용어 정리Database/Oracle 2023. 2. 15. 17:26
오라클 관련 에러를 찾다보니까
DB 에 저장 구조는 어떻게 되어있는지 생각해본적이 없는 것 같더라고...?🤔
그래서! 오늘은 오라클 DB 는 어떤 구조로 되어있는지,
또 용어들에 대한 부족했던 지식을 보충해보려고 해
## 오라클 DB의 논리적/물리적 구조의 이해
논리적 구성요소로는 Tablespaces / segments / Extents / Blocks 로 이루어져있다.
물리적 구성요소로는 Process / Memory / File 등이 있다.
그리고 오라클의 파일은 실제 데이터가 저장되는 Data File(데이터의 운영체제 블록에 저장됨),
장애가 발생했을 때 복구용으로 활용하는 Redo Log File,
데이터 파일과 리두 로그 파일의 위치를 가지고 있는 Control File,
데이터베이스 파라미터를 저장하는 Parameter File 등이 있다.
## 오라클 DB 의 논리적 구조
Block
데이터 블록(Data Block)은 데이터를 저장하는 최소 논리적 단위, IO단위로서
논리 블록(Logical Block) / 페이지(Page) 등으로 불린다.
이 때, Data Block의 사이즈는 입출력을 원활히 하기 위해 흔히 운영 체제 블록(OS블록)의 정수배로 결정되어,
디스크의 데이터 파일에 저장된다.
쉽게 말해 오라클 DB에 데이터를 쓰고, 읽는 동작의 최소 단위이라는 것!
데이터 블록의 크기는 db_block_size 를 통해서 결정되며 수정이 불가능하다.
재설정을 위해서는 데이터베이스를 다시 설치했어야하나 오라클 9i 부터는 변경이 가능하다.
"
개념이 잘 그려지지 않았지만, 데이터를 구분하는 단위로 생각해야겠어.
"
Extent
논리적으로 연속적인 데이터 블록의 집합이다.
Dictionary managed tablespaces 에서 초기 확장 영역은 5개의블록으로 이루어 지고 기본적으로 그 크기가 다 다르다.
최소값은 1이고 최댓값은 OS에 따라 다르다.
상위 단위인 Segment에 할당된 초기 Extent 가 소진되어 더 많은 공간이 필요한 경우 오라클은 자동으로 해당 Segment에 대한 추가 Extent를 할당하는데, 이 추가 Extent 는 이전 Extent와 같거나 더 큰 사이즈이다.
Segment
하나 이상의 Extent 가 모여서 만들어진 것이 Segment 이다.
Object 중에서 저장 공간을 가지고 있는 것이며, 데이터를 담고 있는 테이블, 그러나 안의 내용에 따라 이름이 달라진다.
즉, DB 내에 생성되는 모든 객체(Table, Index, View, Seqence, Synonym 등)들을 Segment 라고 한다.
Segment는 하나의 테이블스페이스에 저장되는 하나의 구성요소이다.
[ + Segment 종류 ]
- Data Segments : table, table partition, cluster
- Index Segments : index-oraganised table, index partition
- Undo Segments : rollback segment
- Temporary Segments
[ + Object 와 Segment 의 차이 ]
Object 는 오라클에서 데이터를 관리하기 위해 생성하는 모든 것을 말한다.
저장공간을 할당받지 않는 객체들 → Table, Index, View, Sequence, Synonym 등등..
Segment 는 Object 중에서 저장공간을 가지고 있는 것들을 말한다. → Table, Index
Tablespace
하나의 DB를 구성하는 여러 개의 논리적 구조들을 TableSpace 라고 한다.
보통 TableSpace 는 Universal Installer 에 의해 기본적으로 3개(SYSTEM / UNDOTBS / TEMP Tablespace)가 생성되며,
사용자에 의해 여러 개의 테이블 스페이스가 생성 될 수도 있다.
Database
오라클 서버에서 Database는 하나의 연속적인 공간을 말하는 것이 아니라,
여러 개의 Tablespace라는 논리적 구조가 모여서 하나의 Database를 구성하게 된다.
일반적으로 사용자들이 말하는 Database는 논리적 개념에서 사용되는 용어이며, Data 집합의 의미이다.
## 오라클 DB 의 물리적 구조
Data File
모든 오라클 DB는 하나 이상의 물리적 Data File을 가진다.
Data File은 하나의 DB에만 관련되며, 영역이 부족할 때 자동으로 확장될 수 있다.
Data File의 데이터는 DB가 정상적으로 작동하는 동안 언제든지 읽을 수 있으며 오라클의 메모리 캐시에 저장된다.
수정된 데이터나새로운 데이터를 Data File에 즉시 쓸 필요는 없다.
디스크 액세스량을 줄이고 성능을 향상시키기 위해 메모리에 저장했다가 적합한 데이터 파일에 한 번에 쓰게 되는데,
이것은 오라클의 DBWin 백그라운드 프로세스가 결정한다.
Control File
모든 오라클 DB는 Control File을 가진다.
Control File에는 DB의 물리적 구조를 지정하는 입력 항목이 있다.
(DB 이름, Data File 및 Redolog File 이름이나 위치, DB 생성 기록 등)DB가 오픈 될 때 마다, Control File은 데이터 파일처리를 위해 반드시 오픈 되어야 하며,
Data File과 Redolog File을 지정하기 위해 사용된다.
만약 물리적인 dB 구성이 변경된다면(새로운 Data File 이나 Redolog File이 생성되는 경우)
Control File은 자동으로 오라클 RDBMS에 의해 변경된 내용이 수정된다.
또한 DB 복구가 필요할 때에도 사용된다.
Control File을 장애로부터 보호하기 위해, 오라클 RDBMS는 복수 개의 Control File 사용을 미러링 방식으로 허용한다.
즉 두 개 이상의 Control File 복사본을 서로 다른 디스크에 위치 시킬 수 있다.
Redolog File
모든 DB 변경 정보를 기록하는 일을 한다.
만약 수정된 내용을 Data File에 반영하는데 실패하더라도, 변경 사항은 Redolog File 에 기록되어 유지되지 않는다.
Redolog File의 정보는 시스템이나 미디어 장애 시 복구를 위해서만 사용된다.
Parameter File
DB와 인스턴스에 대한 Parameter들을 기록 및 관리하는 파일이다.
ETC..
Archived log File / Alert, Trace log File 등등..
Ref.
오라클 DB의 논리적/물리적 구조
https://dataonair.or.kr/db-tech-reference/d-guide/dbms-1/?mod=document&uid=101841
http://ojc.asia/bbs/board.php?bo_table=LecOracle&wr_id=303
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=nkyle9361&logNo=221356673889https://otsteam.tistory.com/330
Database Block
https://tawool.tistory.com/193