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 )
'ORACLE > Trouble Shooting' 카테고리의 다른 글
Out of capacity for shape VM.Standard.A1.Flex in availability domain AD-1. (0) | 2025.06.03 |
---|---|
Resize operation completed for file# 201, old size 874496K, new size 875520K (0) | 2025.06.02 |
[INS-32027] ORACLE_HOME 환경 변수가 현재 설정되어 있으며.. (0) | 2025.03.18 |
ORA-63302: Transaction must roll back (0) | 2024.12.10 |
Creating new log segment (0) | 2024.09.26 |