Admin/admin

파티셔닝된 Index-Organized 테이블의 신속한 파티션 분리 - 10gR2

Qhtlr 2007. 9. 4. 15:05

다음과 같은 경우를 생각해 봅시다. 파티셔닝된 테이블이 하나 있습니다.
월말이 되어 다음달을 위한 파티션을 정의해야 하는데, 그만 잊어버리고 말았습니다.
이런 경우 어떻게 해야 할까요?
maxvalue 파티션을 두 개로 분리하여, 새로운 달을 위한 파티션과 새로운 maxvalue 파티션을 생성하는 것이 유일한 방법입니다.
하지만 파티셔닝된, index-organized 테이블(IOT)에서 이러한 방법을 사용하는 것은 조금 위험합니다.
이 경우, 물리적인 파티션이 먼저 생성되고 여기에 maxvalue 파티션의 로우(row)를 이동해야 하므로 추가적인 I/O와 CPU 사이클을 소모하기 때문입니다.
Oracle Database 10g Release 2에서는 이 과정이 대폭적으로 단순화되었습니다.
아래 그림에서처럼, 5월까지의 파티션을 정의하고 그 밖의 모든 데이터를 PMAX 파티션에 입력하는 경우를 생각해 봅시다. 6월을 위한 파티션이 존재하지 않으므로, 6월분의 데이터는 PMAX 파티션에 입력됩니다. 그림에서 회색으로 표시된 영역은 데이터가 존재하는 세그먼트임을 의미합니다. PMAX 파티션의 경우 절반 정도만 데이터가 입력되어 있음을 확인할 수 있습니다.
6월 30일에 PMAX 파티션을 June 파티션과 새로운 PMAX 파티션으로 분리하는 작업이 수행됩니다. 이 경우 현재 PMAX에 존재하는 모든 데이터가 새로운 June 파티션에 포함되므로, Oracle Database 10g Release 2는 기존의 PMAX 파티션을 June 파티션으로 변경하고, 이와 별도로 새로운 PMAX 파티션을 생성합니다. 따라서 데이터 이동 작업은 전혀 발생하지 않으며, ROWID 또한 변경되지 않습니다.

출처:오라클