Supongamos que tenemos una tabla llamada AGENTE , esta tabla agente está particionada por número de agente, y a su vez, particionada por trimestre.
Así pues tendremos que la estructura es mas o menos

Y queremos mover estas particiones a un nuevo tablespace (TS_NEW). Lo primero que se nos pasa por la cabeza es el ejecutar:
alter table PROPIETARIO.AGENTE move partition AG1 tablespace TS_NEW;
Pero Oracle nos devolverá el error
Error at line 1 ORA-14257: no se puede mover una partición que no sea de Rango, Lista, Sistema o Hash
Lo primero que nos viene a la cabeza es el preguntarnos donde está el error e ir a comprobar que tipo de partición tenemos, sin embargo, si aplicamos un poco el sentido común, veremos que lo que nos está indicando este error es que debemos de mover nuestra tabla subparticion a subparticion .
La sintaxsis correcta será:
alter table PROPIETARIO.AGENTE move subpartition PRIMER1 tablespace TS_NEW; alter table PROPIETARIO.AGENTE move subpartition PRIMER2 tablespace TS_NEW; alter table PROPIETARIO.AGENTE move subpartition PRIMER3 tablespace TS_NEW;
Esta tarea puede ser realmente tediosa si nuestra tabla tiene un gran número de particiones y subparticiones, con lo que, lo mejor será hacer un script para moverla.
Lo primero que ha de hacerse en estos casos, es guardar la manera de volver a la situacion actual, esto lo conseguiremos con la salida del comando
select 'alter table'||
table_owner||
'.'||
table_name||
' move subpartition '
||subpartition_name||
' tablespace '
|| tablespace_name||
' ;'
from DBA_TAB_SUBPARTITIONS
where table_name='TABLA'
Una vez hemos guardado esta salida, podemos pasar a generar el script que nos moverá todas las subparticiones al nuevo tablespace TS_NEW
select 'alter table ' ||table_owner|| '.' ||table_name|| ' move subpartition ' ||subpartition_name|| ' tablespace TS_NEW;' from DBA_TAB_SUBPARTITIONS where table_name='TABLA'
Como siempre, mas información en la documentación de Oracle