1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
  [ 테이블 스페이스 ]
  : 오라클에서 데이터를 저장할 때 사용하는 논리적 저장공간(하드디스크에서는 실제 여러개의 물리적인
    데이터 파일로 구성될 수 있음)
    -> 오라클 시스템 운영에 필요한 필수 정보를 담고 있음
     
    DB는
      여러개의 테이블 스페이스로 구성되고, 각 테이블 스페이스는 여러개의 세그먼트로 구성된다.
      이때, 세그먼트는 각종 table, trigger, index, package 등 다양한 DB Object들이 될 수 있다.
       
    - 시스템 테이블 스페이스
      : DB설치시 자동으로 기본적으로 가지고 있는 테이블 스페이스로,
        별도로 테이블 스페이스를 지정하지 않고 테이블, 트리거, 프로시저 등을 생성했다면
        이 시스템 테이블 스페이스에 저장되었던 것!
        EX) Data Dictionary 정보, 프로시저, 트리거, 패키지, 시스템 rollback segment, 사용자 데이터 포함
       
        rollback segment란?
          : rollbackcommit하기 전 상태로 돌리는데 그 돌리기 위한 상태를 저장하고 있는 세그먼트
       
    - 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;

+ Recent posts