sql >> Database >  >> RDS >> Oracle

Oracle 18c Nieuwe functie:online wijzigen van partitionering

In Oracle Database 18c wijzigen we nu online de partitioneringsstrategie van een tabel via de SQL-instructie "ALTER TABLE MODIFY PARTITION".

Deze nieuwe functie stelt ons in staat om de partitioneringsmethode voor een tabel aan te passen zonder dat er enige downtime nodig is om de wijziging aan te brengen.

Tenzij u de clausule "UPDATE INDEXES" opgeeft als onderdeel van de instructie "ALTER TABLE":

– De database markeert ONGEBRUIKBAAR alle resulterende corresponderende lokale indexpartities of subpartities.
– Globale indexen, of alle partities van gepartitioneerde globale indexen, zijn gemarkeerd als ONGEBRUIKBAAR en moeten opnieuw worden opgebouwd.

Dit voorbeeld biedt een stapsgewijze demonstratie van de taken die nodig zijn om de RANGE-partitietabel naar een HASH-partitietabel te converteren.

Toon de partities van de tabel 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

Toon de partitioneringsmethode (RANGE) van de tabel 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

Converteer RANGE Gepartitioneerde tabel naar HASH gepartitioneerde tabel ONLINE:


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

Table altered.

Toont de nieuwe partitioneringsmethode (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

Geef de partities van de tabel weer:


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

Referenties

Onderhoudsbewerkingen voor gepartitioneerde tabellen en indexen. Beschikbaar op https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/maintenance-partition-tables-indexes.html#GUID-0E7793F7-B38A-427E-846B-7A8651F2A523


  1. Wat is de beste manier om mediabestanden op te slaan in een database?

  2. Hoe u kunt profiteren van de nieuwe partitioneringsfuncties in PostgreSQL 11

  3. Geven DDL-statements je altijd een impliciete commit, of kun je een impliciete rollback krijgen?

  4. Hoe Acosd() werkt in PostgreSQL