Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nowa funkcja Oracle 18c:modyfikacja partycjonowania online

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak korzystać z funkcji łączenia w Oracle

  2. N-ta maksymalna pensja w Oracle

  3. Oracle 11g pobiera wszystkie dopasowane wystąpienia za pomocą wyrażenia regularnego

  4. jak zamienić wiele ciągów razem w Oracle

  5. Biała księga statystyczna CBO