시스템 운영 중 갑자기
ORA-14400 오라클 오류 발생.
'삽입된 분할 영역 키와 매핑되는 분할 영역이 없음'
처음보는 오류인데 왜 갑자기 뜨지..??
아..확인 해보니 몇몇 테이블은 파티션을 년도, 월별로 나누어 저장되도록 되어 있었다.
양도 많고 해서 쌓여가는 데이터를 효율적으로 관리하기 위해,,
해결 방법은 해당 파티션 테이블 확인 후 생성해주면 된다.
파티션 테이블 확인 방법은 아래와 같음
select * from dba_tab_partitions where table_name = '테이블 명';
■ 파티션 테이블이란
용량이 크고 지속적으로 증가하는 테이블들에 대해, 더 작은 단위로 나누어 저장하여 성능향상을 시켜줄 수 있는 테이블
■ 파티션 테이블의 장점
파티션 테이블을 구성해둔다면, 데이터를 가져올 시 이미 줄어있는 범위에서 액세스를 하기 때문에 액세스 횟수가 적고 빠르다
■ 파티션 테이블의 종류
Range, List, Hash
1. Range partition table
범위의 단위로 나누어진 테이블로 영역별로 데이터가 자동적으로 저장된다
ex) 2017.01.01 부터 2017.05.30 까지의 데이터는 A 영역에 저장하고,
2017.06.01 부터 2017.12.31 까지의 데이터는 B 영역에 저장한다고 할 경우
Range partition table 생성
테이블의 어느 컬럼을 기준으로, 어떤 범위의 값으로 테이블을 나눌지를 지정하여 생성
CREATE TABLE mypart
(my_no NUMBER,
my_year INT NOT NULL,
my_month INT NOT NULL,
my_day INT NOT NULL,
my_value VARCHAR2(30)
)
PARTITION BY RANGE (my_year, my_month, my_day)
(PARTITION my_q1 VALUES LESS THAN (2017, 01, 01) TABLESPACE TEST_TBS1,
PARTITION my_q2 VALUES LESS THAN (2017, 06, 01) TABLESPACE TEST_TBS2
);
Range partition table 삭제 할 경우
ex) alter table 테이블명 drop partition 파티션명;
Range partition table은 병합도 가능하다
ex) alter table 테이블명 merge partitions 파티션명1, 파티션명2 into partition 파티션명1
update indexes; -- 파티션1과 2를 파티션1로 병합
2. List partition table
특정 컬럼 값을 기준으로 파티셔닝을 수행하게 된다
List partition 생성
CREATE TABLE emp_list_pt
(EMPNO NUMBER NOT NULL,
ENAME VARCHAR2(10),
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7, 2),
COMM NUMBER(7, 2),
DEPTNO NUMBER(2))
PARTITION BY LIST (JOB)
(PARTITION emp_list_pt1 VALUES ('MANAGER') TABLESPACE TEST_TBS1,
PARTITION emp_list_pt2 VALUES ('SALESMAN') TABLESPACE TEST_TBS2);
3. Hash partition table
데이터를 해쉬 알고리즘에 의해 무작위로 분산시켜 저장하는 방법
'프로그램개발' 카테고리의 다른 글
오라클 DB SEQUENCE에 대하여 (0) | 2016.03.14 |
---|---|
아주 난감한 오류중에 하나인 오라클 ora-24784 오류에 대하여 (0) | 2016.03.11 |
닷넷을 이용한 윈폼 브라우저 만들기 (0) | 2015.05.21 |