Manejo de tablas grandes en Oracle 10g (Ultima parte)

septiembre 17, 2009 at 1:54 pm 4 comentarios

MANEJO DE PARTICIONES

Borrando Particiones

Se puede borrar particiones de range, list, o composite range-list de tablas particionadas. Para las tipos hash-partition o hash- subpartitions de range-hash tablas particionada, debes ejecutar coalesce envés de drop partition.

■ ALTER TABLE … DROP PARTITION para borrar una partición de una table
■ ALTER TABLE … DROP SUBPARTITION para borrar una sub partición de un range-list tablas particionadas.

Si desean preservar la data en la partición, usar la sentencia MERGE PARTITION envés de DROP PARTITION.

Si hay índices locales definidos en la tabla, esta sentencia también borran las particiones y sub particiones de un índice local. Todos los índices globales, o todas las particiones de los índices globales, son marcados como UNUSUABLE a menos que lo siguiente sea verdad:

• Si especificaste UPDATE INDEXES o UPDATE GLOBAL INDEXES

• Las particiones o sub particiones a ser borradas estén vacías

Borrando particiones de índices

No se puede borrar explícitamente una partición de un índice local, las particiones de los índices locales son borradas solamente cuando se borra la partición de la tabla.

Si la partición de un índice global esta vacio, puedes borrar explícitamente una partición de un índice usando ALTER INDEX …. DROP PARTITION, pero si la partición del índice global contiene data, borrando la partición causa que la partición de mayor nivel sea marcada como UNUSUABLE.

Exchanging Particiones

Se utiliza para convertir una partición o sub partición en una tabla no particionada, y una tabla no particionada en una tabla particionada o sub partición de una tabla particionada intercambiando sus segmentos de datos. También puedes convertir una tabla particionada tipo hash-partitioned en una partición de una tabla particionada tipo range-hash partitioned, o convertir la partición de la range-hash en hash-partition. Similarmente, puedes convertir una tabla particionada tipo list-partition en una tablaparticionada tipo range-list partitioned, o convertir las particiones del range-list partitioned en list-partitioned.

Exchanging particiones de tablas es mas útil cuando tienes una aplicación usando tablas no particionadas que quieres convertirla a particionada.

ALTER TABLE stocks
EXCHANGE PARTITION p3 WITH TABLE stock_table_3;

Los índices son marcados como UNUSUABLE, a menos que se ejecute la opción de UPDATE INDEX o UPDATE GLOBAL INDEX. Solamente en la tabla tipo INDEX-ORGANIZED los índices GLOBALES son mantenidos en estado USABLE.

Merging Particiones

Para unir el contenido de dos particiones en una partición. Las dos particiones originales son borradas.

– Create a Table with four partitions each on its own tablespace
– Partitioned by range on the data column.

CREATE TABLE four_seasons
(
one DATE,
two VARCHAR2(60),
three NUMBER
)
PARTITION BY RANGE ( one )
(
PARTITION quarter_one
VALUES LESS THAN ( TO_DATE(’01-apr-1998′,’dd-mon-yyyy’))
TABLESPACE quarter_one,
PARTITION quarter_two
VALUES LESS THAN ( TO_DATE(’01-jul-1998′,’dd-mon-yyyy’))
TABLESPACE quarter_two,
PARTITION quarter_three
VALUES LESS THAN ( TO_DATE(’01-oct-1998′,’dd-mon-yyyy’))
TABLESPACE quarter_three,
PARTITION quarter_four
VALUES LESS THAN ( TO_DATE(’01-jan-1999′,’dd-mon-yyyy’))
TABLESPACE quarter_four
);

– Create local PREFIXED index on Four_Seasons
– Prefixed because the leftmost columns of the index match the
– Partition key

CREATE INDEX i_four_seasons_l ON four_seasons ( one,two )
LOCAL (
PARTITION i_quarter_one TABLESPACE i_quarter_one,
PARTITION i_quarter_two TABLESPACE i_quarter_two,
PARTITION i_quarter_three TABLESPACE i_quarter_three,
PARTITION i_quarter_four TABLESPACE i_quarter_four
);

– Merge the first two partitions

ALTER TABLE four_seasons
MERGE PARTITIONS quarter_one, quarter_two INTO PARTITION quarter_two
UPDATE INDEXES;

Si omites la clausula UPDATE INDEXES de la sentecia ALTER TABLE … MERGE PARTITION …, tienes entonces que reconstruir el indice local de la particion afectada.

– Reconstruir el indice de quarter_two, el cual ha sido marcado unusable porque este no tiene toda la data del Q1 en esta.

Para reconstruir todos los indices UNUSABLE ejecutar la siguiente sentencia:

ALTER TABLE four_seasons MODIFY PARTITION quarter_two REBUILD UNUSABLE LOCAL INDEXES;

Splitting Particiones

Spliting es utilizado para redistribuir el contenido de una partición en dos nuevas particiones. Esto resulta útil cuando una partición se hace muy grande y causa que el backup, la recuperación o el mantenimiento se tomen mucho tiempo para completar. También puede ser usado para redistribuir la carga de I/O.

No puede ser usada en hash partition o subpartition.

ALTER TABLE vet_cats SPLIT PARTITION
fee_katy at (100) INTO ( PARTITION
fee_katy1 …, PARTITION fee_katy2 …);
ALTER INDEX JAF1 REBUILD PARTITION fee_katy1;
ALTER INDEX JAF1 REBUILD PARTITION fee_katy2;
ALTER INDEX VET REBUILD PARTITION vet_parta;
ALTER INDEX VET REBUILD PARTITION vet_partb;

Todos los índices particionados LOCALES y GLOBALES son puestos en estado UNUSABLE, solo los índices GLOBALES de Index-Organized table se mantienen USABLE.

Otros tipos de manejo de particiones son:

TRUNCATE PARTITION

Se utiliza para borrar toda la data de una partición, es igual a borrar la partición solo que el trúncate deja la estructura lógica.

MOVE PARTITION

Se utiliza para mover la partición de un tablespace a otro, rejuntar la data y reducir la fragmentación, y otras más.

RENAME PARTITION

Se utiliza para cambiar el nombre a una partición.

Vía : nvtechnotes.wordpress.com

Relacionados:

Primera Parte… Manejo de tablas grandes en Oracle 10g

Segunda parte… Manejo de tablas grandes en Oracle 10g

About these ads

Entry filed under: Base de Datos. Tags: .

Manejo de tablas grandes en Oracle (Continuacion) Metrovalencia, tranvías que utilizarán tecnología de Fórmula 1

4 comentarios Add your own

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Categorías

Páginas

Estadisticas

  • 747,508 Visitas

Archivos Meses Anteriores

Sigueme por Twitter


Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 51 seguidores

%d personas les gusta esto: