Oracle Database
Tabellpartitionering
Sök…
Introduktion
Anmärkningar
Partitionering är ett extra kostnadsalternativ och endast tillgängligt för Enterprise Edition.
Hash-partitionering
Detta skapar en tabell partitionerad med hash, i detta exempel på butik-id.
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;
Du bör använda en effekt på 2 för antalet hashpartitioner, så att du får en jämn fördelning i partitionsstorlek.
Områdesdelning
Detta skapar en tabell uppdelad efter intervall, i detta exempel på ordningsvärden.
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)
);
Välj befintliga partitioner
Kontrollera befintliga partitioner på schema
SELECT * FROM user_tab_partitions;
Lista partitionering
Detta skapar en tabell partitionerad med listor, i detta exempel på butik-id.
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)
);
Släpp partition
ALTER TABLE table_name DROP PARTITION partition_name;
Välj data från en partition
Välj data från en partition
SELECT * FROM orders PARTITION(partition_name);
Avkorta en partition
ALTER TABLE table_name TRUNCATE PARTITION partition_name;
Byt namn på en partition
ALTER TABLE table_name RENAME PARTITION p3 TO p6;
Flytta partitionen till olika tabellutrymmen
ALTER TABLE table_name
MOVE PARTITION partition_name TABLESPACE tablespace_name;
Lägg till ny partition
ALTER TABLE table_name
ADD PARTITION new_partition VALUES LESS THAN(400);
Delad partition
Delar upp någon partition i två partitioner med en annan höggränsad.
ALTER TABLE table_name SPLIT PARTITION old_partition
AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
PARTITION old_partition)
Slå samman partitioner
Slå samman två partitioner till en
ALTER TABLE table_name
MERGE PARTITIONS first_partition, second_partition
INTO PARTITION splitted_partition TABLESPACE new_tablespace
Byt ut en partition
Byt ut / konvertera en partition till en icke-partitionerad tabell och vice versa. Detta underlättar ett snabbt "flytt" av data mellan datasegmenten (i motsats till att göra något som "infoga ... välj" eller "skapa tabell ... som välj") eftersom operationen är DDL (partitionsutbytesoperationen är en data ordbokuppdatering utan att flytta faktiska data) och inte DML (stor ångra / göra omkostnader).
De flesta grundläggande exempel:
- Konvertera en icke-partitionerad tabell (tabell "B") till en partition (i tabell "A"):
Tabell "A" innehåller inte data i partitionen "OLD_VALUES" och tabellen "B" innehåller data
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
Resultat: data flyttas från tabellen "B" (innehåller inga data efter operationen) till partitionen "OLD_VALUES"
- Konvertera en partition till en icke-partitionerad tabell:
Tabell "A" innehåller data i partitionen "OLD_VALUES" och tabellen "B" innehåller inte data
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
Resultat: data flyttas från partitionen "OLD_VALUES" (innehåller inga data efter operationen) till tabellen "B"
Obs: det finns en hel del ytterligare alternativ, funktioner och begränsningar för denna operation
Mer information finns på denna länk ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 " (avsnitt "Utbyta partitioner")