파티션(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);