본문 바로가기

프로그래밍/Oracle

오라클 테이블 스페이스 생성/관리


오라클 테이블 스페이스 생성 =============================================================

*테이블 스페이스 생성

create tablespace [tspace1]
datafile ['c:\oracle_space\tspace1.dbf'] size [10M];

 

*옵션지정 테이블 스페이스 생성

create tablespace [tspace1]
datafile ['c:\oracle_space\tspace1.dbf'] size [10M]
default storage(
initial [2M]          // <- extent(table)생성시 초기값지정
next [1M]           // <- 추가값지정
minextents [1]     // <- extent는 최소 1개 있어야 한다.
maxextents [121] // <- next extent는 최대 121회 요청가능하다.
pctincrease [0]   // <- 매요청시마다 next로 활당할 퍼센트를 지정한다. 50이면 절반씩..(500k->250k->125k....)
);

 

*테이블 스페이스 제거/옵션

drop tablespace [tspace1]
including contents     // <- 스페이스에 세크먼트들이나 등등이 있으면 같이 제거하는 옵션
cascade constraints  // <- 다른 스페이스에서 참조되는 내용이 있더라도 그냥 제거하는 옵션

** 테이블스페이스를 드랍해도 물리적은 파일은 제거되지 않으므로 os측에서 제거해야한다.

 

*테이블스페이스를 선택하여 테이블생성

create table test
(a char(1))
tablespace tspace1   // <- 테이블스페이스 지정


오라클 테이블 스페이스관리 --------------------------------------------------------------

* Temporay Tabelspace
모든 Sort Operation을 위해 필요한 tablespace이다
영구적인 Object를 포함할 수 없다.
Syntax-
 create tablespace [이름]
 default storage [경로/파일명.dbf size 00M]
 permanent - 영구적인 Object를 보유하도록 지정(default)
 temporary - 임시 Object를 보유하도록 지정 

    예컨대, Order by 절 등을 처리하기 위해 암시적 정렬에 사용되는 Segment

 

테이블스페이스 생성시 temporary 키워드를 사용해 생성한다.
V$SORT_SEGMENT에 sort segment에 대한 공간 활당과 해제에 대한 정보를 볼 수 있다.

 

- 읽기 전용 으로 변경
alter tablespace [이름] read only;


- 일기 쓰기용으로 변경
alter tablespace [이름] read write;

v$DATAFILE 뷰는 DATA FILE 상태를 보여준다.

 

* 데이타 파일 크기 조정


-- data file 자동 size 조정
alter tablespace [이름]
add datafile ['경로/파일명.dbf'] size [00M] // <- 추가
autoextend on  // <- 자동
next [0M]  // <- 증가치
maxsize [000M];  // <- 최대치( 꼭 지정하여 사용하는것이 좋음 OS측면에서 제한이 있음 )

 

-- data file 수동 size 조정
alter database datafile ['경로/파일명.dbf'] resize [000M];

 

* 테이블스페이스와 관련된 딕셔너리
dba_tablespaces - 모든 테이블스페이스의 스토리지 정보 및 상태 정보를 갖고있다.
dba_data_files - 테이블스페이스를 구성하고 있는 각 데이타파일의 정보를 갖고있다.
dba_free_space - 테이블스페이스공간 사용에 관한 정보를 갖고있다.
dba_free_space_coalesce - 테이블스페이스의 수집 가능한 Extent에 대한 통계 정보를 갖고있다.

select tablespace_name, initial_extent,next_extent,min_extents,max_extents,pct_increase,status,contents from dba_tablespaces;


select tablespace_name, file_name, file_id, bytes, blocks, status, autoextensible from dba_data_files order by 1, 2;


select * from dba_free_space order by file_id, block_id;


select tablespace_name, total_extents,extents_coalesced,percent_extents_coalesced from dba_free_space_coalesced;


*****테이블스페이스 총 크기,사용량,남은 공간조회하는 쿼리문
select a.tablespace_name, round(sum(a.total)/1024/1024, 2) "Total(M)",
round((sum(a.total) - sum(nvl(b.free,0)))/1024/1024, 2) "Used(M)",
round(sum(nvl(b.free,0))/1024/1024,2) "Free(M)",
round((sum(a.total) - sum(nvl(b.free, 0))) / sum(a.total) * 100,2) "Used(%)"
from (select d.tablespace_name, d.file_id, sum(d.bytes) total from dba_data_files d
group by d.tablespace_name, d.file_id) a,
(select f.file_id, sum(f.bytes) free from dba_free_space f
group by f.file_id) b
where a.file_id = b.file_id(+)
group by a.tablespace_name;
*****

 

*테이블스페이스 공간 수집 (디스크 조각 모음)
alter tablespace [이름] coalesce;