* All subpartitions will store data in their own segments * So will the local indexes subpartitions. create table part_range_temp (c1 number(3), c2 varchar2(2), c3 char(1)) partition by range (c1) subpartition by list (c3) (partition p1 values less than (100) (subpartition p1_d1 values('A'), subpartition p1_d2 values('B') ), partition p2 values less than (200) (subpartition p2_d1 values('A'), subpartition p2_d2 values('B') ), partition p3 values less than (300) (subpartition p3_d1 values('A'), subpartition p3_d2 values('B') ) ); create unique index part_range_temp_idx on part_range_temp (c1, c3) local; -- This partitioned table creates 6 segments. SQL> select PARTITION_NAME,SEGMENT_TYPE from user_segments where segment_name='PART_RANGE_TEMP'; PARTITION_NAME SEGMENT_TYPE ------------------------------ ------------------ P1_D1 TABLE SUBPARTITION P1_D2 TABLE SUBPARTITION P2_D1 TABLE SUBPARTITION P2_D2 TABLE SUBPARTITION P3_D1 TABLE SUBPARTITION P3_D2 TABLE SUBPARTITION 6 rows selected. SQL> -- Local index add another 6 segments SQL> select PARTITION_NAME,SEGMENT_TYPE from user_segments where segment_name='PART_RANGE_TEMP_IDX'; PARTITION_NAME SEGMENT_TYPE ------------------------------ ------------------ P1_D1 INDEX SUBPARTITION P1_D2 INDEX SUBPARTITION P2_D1 INDEX SUBPARTITION P2_D2 INDEX SUBPARTITION P3_D1 INDEX SUBPARTITION P3_D2 INDEX SUBPARTITION 6 rows selected. SQL> SQL> select partition_name,subpartition_count from user_tab_partitions where table_name='PAR_TEST'; PARTITION_NAME SUBPARTITION_COUNT ------------------------------ ------------------ P1 0 P2 0 P3 0 P4A 0 P4B 0 SQL> select PARTITION_NAME,SEGMENT_TYPE from user_segments where segment_name='PAR_TEST'; PARTITION_NAME SEGMENT_TYPE ------------------------------ ------------------ P1 TABLE PARTITION P2 TABLE PARTITION P3 TABLE PARTITION P4A TABLE PARTITION P4B TABLE PARTITION SQL>