Oracle DB 구조

oracle은 정말 어려운 것 같음.. mysql을 써봤기도 하고 db가 뭔지 대충 알아도 뭔가 뭔가함.. 하 옛날에 database 실습할 때 자료 좀 남겨둘걸 ㅠㅠ

오라클의 논리적 구성요소

기본적으로는 Data Block > Extents > Segments(table) > Table space

  1. Data Block
    • 데이터를 저장하는 최소 논리적 단위, IO 단위
    • 같은 말 = logical block(논리 블록), page(페이지)
    • 19c 기준 Data Block 크기는 default 8K, 그리고 보통 OS block의 배수로 설정
     show parameter db_block_size
    
  2. Extents (확장 영역)

    논리적으로 연속적인 데이터 블록 집합

    • 세그먼트 초기에 할당된 extents가 꽉 차면, 자동으로 extents 할당 (이전보다 같거나 많이)
  3. Segments (세그먼트)

    잘 모르겠으면 그냥 테이블이라고 생각

    • 테이블 = data segments, 인덱스 = index segments
  4. Table Space

    논리적인 스토리지 단위, 여러 세그먼트로 나뉘어짐

    • 논리적으로 하나의 테이블(세그먼트)는 하나의 테이블스페이스에만 속한다.
    • 단, 물리적으로는 하나의 세그먼트는 여러 데이터 파일에 나뉘어 저장될 수 있다.
    • 하나의 테이블 스페이스는 하나 이상의 (물리적)데이터 파일들 포함

오라클의 물리적 구성요소

  1. 프로세스

  2. 메모리구조

  3. 파일

    • 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 실행 확인할 때

  1. 제어판 -> 관리도구 -> 서비스 메뉴에서 확인할 수 있다

  2. 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이 만듦

Reference