2020. 6. 2.

[Oracle] 8장 테이블스페이스 및 데이터 파일 관리


테이블스페이스란?
  • 테이타파일을 논리적으로 묶어서 만든다.
# 그럼 쓰냐?
# 데이타파일은 한계가 있기 때문에 무한대로 쓸수 없다.
# 데이터 파일의 한계를 결정짓는것은 가장 작은 크기(파티션 크기) 결정된다.
  • 일을 늦게하는사람을 기준으로 만든다.
  • 최소 속도 단기 이론 : 일을 늦게하는사람을 개선

mysql 오라클에 인수합병되면서 테이블 스페이스를 쓸수있게되었다.
  • 대용량파일 사용 가능
테이블스페이스를 만들려면 데이타파일 1개이상 있으면 된다.
보통의 사용자는 테이블스페이스를 쓰는것이다.
  • 데이타파일 지정안됨

*테이블스페이스 유형

테이블스페이스는 네개로 나눈다.  크게는 두개로 나눈다.
  • SYSTEM tablespace

# 일반사용자가 절대 사용하면 안된다.
# 오라클 설치시 만들어지고 삭제나 만들거나 수정 불가능하다.
  • Non-SYSTEM tablespace(SYSTEM 테이블스페이스)
    • undo 테이블 스페이스
실행 취소, 롤백 저장 - undo segment
  • temporary 테이블 스페이스
임시로 저장하는
  • 일반 유저용 테이블 스페이스
우리가 쓰는 테이블

# 대문자로 되어있는 친구들은 예약어거나 테이블명이다.
# 최소 10%이상의 공간이 남아있어야한다.
# undo temporary 물리적인 속성이 다르고 명령어도 다르다.

*테이블스페이스 생성

CREATE TABLESPACE [테이블 스페이스 이름]
테이블스페이스는 명령을 사용하여 생성됩니다.

CREATE TABLESPACE userdata
DATAFILE '/u01/oradata/userdata01.dbf' SIZE 100M
AUTOEXTEND ON NEXT 5M MAXSIZE 200M;

# 보통은 위에 두줄밖에 안쓴다. 하지만 반드시 사용해야함
# redo log 파일처럼 100M 아예 만들어진다.
# 아래 스토리지 수정되는 것은 안쓰고 연초계획에 맞춰서 설정한다.
# AUTOEXTEND ON NEXT 5M 5메가씩 알아서 늘어난다.
# MAXSIZE 200M 200메가까지
# 보통은 이사이즈의 4배정도짜리 하드를 사서 구축한다.
  • 꽉차서 디비 멈출가능성 배제

10.R2 버전이상에서 쓸일 없음 하지만 이하는 공부를 해야한다.
안정버전은 11버전이므로 거진 컨버팅으로 되어있다.

*테이블스페이스의 영역 관리

locally managed tablespace:
  • 8.1x 버전때 만들어짐
  • 테이블 스페이스에서 관리되는 사용 가능한 확장 영역
  • 비트맵에 기록되는 사용 가능한 확장 영역
  • 비트는 블록 또는 블록 그룹과 대응
  • 비트 값은 사용 가능한 상태 또는 사용된 상태 표시
# 딕셔너리 관리 테이블스페이스보다 안좋은 점이 없다. 그래서 이걸
dictionary-managed tablespace: (사용하면 안된다)
  • 데이터 딕셔너리에서 사용 가능한 확장 영역 관리
  • 확장 영역이 할당되거나 할당이 해제될 해당 테이블이 갱신됨
# 일일이 설정해줘야하기떄문에 제대로 안할시 경합발생함
# 딕셔너리에 계속해서 트랜잭션을 일으켜서 데이터베이스가 행에 걸린다.

# 딕셔너리는 관리하는 곳이 다른곳에 있기 떄문에 거기까지 가야하지만
# 로컬은 공간애서 설정하기에 다른곳까지 필요가 없다.
# 데이터베이스의 웨이팅 현상이 있는데 로컬은 없고 딕셔너리는 있다.
# CREATE TABLESPACE 만들면 기본 디폴트는 locally managed tablespace 만들어진다.
# DB 사고나면 대형사고기 때문에 일을 맡기기 어렵다.

*실행 취소 테이블스페이스

실행 취소 세그먼트 저장
다른 객체를 포함할수 없음
확장 영역이 지역적으로 관리됨
DATAFILE EXTENT MANAGEMENT 절만 사용할  있음.

CREATE UNDO TABLESPACE undo1
DATAFILE '/u01/oradata/undo01.dbf' SIZE 40M;

#언두 세그먼트는 언두 테이블스페이스에만 만들어지고 오라클에서 만들어지는 것이다.
# 자동으로 만들어지기 떄문에 구지 신경쓸 필요가 없고 두개를 만들어도 하나만 사용한다.

*temporary tablespaces

sort 할때만 사용한다.
  • order by, distinct, union, index 없는 컬럼으로 join할때
영구 객체를 포함할 없음
지역적으로 관리되는 확장 영역 권장

CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/u01/oradata/temp01.dbf' SIZE 500M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;

# 여러 만들어서 쓰는 경우도 있지만 실제로 보기 힘들다.

*읽기 전용 테이블 스페이스

다음 명령을 사용하여 테이블스페이스를 읽기 전용 모드로 설정합니다.


# read only인데 삭제가 가능하다. 근데 사용하는지 의미가 있는건가?

*테이블 스페이스 오프라인 설정

# 테이블 스페이스가 망가져서 리커버리를 사용됨

댓글 없음:

댓글 쓰기