프린트 하기

OS 환경 : Oracle Linux 8.1 (64bit)

 

DB 환경 : Oracle Database 19.3.0.0

 

에러 : ORA-14086: a partitioned index may not be rebuilt as a whole

파티션 인덱스를 rebuild 하면서 테이블스페이스도 함께 변경하려 할때 발생하는 에러

1
2
3
4
5
SQL> alter index pt_ix02 rebuild tablespace users online;
alter index pt_ix02 rebuild tablespace users online
            *
ERROR at line 1:
ORA-14086: a partitioned index may not be rebuilt as a whole

모두 변경하려하면 에러가 발생함

 

 

해결 방법 : 파티션별로 테이블스페이스 변경

파티션 인덱스 구조 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SQL>
set lines 200 pages 1000
col index_owner for a10
col index_name for a20
col partition_name for a20
col tablespace_name for a15
select dip.index_owner, dip.index_name, dip.partition_name, dip.status, dpi.locality, dpi.alignment, dip.tablespace_name
from dba_ind_partitions dip, dba_part_indexes dpi
where 1=1
and dpi.index_name = dip.index_name
and dpi.table_name ='PTABLE'
order by dip.index_name, dip.partition_name;
 
INDEX_OWNE INDEX_NAME           PARTITION_NAME       STATUS   LOCALI ALIGNMENT    TABLESPACE_NAME
---------- -------------------- -------------------- -------- ------ ------------ ---------------
IMSI       PT_IX02              P202101              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202102              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202103              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202104              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202105              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202106              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202107              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202108              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202109              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202110              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202111              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202112              USABLE   LOCAL  PREFIXED     IMSITS
 
12 rows selected.

현재 PT_IX02 인덱스의 파티션들이 모두 IMSITS에 존재함

 

 

파티션별로 하나씩 테이블스페이스 변경

1
2
3
SQL> alter index pt_ix02 rebuild partition P202101 tablespace users online;
 
Index altered.

정상적으로 변경됨

 

 

인덱스 재확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SQL>
set lines 200 pages 1000
col index_owner for a10
col index_name for a20
col partition_name for a20
col tablespace_name for a15
select dip.index_owner, dip.index_name, dip.partition_name, dip.status, dpi.locality, dpi.alignment, dip.tablespace_name
from dba_ind_partitions dip, dba_part_indexes dpi
where 1=1
and dpi.index_name = dip.index_name
and dpi.table_name ='PTABLE'
order by dip.index_name, dip.partition_name;
 
INDEX_OWNE INDEX_NAME           PARTITION_NAME       STATUS   LOCALI ALIGNMENT    TABLESPACE_NAME
---------- -------------------- -------------------- -------- ------ ------------ ---------------
IMSI       PT_IX02              P202101              USABLE   LOCAL  PREFIXED     USERS <<---
IMSI       PT_IX02              P202102              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202103              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202104              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202105              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202106              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202107              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202108              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202109              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202110              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202111              USABLE   LOCAL  PREFIXED     IMSITS
IMSI       PT_IX02              P202112              USABLE   LOCAL  PREFIXED     IMSITS
 
12 rows selected.

정상적으로 변경됨

 

 

원인 : 인덱스 파티션들의 테이블스페이스를 한번에 변경하려해서 발생한 문제

인덱스 파티션들의 테이블스페이스를 한번에 변경하려해서 발생한 문제

모니터링하면서 파티션별로 하나씩 변경해주면 해결됨

 

 

만약 이후 추가되는 파티션들까지 다른 테이블스페이스로 할당시키고 싶은 경우 아래 옵션을 사용해 파티션 인덱스 기본속성을 변경해주면됨

1
2
3
SQL> alter index pt_ix02 modify default attributes tablespace users;
 
Index altered.

*참고로 이 명령은 신규로 추가되는 파티션부터 적용됨

 

 

참조 : 

오라클 19c 파티션 인덱스의 테이블스페이스 변경 ( https://positivemh.tistory.com/1200 )

https://positivemh.tistory.com/1008