테이블스페이스란?
- 테이타파일을 논리적으로 묶어서 만든다.
# 그럼 왜 쓰냐?
# 데이타파일은 한계가 있기 때문에 무한대로 쓸수 없다.
# 데이터 파일의 한계를 결정짓는것은 가장 작은 크기(파티션 크기)로 결정된다.
- 일을 늦게하는사람을 기준으로 만든다.
- 최소 속도 단기 이론 : 일을 늦게하는사람을 개선
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인데 삭제가 가능하다. 근데 왜 사용하는지 의미가 있는건가?
*테이블 스페이스 오프라인 설정
# 테이블 스페이스가 망가져서 리커버리를 할 때 사용됨
댓글 없음:
댓글 쓰기