Buscar..


Introducción

La partición es una funcionalidad para dividir tablas e índices en partes más pequeñas. Se utiliza para mejorar el rendimiento y para gestionar las piezas más pequeñas de forma individual. La clave de partición es una columna o un conjunto de columnas que define en qué partición se almacenará cada fila. Resumen de particiones en la documentación oficial de Oracle

Observaciones

La partición es una opción de costo adicional y solo está disponible para la Edición Enterprise.

Particionamiento hash

Esto crea una tabla particionada por hash, en este ejemplo en el ID de tienda.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY HASH(store_id) PARTITIONS 8;

Debería usar una potencia de 2 para el número de particiones hash, de modo que obtenga una distribución uniforme en el tamaño de la partición.

Partición de rango

Esto crea una tabla particionada por rangos, en este ejemplo en valores de orden.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY RANGE(order_value) (
    PARTITION p1 VALUES LESS THAN(10), 
    PARTITION p2 VALUES LESS THAN(40), 
    PARTITION p3 VALUES LESS THAN(100),
    PARTITION p4 VALUES LESS THAN(MAXVALUE)
); 

Seleccionar particiones existentes

Compruebe las particiones existentes en el esquema

SELECT * FROM user_tab_partitions;

Lista de particionamiento

Esto crea una tabla particionada por listas, en este ejemplo en el ID de tienda.

CREATE TABLE orders (
    order_nr NUMBER(15),
    user_id VARCHAR2(2),
    order_value NUMBER(15),
    store_id NUMBER(5)
) 
PARTITION BY LIST(store_id) (
    PARTITION p1 VALUES (1,2,3), 
    PARTITION p2 VALUES(4,5,6),
    PARTITION p3 VALUES(7,8,9),
    PARTITION p4 VALUES(10,11)
);

Soltar partición

ALTER TABLE table_name DROP PARTITION partition_name;

Seleccionar datos de una partición

Seleccionar datos de una partición

SELECT * FROM orders PARTITION(partition_name);

Truncar una partición

ALTER TABLE table_name TRUNCATE PARTITION partition_name;

Renombrar una partición

ALTER TABLE table_name RENAME PARTITION p3 TO p6;

Mueve la partición a un espacio de tabla diferente

ALTER TABLE table_name 
MOVE PARTITION partition_name TABLESPACE tablespace_name;

Agregar nueva partición

ALTER TABLE table_name 
ADD PARTITION new_partition VALUES LESS THAN(400);

Partición dividida

Divide algunas particiones en dos particiones con otro límite alto.

ALTER TABLE table_name SPLIT PARTITION old_partition 
    AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
    PARTITION old_partition)

Fusionar particiones

Combina dos particiones en una sola

ALTER TABLE table_name
  MERGE PARTITIONS first_partition, second_partition
  INTO  PARTITION  splitted_partition TABLESPACE new_tablespace

Intercambiar una partición

Intercambie / convierta una partición a una tabla no particionada y viceversa. Esto facilita un "movimiento" rápido de datos entre los segmentos de datos (en lugar de hacer algo como "insertar ... seleccionar" o "crear tabla ... como seleccionar") ya que la operación es DDL (la operación de intercambio de partición es un dato). actualización del diccionario sin mover los datos reales) y no DML (gran sobrecarga de deshacer / rehacer).

Ejemplos más básicos:

  1. Convierta una tabla no particionada (tabla "B") a una partición (de la tabla "A"):

La tabla "A" no contiene datos en la partición "OLD_VALUES" y la tabla "B" contiene datos

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

Resultado: los datos se "mueven" de la tabla "B" (no contiene datos después de la operación) a la partición "OLD_VALUES"

  1. Convertir una partición en una tabla no particionada:

La tabla "A" contiene datos en la partición "OLD_VALUES" y la tabla "B" no contiene datos

ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";

Resultado: los datos se "mueven" de la partición "OLD_VALUES" (no contiene datos después de la operación) a la tabla "B"

Nota: hay varias opciones, características y restricciones adicionales para esta operación.

Puede encontrar más información en este enlace ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 " (sección "Intercambiar particiones")



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow