You should be fine
SQL>
SQL> create table t1 (x int, y int, z int )
2 partition by range ( x )
3 subpartition by hash ( y )
4 subpartitions 4
5 (
6 partition p1 values less than ( 2000 )
7 )
8 /
Table created.
SQL>
SQL> insert into t1
2 select rownum, rownum, rownum
3 from dual
4 connect by level <= 1000;
1000 rows created.
SQL>
SQL> commit;
Commit complete.
SQL>
SQL> create table t2 ( x int, y int, z int ) pctfree 50;
Table created.
SQL>
SQL> select subpartition_name from user_tab_subpartitions;
SUBPARTITION_NAME
--------------------------------------------------------------------------------------------------------------------------------
SYS_SUBP283
SYS_SUBP282
SYS_SUBP281
SYS_SUBP280
4 rows selected.
SQL> alter table t1 exchange subpartition SYS_SUBP283
2 with table t2;
Table altered.
SQL>