Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle 18c Neues Feature:Online-Änderung der Partitionierung

In Oracle Database 18c ändern wir jetzt die Partitionierungsstrategie einer Tabelle online über das SQL-Statement „ALTER TABLE MODIFY PARTITION“.

Diese neue Funktion ermöglicht es uns, die Partitionierungsmethode für eine Tabelle anzupassen, ohne dass eine damit verbundene Ausfallzeit für die Änderung erforderlich ist.

Es sei denn, Sie geben die Klausel „UPDATE INDEXES“ als Teil der „ALTER TABLE“-Anweisung an:

– Die Datenbank markiert alle resultierenden entsprechenden lokalen Indexpartitionen oder Unterpartitionen als UNVERWENDBAR.
– Globale Indizes oder alle Partitionen partitionierter globaler Indizes werden als UNVERWENDBAR markiert und müssen neu erstellt werden.

Dieses Beispiel demonstriert Schritt für Schritt die Aufgaben, die zum Konvertieren einer RANGE-Partitionstabelle in eine HASH-Partitionstabelle erforderlich sind.

Anzeige der Partitionen der Tabelle 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

Anzeige der Partitionierungsmethode (RANGE) der Tabelle 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

RANGE-partitionierte Tabelle ONLINE in HASH-partitionierte Tabelle konvertieren:


SQL> ALTER TABLE ATP01_CRED_PAG MODIFY PARTITION BY HASH (DT_COMPETENCIA) PARTITIONS 3 ONLINE;

Table altered.

Zeigt die neue Partitionierungsmethode (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

Anzeige der Partitionen der Tabelle:


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

Referenzen

Wartungsvorgänge für partitionierte Tabellen und Indizes. Verfügbar unter https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/maintenance-partition-tables-indexes.html#GUID-0E7793F7-B38A-427E-846B-7A8651F2A523