본문 바로가기

Partition

오라클 복합파티션(Composite Partition) List + Range 샘플 (11g ~ ) 오라클은 Range, List, Hash 파티션을 지원하고, 이들간의 다양한 조합을 지원합니다. 이중에서 아래는 List Partition + Range Sub Partition 샘플입니다. create table SALES ( sales_no number, sale_year number, sale_month number, sale_day number, customer_name varchar2(30), birth_date date, price number, state varchar2(2) ) partition by list (state) subpartition by range (sales_no) subpartition template ( subpartition S1 values less than (3),.. 더보기
오라클 복합파티션(Composite Partition) List + List 샘플 (11g ~ ) 오라클은 Range, List, Hash 파티션을 지원하고, 이들간의 다양한 조합을 지원합니다. 이중에서 아래는 List Partition + List Sub Partition 샘플입니다. create table SALES ( sales_no number, sale_year number, sale_month number, sale_day number, customer_name varchar2(30), birth_date date, price number, state varchar2(2) ) partition by list (state) subpartition by list (sale_year) subpartition template ( subpartition S1 values (2004, 2005), s.. 더보기
오라클 복합파티션(Composite Partition) List + Hash 샘플 (11g ~ ) 오라클은 Range, List, Hash 파티션을 지원하고, 이들간의 다양한 조합을 지원합니다. 이중에서 아래는 List Partition + Hash Sub Partition 샘플입니다. create table SALES ( sales_no number, sale_year number, sale_month number, sale_day number, customer_name varchar2(30), birth_date date, price number, state varchar2(2) ) partition by list (state) subpartition by hash (sales_no) subpartition template ( subpartition S1, subpartition S2, subpa.. 더보기
오라클 파티션 - Partition Key 로 여러 컬럼을 사용하는 경우 Oracle Range, Hash 파티션의 경우, 파티션키 컬럼을 여러개의 컬럼으로 구성할 수 있습니다. 아래는 Range 파티션 샘플 ... create table SALES ( sales_no number, sale_year number, sale_month number, sale_day number, customer_name varchar2(30), birth_date date, price number ) partition by range (sale_year, sale_month, sale_day) ( partition SALES_P1 values less than (2005, 01, 01), partition SALES_P2 values less than (2006, 01, 01), partiti.. 더보기
오라클 Reference Partitioning (참조 파티션, 레퍼런스 파티션) Oracle Reference Partitioning 은 테이블의 부모-자식 (Parent-Child) 관계를 이용해서 파티셔닝하는 기법입니다. 부모테이블의 파티셔닝 방식을 마치 상속받듯이 자식테이블이 그대로 따라가는 방식입니다. 따라서, 자식테이블에는 부모테이블의 파티셔닝 속성을 따라간다는 명시만 한줄 적어주면 됩니다. 파티셔닝 방식이나, 파티셔닝 키를 어떻게 구성할 지 고민하지 않아도 되죠. -- 부모 테이블 create table CUSTOMERS ( customer_id number, customer_name varchar2(30), birth_date date, constraint CUSTOMERS_PK primary key (customer_id) ) partition by range (bir.. 더보기
오라클 파티션 Auto List Partitioning 기능 사용 방법 (자동 리스트 파티셔닝) 앞에서는 Range 파티션에서 자동으로 다음 파티션을 만들어주는 11g NF 기능인 Auto Interval Partitioning 에 대해서 살펴봤습니다. Oracle 은 여기에서 더 나아가 12cR2 (12c Release 2) 버전에서 자동 리스트 파티셔닝 기능도 만들었습니다. 다음과 같이 기존 리스트 파티션에서 파티션 키값 리스트항목에 없는 새로운 값이 들어오려고 하는 경우에, ORA-14400 에러가 발생합니다. 위에서는 항목에 없는 'VV' 라는 값을 Insert 하니까 바로 에러가 발생하고 있습니다. 아래와 같이 automatic 이라는 키워드만 추가하면 됩니다. 위에서 기존 리스트항목에 없는 'VV' 라는 값을 입력했는데, ORA-14400 에러 없이 정상적으로 Insert 되는 것을 볼 .. 더보기
오라클 파티션 Auto Interval Partitioning 기능 사용 방법 Oracle DB 에서 파티션 기능을 사용하다보면, 해가 바뀌는 시점에 다음해에 해당하는 파티션을 미리 만들어두지 않아서 에러를 만나게 되는 일이 종종 있습니다. 물론, 마지막 파티션을 maxvalue 라는 키워드를 사용해서 만들어주면 되긴 하지만, 관리가 안되어 마지막 파티션이 너무 커지는 일을 당할까봐 일부러 사용하지 않는 경우도 있습니다. 이런 경우에 생각할 수 있는 기능이 자동으로 다음 파티션을 만들어주는 기능입니다. 전문용어로는 Automatic Interval 파티셔닝, 인터벌 파니셔닝 이라고 합니다. 11g New Feature 로 9i, 10g DB 에서는 사용할 수 없는 기능입니다. 이 기능을 이용하는 방법은 매우 간단합니다. 아래와 같이 기존 파티션테이블 만드는 스크립트에 interva.. 더보기
오라클 파티션 Exchange (파티션 익스체인지) 파티션테이블(Partition Table)의 한개 파티션과 일반 테이블을 교환하는 것을 Partition Exchange 라고 합니다. 이게 필요한 이유는 파티션의 일부만 떼어내서 작업하고 다시 붙이고 싶은 경우, 로딩한 데이터를 파티션에 끼워넣고 싶은 경우 등입니다. 뭐, 파티션 테이블에 직접 작업을 해도 되겠지만, 작업이 완전한지 검증되기 전까지는 운영중인 파티션테이블을 함부로 건들고 싶지 않기때문에 이런 테크닉을 이용합니다. 또, 대량의 Update 나 Delete 작업을 해야하는 경우, 이런 DML 작업은 엄청난 양의 Undo 와 Redo 를 만들게 되는데, 이런 부담을 줄이기 위한 방안으로 CTAS 또는 Insert 로 변환해서 작업을 할 수 있습니다. 원테이블에 Update/Delete 하는 .. 더보기