{"id":947,"date":"2014-04-24T21:13:07","date_gmt":"2014-04-24T19:13:07","guid":{"rendered":"http:\/\/clemente.pamplona.name\/dba\/?p=947"},"modified":"2014-05-22T16:55:26","modified_gmt":"2014-05-22T14:55:26","slug":"mover-tablas-con-subparticiones","status":"publish","type":"post","link":"http:\/\/clemente.pamplona.name\/dba\/mover-tablas-con-subparticiones\/","title":{"rendered":"Mover tablas con subparticiones"},"content":{"rendered":"<p>Supongamos que tenemos una tabla llamada AGENTE , esta tabla agente est\u00e1 particionada por n\u00famero de agente, y a su vez, particionada por trimestre.<br \/>\nAs\u00ed pues tendremos que la estructura es mas o menos<br \/>\n<a href=\"http:\/\/clemente.pamplona.name\/dba\/wp-content\/uploads\/2014\/05\/PARTICIONADO.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/clemente.pamplona.name\/dba\/wp-content\/uploads\/2014\/05\/PARTICIONADO.jpg\" alt=\"PARTICIONADO\" width=\"326\" height=\"227\" class=\"aligncenter size-full wp-image-948\" srcset=\"http:\/\/clemente.pamplona.name\/dba\/wp-content\/uploads\/2014\/05\/PARTICIONADO.jpg 326w, http:\/\/clemente.pamplona.name\/dba\/wp-content\/uploads\/2014\/05\/PARTICIONADO-300x208.jpg 300w\" sizes=\"auto, (max-width: 326px) 100vw, 326px\" \/><\/a><\/p>\n<p>Y queremos mover estas particiones a un nuevo tablespace (TS_NEW). Lo primero que se nos pasa por la cabeza es el ejecutar:<\/p>\n<pre>\r\nalter table PROPIETARIO.AGENTE move partition  AG1  tablespace TS_NEW;\r\n<\/pre>\n<p>Pero Oracle nos devolver\u00e1 el error <\/p>\n<pre>\r\nError at line 1\r\nORA-14257: no se puede mover una partici\u00f3n que no sea de Rango, Lista, Sistema o Hash\r\n<\/pre>\n<p>Lo primero que nos viene a la cabeza es el preguntarnos donde est\u00e1 el error e ir a comprobar que tipo de partici\u00f3n tenemos, sin embargo, si aplicamos un poco el sentido com\u00fan, veremos que lo que nos est\u00e1 indicando este error es que debemos de mover nuestra tabla subparticion a subparticion .<br \/>\nLa sintaxsis correcta ser\u00e1:<\/p>\n<pre>\r\nalter table PROPIETARIO.AGENTE \r\n\tmove subpartition  PRIMER1\r\n\t\t\ttablespace TS_NEW;\r\nalter table PROPIETARIO.AGENTE \r\n\tmove subpartition  PRIMER2 \r\n\t\t\t\ttablespace TS_NEW;\r\nalter table PROPIETARIO.AGENTE\r\n\t\tmove subpartition\r\n\t\t\tPRIMER3 tablespace TS_NEW;\r\n<\/pre>\n<p>Esta tarea puede ser realmente tediosa si nuestra tabla tiene un gran n\u00famero de particiones y subparticiones, con lo que, lo mejor ser\u00e1 hacer un script para moverla.<br \/>\nLo 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 <\/p>\n<pre>\r\nselect 'alter table'||\r\n\t    table_owner||\r\n\t\t'.'||\r\n\t\ttable_name||\r\n\t\t' move subpartition '\r\n\t\t||subpartition_name||\r\n\t\t' tablespace '\r\n\t\t|| tablespace_name||\r\n\t\t' ;'\r\n     \t\tfrom  DBA_TAB_SUBPARTITIONS\r\n   \t\t\twhere table_name='TABLA'\r\n<\/pre>\n<p>Una vez hemos guardado esta salida, podemos pasar a generar el script que nos mover\u00e1 todas las subparticiones al nuevo tablespace TS_NEW<\/p>\n<pre>\r\nselect 'alter table '\r\n\t\t||table_owner||\r\n\t\t'.'\r\n\t\t||table_name||\r\n\t\t' move subpartition '\r\n\t\t||subpartition_name||\r\n\t\t' tablespace \r\n\t\tTS_NEW;' \r\n\t\t    from  DBA_TAB_SUBPARTITIONS \r\n\t\t\t where table_name='TABLA'\r\n<\/pre>\n<p>Como siempre, mas informaci\u00f3n en la documentaci\u00f3n de Oracle<\/p>\n<ul>\n<li><a href=\"http:\/\/docs.oracle.com\/cd\/A64702_01\/doc\/server.805\/a58397\/ch11.htm\"> Administrando Tablas particionadas <\/a>\n<li><a href=\"http:\/\/docs.oracle.com\/cd\/E11882_01\/server.112\/e25523\/part_admin002.htm\"> Distintas vistas sobre tablas particionadas<\/a><br \/>\n","protected":false},"excerpt":{"rendered":"<p>Supongamos que tenemos una tabla llamada AGENTE , esta tabla agente est\u00e1 particionada por n\u00famero de agente, y a su vez, particionada por trimestre. As\u00ed pues tendremos que la estructura es mas o menos Y queremos mover estas particiones a &hellip; <a href=\"http:\/\/clemente.pamplona.name\/dba\/mover-tablas-con-subparticiones\/\">Sigue leyendo <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[66,125,13,3],"tags":[167,165,166,22],"class_list":["post-947","post","type-post","status-publish","format-standard","hentry","category-errores-ora","category-partitioning-2","category-scripting","category-tunning","tag-dba_tab_subpartitions","tag-ora-14257","tag-partition","tag-tablespace"],"_links":{"self":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/947","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/comments?post=947"}],"version-history":[{"count":5,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/947\/revisions"}],"predecessor-version":[{"id":953,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/posts\/947\/revisions\/953"}],"wp:attachment":[{"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/media?parent=947"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/categories?post=947"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/clemente.pamplona.name\/dba\/wp-json\/wp\/v2\/tags?post=947"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}