W Oracle Database 18c zmieniamy teraz strategię partycjonowania online tabeli za pomocą instrukcji SQL „ALTER TABLE MODIFY PARTITION”.
Ta nowa funkcja umożliwia nam dostosowanie metody partycjonowania tabeli bez konieczności przestoju w celu wprowadzenia zmiany.
Chyba że określisz klauzulę „UPDATE INDEXES” jako część instrukcji „ALTER TABLE”:
– Baza danych oznacza NIEUŻYTECZNE wszystkie odpowiadające im partycje lub podpartycje indeksu lokalnego.
– Indeksy globalne lub wszystkie partycje podzielonych na partycje indeksów globalnych są oznaczone jako NIEUŻYTECZNE i muszą zostać odbudowane.
Ten przykład pokazuje krok po kroku zadania wymagane do konwersji tablicy partycji RANGE na tablicę partycji HASH.
Wyświetl partycje tabeli ATP01_CRED_PAG:
# sqlplus / as sysdba SQL*Plus: Release 18.0.0.0.0 - Production on Wed Jun 17 16:39:51 2020 Version 18.2.0.0.0 Copyright (c) 1982, 2018, Oracle. All rights reserved. Connected to: Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production Version 18.2.0.0.0 SQL> select table_name, partition_name, partition_position from dba_tab_partitions where table_name='ATP01_CRED_PAG'; TABLE_NAME PARTITION_NAME PARTITION_POSITION ----------------------------------------------------- ATP01_CRED_PAG PART_199501 1 ATP01_CRED_PAG PART_199412 2 ATP01_CRED_PAG PART_199506 3 SQL> select count(1) from ATP01_CRED_PAG partition (PART_199501); COUNT(1) ---------- 3908 SQL> select count(1) from ATP01_CRED_PAG partition (PART_199412); COUNT(1) ---------- 3984 SQL> select count(1) from ATP01_CRED_PAG partition (PART_199506); COUNT(1) ---------- 1363
Wyświetl metodę partycjonowania (RANGE) tabeli ATP01_CRED_PAG:
SQL> select owner, table_name, partitioning_type, autolist, interval, autolist_subpartition from dba_part_tables where table_name = 'ATP01_CRED_PAG'; OWNER TABLE_NAME PARTITION AUT INTERVAL AUT -------- -------------- -------- ---- --------- ------ ADMIN ATP01_CRED_PAG RANGE NO NO
Konwertuj tabelę partycjonowaną RANGE na tabelę partycjonowaną HASH ONLINE:
SQL> ALTER TABLE ATP01_CRED_PAG MODIFY PARTITION BY HASH (DT_COMPETENCIA) PARTITIONS 3 ONLINE; Table altered.
Wyświetla nową metodę partycjonowania (HASH):
SQL> select owner, table_name, partitioning_type, autolist, interval, autolist_subpartition from dba_part_tables where table_name = 'ATP01_CRED_PAG'; OWNER TABLE_NAME PARTITION AUT INTERVAL AUT -------- ------------- --------- --- -------- ----- ADMIN ATP01_CRED_PAG HASH NO NO
Wyświetl partycje tabeli:
SQL> select table_name, partition_name, partition_position from dba_tab_partitions where table_name='ATP01_CRED_PAG'; TABLE_NAME PARTITION_NAME PARTITION_POSITION ----------------- ---------------- ------------------ ATP01_CRED_PAG SYS_P621 1 ATP01_CRED_PAG SYS_P622 2 ATP01_CRED_PAG SYS_P623 3 SQL> select count(1) from ATP01_CRED_PAG partition (SYS_P621); COUNT(1) ---------- 2651 SQL> select count(1) from ATP01_CRED_PAG partition (SYS_P622); COUNT(1) ---------- 6604 SQL> select count(1) from ATP01_CRED_PAG partition (SYS_P623); COUNT(1) ---------- 0
Referencje
Operacje konserwacyjne dla tabel partycjonowanych i indeksów. Dostępne pod adresem https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/maintenance-partition-tables-indexes.html#GUID-0E7793F7-B38A-427E-846B-7A8651F2A523