Oracle Database
Partitionierung der Tabelle
Suche…
Einführung
Bemerkungen
Partitionieren ist eine zusätzliche Option und nur für die Enterprise Edition verfügbar.
Hash-Partitionierung
Dadurch wird eine durch Hash partitionierte Tabelle erstellt, in diesem Beispiel für die Store-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;
Sie sollten eine Potenz von 2 für die Anzahl der Hash-Partitionen verwenden, um eine gleichmäßige Verteilung der Partitionsgröße zu erhalten.
Bereichsaufteilung
Dadurch wird eine nach Bereichen partitionierte Tabelle erstellt, in diesem Beispiel nach Auftragswerten.
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)
);
Wählen Sie vorhandene Partitionen aus
Überprüfen Sie die vorhandenen Partitionen im Schema
SELECT * FROM user_tab_partitions;
Partitionierung auflisten
Dadurch wird eine durch Listen partitionierte Tabelle erstellt, in diesem Beispiel für die Store-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)
);
Partition ablegen
ALTER TABLE table_name DROP PARTITION partition_name;
Wählen Sie Daten von einer Partition aus
Wählen Sie Daten von einer Partition aus
SELECT * FROM orders PARTITION(partition_name);
Eine Partition abschneiden
ALTER TABLE table_name TRUNCATE PARTITION partition_name;
Benennen Sie eine Partition um
ALTER TABLE table_name RENAME PARTITION p3 TO p6;
Verschieben Sie die Partition in einen anderen Tabellenbereich
ALTER TABLE table_name
MOVE PARTITION partition_name TABLESPACE tablespace_name;
Neue Partition hinzufügen
ALTER TABLE table_name
ADD PARTITION new_partition VALUES LESS THAN(400);
Partition aufteilen
Teilt eine Partition in zwei Partitionen mit einer anderen hohen Grenze auf.
ALTER TABLE table_name SPLIT PARTITION old_partition
AT (new_high_bound) INTO (PARTITION new_partition TABLESPACE new_tablespace,
PARTITION old_partition)
Partitionen zusammenführen
Verbinden Sie zwei Partitionen zu einer einzigen
ALTER TABLE table_name
MERGE PARTITIONS first_partition, second_partition
INTO PARTITION splitted_partition TABLESPACE new_tablespace
Tauschen Sie eine Partition aus
Tauschen Sie eine Partition in eine nicht partitionierte Tabelle um und umgekehrt. Dies ermöglicht ein schnelles "Verschieben" von Daten zwischen den Datensegmenten (im Gegensatz zu "Einfügen ... Auswählen" oder "Erstellen einer Tabelle ... Auswahl"), da die Operation DDL ist (die Partitionsaustauschoperation ist eine Datenmenge) Wörterbuchaktualisierung ohne Verschieben der tatsächlichen Daten) und nicht DML (großer Undo / Redo-Overhead).
Grundlegende Beispiele:
- Konvertieren Sie eine nicht partitionierte Tabelle (Tabelle "B") in eine Partition (von Tabelle "A"):
Tabelle "A" enthält keine Daten in Partition "OLD_VALUES" und Tabelle "B" enthält Daten
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
Ergebnis: Daten werden aus Tabelle "B" (enthält nach der Operation keine Daten) in die Partition "OLD_VALUES" verschoben.
- Konvertieren Sie eine Partition in eine nicht partitionierte Tabelle:
Tabelle "A" enthält Daten in Partition "OLD_VALUES" und Tabelle "B" enthält keine Daten
ALTER TABLE "A" EXCHANGE PARTITION "OLD_VALUES" WITH TABLE "B";
Ergebnis: Daten werden von der Partition "OLD_VALUES" (enthält nach der Operation keine Daten) in die Tabelle "B" verschoben.
Hinweis: Für diesen Vorgang gibt es einige zusätzliche Optionen, Funktionen und Einschränkungen
Weitere Informationen finden Sie unter diesem Link ---> " https://docs.oracle.com/cd/E11882_01/server.112/e25523/part_admin002.htm#i1107555 " (Abschnitt "Partitionen austauschen").