sql >> Databasteknik >  >> RDS >> Oracle

Oracle 18c Ny funktion:Onlinemodifiering av partitionering

I Oracle Database 18c ändrar vi nu partitioneringsstrategin online för en tabell via SQL-satsen "ALTER TABLE MODIFY PARTITION".

Denna nya funktion gör det möjligt för oss att anpassa partitioneringsmetoden för en tabell utan att kräva någon tillhörande driftstopp för att göra ändringen.

Om du inte anger "UPDATE INDEXES"-satsen som en del av "ALTER TABLE"-satsen:

– Databasen markerar UNUSBLE alla resulterande motsvarande lokala indexpartitioner eller underpartitioner.
– Globala index, eller alla partitioner av partitionerade globala index, är märkta UNUSBLE och måste byggas om.

Det här exemplet ger en steg för steg demonstration av de uppgifter som krävs för att konvertera RANGE-partitionstabellen till en HASH-partitionstabell.

Visa partitionerna för tabellen 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

Visa partitioneringsmetoden (RANGE) för tabellen 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

Konvertera RANGE-partitionerad tabell till HASH-partitionerad tabell ONLINE:


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

Table altered.

Visar den nya partitioneringsmetoden (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

Visa tabellens partitioner:


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

Referenser

Underhållsåtgärder för partitionerade tabeller och index. Tillgänglig på https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/maintenance-partition-tables-indexes.html#GUID-0E7793F7-B38A-427E-846B-7A8651F2A523


  1. Hur Oracle Index klustringsfaktor beräknas

  2. Använd FILEGROUP_ID() för att returnera en filgrupps ID i SQL Server

  3. Oracle PL/SQL - tips för omedelbar utskrift / konsolutskrift

  4. Hur konverterar man SQL Query-resultat till PANDAS Data Structure?