Tablespace


 - DBMS에 저장되는 자료가 있는 물리적인 파일.


 - 각 개체마다 테이블스페이스를 지정해 줄 수 있고, 사용자에게 기본으로 사용할 테이블스페이스를 지정할 수 있다.


 - 오라클에서는 기본적으로 /usr/local/oracle/oradata/[SID]/ 디렉토리에 기본 테이블스페이스를 생성하며,


    Oracle Express Edition에서는 /usr/lib/oracl/xe/oradata/XE/ 디렉토리에 기본 테이블스페이스를 저장한다.





테이블스페이스 생성


 테이블스페이스를 생성할 경우 여러 옵션이 사용될 수 있으나 테이블스페이스의 기본 용량을 자동으로 늘려주는


 옵션(autoextend) 등은 기본으로 사용하는 것이 편하다.


create tablespace 테이블스페이스명 (예: ts_jihyung)
 
datafile '테이블스페이스 파일 저장 경로 (예: D:/db/테이블스페이스명.dbf)'
 
size 파일 용량 (예: 50M)
 
autoextend on
 
extent management local autoallocate;





Temp 테이블스페이스 생성


Temp 테이블스페이스의 최소 용량은 1 MByte 이상이다. 그러므로 처음 생성시 2 MByte로 생성 한 뒤 자동증가 옵션을 사용한다


create temporary tablespace 테이블스페이스명 (예: ts_temp_jihyung)
 
tempfile 'Temp 테이블 스페이스 파일 저장 경로 (예: D:/db/Temp테이블스페이스명.dbf)'
 
size 파일 용량 (예: 2M)
 
autoextend on
 
extent management local;




테이블스페이스 삭제


 특별한 경우가 아니라면 테이블스페이스의 모든 내용을 자동으로 지우고 파일까지 깔끔하게 삭제할 수 있다.


 이 옵션이 바로 "including contents AND datafiles"이다.


drop tablespace 테이블스페이스명
 
including contents and datafiles
 
cascade constraints;





-- 테이블 스페이스 관련


계정생성시에 tablespace를 지정해주지않으면 ( Default tablespace를 지정하지 않으면 ) 

Database의 Default Tablespace로 Object가 저장이되고 ,


Database의 Default Tablespace가 지정되지 않았다면 System Tablespace로 저장이 됩니다.


현재 유저의 Default Tablespace 확인은 user_users의 테이블을 조회




유저의 Default Tablespace 지정

SQL> Alter User 유저명 default tablespace 테이블스페이스명;

 

유저 Default Tablespace 변경

SQL> Alter User 유저명 default tablespace 테이블스페이스명;

 

테이블의 Tablespace 변경

SQL> Alter table 테이블명 Move Tablespace 테이블스페이스명;




* 테이블이 차지하는 빈공간 제거 쿼리

ALTER TABLE 테이블명  SHRINK SPACE ;

ALTER TABLE 테이블명  DEALLOCATE UNUSED ;

+ Recent posts