Oracle Database
Particionamiento de tablas
Buscar..
Introducción
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:
- 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"
- 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")