Oracle DB 구조
in Archive
oracle은 정말 어려운 것 같음.. mysql을 써봤기도 하고 db가 뭔지 대충 알아도 뭔가 뭔가함.. 하 옛날에 database 실습할 때 자료 좀 남겨둘걸 ㅠㅠ
오라클의 논리적 구성요소
기본적으로는 Data Block > Extents > Segments(table) > Table space
- Data Block
- 데이터를 저장하는 최소 논리적 단위, IO 단위
- 같은 말 = logical block(논리 블록), page(페이지)
- 19c 기준 Data Block 크기는 default
8K
, 그리고 보통 OS block의 배수로 설정
show parameter db_block_size
- Extents (확장 영역)
논리적으로 연속적인 데이터 블록 집합
- 세그먼트 초기에 할당된
extents
가 꽉 차면, 자동으로 extents 할당 (이전보다 같거나 많이)
- 세그먼트 초기에 할당된
- Segments (세그먼트)
잘 모르겠으면 그냥 테이블이라고 생각
- 테이블 = data segments, 인덱스 = index segments
- Table Space
논리적인 스토리지 단위, 여러 세그먼트로 나뉘어짐
- 논리적으로 하나의 테이블(세그먼트)는 하나의 테이블스페이스에만 속한다.
- 단, 물리적으로는 하나의 세그먼트는 여러 데이터 파일에 나뉘어 저장될 수 있다.
- 하나의 테이블 스페이스는 하나 이상의 (물리적)데이터 파일들 포함
오라클의 물리적 구성요소
프로세스
메모리구조
파일
- Data file: 실제 데이터 저장, 이 안의 데이터들은 운영체제 블록에 저장
- redo log file: 장애 발생시 복구용
- control file: data file과 redo log file 위치를 가지고 있는 파일
- parameter file: 데이터베이스 파라미터 저장 (db_block_size, cursor 등 파라미터)
Oracle server 와 client
쉽게 말해 server는 oracle server가 설치되어 있는 곳, 그니까 데이터를 저장하는 곳이고 client는 sqlplus 등을 통해 oracle server에 접속함.
오라클 리스너
클라이언트 -> 서버 접속을 위한 오라클 네트워크 관리자
- 리스너를 시작해줘야 클라이언트가 서버 접속 할 수 있다.
윈도우 기준(윈도우를 oracle server로 사용)으로 oracle service와 함께 listener 실행 확인할 때
제어판 -> 관리도구 -> 서비스
메뉴에서 확인할 수 있다cmd
로 확인할 수 있다.
lsnrctl status
lsnrctl start
lsnrctl stop
Oracle 버전/에디션 정보
여기 잘 나와있다: https://bangu4.tistory.com/321
- 대충은,
9i
부터list partitiong
,RAC
같은 기능 등장 11g
는 그리드 컴퓨팅 기반 (?)12c
: 클라우드 컴퓨팅19c
: 자동 인덱싱 등등..
에디션은 PE, XE < SE < EE 집에서 실습할 땐 XE (개발용 무료버전, 단일 인스턴스) 회사는 EE 쓰겠져
Oracle과 sqlplus 사이의 관계
oracle 설치하면 알아서 sqlplus
라는 툴을 번들로 묶어서 준다.
oracle server 에 명령어를 날리는 client 프로그램이라고 보면 됨
이외에도 ..
TOAD
: 유료임, 기능 많음SQL Developer
: 무료, oracle이 만듦