파티션(PARTITION)

파티션(PARTITION)

우선 scott에게 “테이블 스페이스(공간)”를 만들 수 있는 권한을 줘야 한다.

SQL Plus 를 관리자 권한으로 들어가서 아래처럼 권한을 준다.

테이블 스페이스 권한을 줘야 한다

conn system/tiger;

GRANT CREATE TABLESPACE TO scott;

conn scott/tiger;

1. 테이블 스페이스 생성

CREATE TABLESPACE data1 DATAFILE ‘/app/user/oradata/orcl/data1.dbf’ –역슬래시가 아닌 슬래시 사용, 맨 앞의 ‘C:’생략

SIZE 10M AUTOEXTEND ON;–10M가 다 차면 1기가씩 늘어남(디폴트)

                       –‘SIZE 10M AUTOEXTEND ON 20M’라고 쓰면 20M씩 증가함

CREATE TABLESPACE data2 DATAFILE ‘/app/user/oradata/orcl/data2.dbf’

SIZE 10M AUTOEXTEND ON;

CREATE TABLESPACE data3 DATAFILE ‘/app/user/oradata/orcl/data3.dbf’

SIZE 10M AUTOEXTEND ON;

CREATE TABLESPACE data4 DATAFILE ‘/app/user/oradata/orcl/data4.dbf’

SIZE 10M AUTOEXTEND ON;

2. 테이블을 만들면서 파티션 할당

CREATE TABLE emp_pt(

empno NUMBER(4),

ename VARCHAR2(20),

job VARCHAR2(20),

hiredate DATE,

sal NUMBER(7,2)

)

PARTITION BY RANGE(empno)(

PARTITION emp_p1 VALUES LESS THAN(2000) TABLESPACE data1, –2000 미만이면 data1 테이블스페이스에 저장

PARTITION emp_p2 VALUES LESS THAN(4000) TABLESPACE data2,

PARTITION emp_p3 VALUES LESS THAN(7000) TABLESPACE data3,

PARTITION emp_p4 VALUES LESS THAN(9000) TABLESPACE data4

);

–CREATE 문을 끝내고 세미콜론을 찍지 않고, 이어서 파티션을 쓰는것에 주의

3. 데이터 삽입

INSERT INTO emp_pt VALUES(1000,‘1,과장,SYSDATE,3000);

INSERT INTO emp_pt VALUES(1500,‘1,과장,SYSDATE,3000);

INSERT INTO emp_pt VALUES(2000,‘2,과장,SYSDATE,3000);

INSERT INTO emp_pt VALUES(2500,‘2,과장,SYSDATE,3000);

INSERT INTO emp_pt VALUES(4000,‘3,과장,SYSDATE,3000);

INSERT INTO emp_pt VALUES(4500,‘3,과장,SYSDATE,3000);

INSERT INTO emp_pt VALUES(7000,‘4,과장,SYSDATE,3000);

INSERT INTO emp_pt VALUES(7500,‘4,과장,SYSDATE,3000);

COMMIT;

4. 데이터 확인

SELECT * FROM emp_pt;

SELECT * FROM emp_pt PARTITION (emp_p1);

SELECT * FROM emp_pt PARTITION (emp_p2);

SELECT * FROM emp_pt PARTITION (emp_p3);

SELECT * FROM emp_pt PARTITION (emp_p4);