스터디/DB(ORACLE) ORACLE 테이블스페이스(Table Space) -(1) 고무곰(GomuGom) 2017. 9. 21. 15:24 /* [ 테이블 스페이스 ] : 오라클에서 데이터를 저장할 때 사용하는 논리적 저장공간(하드디스크에서는 실제 여러개의 물리적인 데이터 파일로 구성될 수 있음) -> 오라클 시스템 운영에 필요한 필수 정보를 담고 있음 DB는 여러개의 테이블 스페이스로 구성되고, 각 테이블 스페이스는 여러개의 세그먼트로 구성된다. 이때, 세그먼트는 각종 table, trigger, index, package 등 다양한 DB Object들이 될 수 있다. - 시스템 테이블 스페이스 : DB설치시 자동으로 기본적으로 가지고 있는 테이블 스페이스로, 별도로 테이블 스페이스를 지정하지 않고 테이블, 트리거, 프로시저 등을 생성했다면 이 시스템 테이블 스페이스에 저장되었던 것! EX) Data Dictionary 정보, 프로시저, 트리거, 패키지, 시스템 rollback segment, 사용자 데이터 포함 rollback segment란? : rollback시 commit하기 전 상태로 돌리는데 그 돌리기 위한 상태를 저장하고 있는 세그먼트 - Non-System 테이블 스페이스 : EX) Temporary 세그먼트, application Data 세그먼트, index 세그먼트, 사용자 데이터 세그먼트 Temporary세그먼트란? : order by를 해서 데이터를 가져오기 위해선 임시로 정렬할 데이터를 가지고 있을 공간이 필요하고 그 곳에서 정렬한 뒤 데이터를 가져오는데 이 공간을 가리킨다. - [ 테이블스페이스의 구성 ] - 테이블 스페이스 - 세그먼트(segment) : table, 트리거 등 - 익스텐트(extent) : 연속적인 데이터블록으로 구성(오라클 입출력 최소 저장 단위) - [ 테이블 스페이스 생성 구문 ] create tablespace 테이블스페이스명 datafile '저장될 경로 및 사용할 파일명' // DBF, ora 파일로 저장 size 저장공간 // 기본 크기 지정 default storage storage_clause; 테이블스페이스 삭제 drop tablespace 테이블스페이스이름 [including contents[and datafiles] //테이블 스페이스에 들어있는 데이터도 지울지 [cascade constraints] // 연계성 있는 테이블스페이스도 삭제할지 이렇게 쿼리문으로 만들수도 잇지만 EM이라는 관리도구를 통해 쉽게 UI적으로 할 수 있다. - 테이블스페이스 생성은 system 계정이어야 한다. */ create tablespace test_1 datafile 'c:\oradata\test_1.dbf' size 100M default storage ( initial 6M --최초 익스텐트 크기 next 1M -- 첫번째 익스텐트 다 사용 후 그 다음 익스텐트 크기 MINEXTENTS 1 -- 최소 개수 MAXEXTENTS 10 PCTINCREASE 0 -- next 익스텐트 다음에 ()프로 저장공간을 할당한다. ); -- 저장공간을 10M 늘리도록 수정해 보자. alter tablespace test_1 add datafile 'c:\oradata\test_2.dbf' size 10M; create table aaa( name varchar2(10) ); -- 그냥 이렇게 하면 시스템 테이블 스페이스에 저장되게 됨 -- test_1 테이블 스페이스에 저장하도록 테이블 aaa2를 생성 create table aaa2( name varchar2(10) )tablespace test_1; -- 테이블 스페이스를 지움 drop tablespace test_1; -- 오류 발생 내용이 잇기 때문 따라서 including contents 옵션 사용이 필요 drop tablespace test_1 including contents; -- 테이블 스페이스 내부에 있는 데이터도 같이 삭제한다는 의미임 -- 하고나도 파일은 남아 있음 -- 따라서, 파일까지 지울려면 and datafiles 옵션도 추가해주어야 함 create tablespace test_3 datafile 'c:\oradata\test_3.dbf' size 100M default storage ( initial 6M --최초 익스텐트 크기 next 1M -- 첫번째 익스텐트 다 사용 후 그 다음 익스텐트 크기 MINEXTENTS 1 -- 최소 개수 MAXEXTENTS 10 PCTINCREASE 0 -- next 익스텐트 다음에 ()프로 저장공간을 할당한다. ); drop tablespace test_3 including contents and datafiles; 저작자표시 비영리