오라클 파티션(Partition) 테이블에 대해서 Update 하려고 할때, 파티션 키컬럼에 대해서도 Update 하게 되는 경우가 있을 수 있습니다.
그런데, 파티션키 컬럼을 변경하는 것은 일반 컬럼값 변경하는 경우와는 조금 다르게 생각해야 합니다.
파티션테이블의 데이터들이 모두 파티션 키컬럼값에 따라 어느 파티션으로 들어갈지가 정해지는 것인데, 이걸 그냥 값만 Update 해버리면 안되겠죠~
Update 가 일어나는 순간 다른 적절한 파티션으로 옮겨져야 합니다.
이것을 가능하게 해주는 Table 옵션이 "Enable Row Movement" 입니다.
파티션 Table 에 이 옵션을 걸어주지 않고 그냥 파티션키값을 변경하려고 하면 아래와 같이 ORA-14402 에러가 발생합니다.
(아래의 경우는 SALES 테이블의 파티션키가 sales_no 입니다)
아래와 같이 alter table ~ enable row movement; 커맨드로 테이블을 변경해주면 더이상 에러없이 값을 변경할 수 있습니다.
이렇게 enable row movement 옵션이 걸린 상태에서 파티션 키값에 대해 Update 를 수행하게 되면,
단순히 데이터블록에 들어있는 값을 변경하는게 아니라, 해당 블록에서 데이터를 Delete 하고,
적당한 다른 파티션에 위치한 적절한 블록에 새롭게 Insert 하는 방식으로 처리됩니다.
그래서 일반 Update 보다는 아주 쬐끔 느리다고 하네요~~ 아주 쬐~끔...
다행히도 내부적으로 파티션이 바뀌는 작업이 이루어지기는 해도 파티션 인덱스가 Invalidate 되거나 하는 불상사는 발생하지 않습니다.
'IT관련' 카테고리의 다른 글
오라클 싱글DB에서 ASM 사용을 위한 Oracle Restart 설치 절차/화면(19c) (0) | 2021.06.19 |
---|---|
오라클 RAC에서 Grid, DB 간 환경전환 빠르게 해주는 bash 쉘스크립트 환경파일 생성 (0) | 2021.05.15 |
(VirtualBox, oVirt, OLVM) Hardware does not support virtualization - 네스티드 가상화 지원 (0) | 2021.03.20 |
Plan 이 변하는 SQL 을 찾아서 Plan을 고정할 수 있는 프로그램 (SQLArea) - SPM 이용 (2) | 2021.02.28 |
VirtualBox 에러 - VERR_VD_IMAGE_READ_ONLY (게스트 OS 시작이 안되는 경우) (0) | 2021.02.27 |