sql >> Databáze >  >> RDS >> Oracle

Nová funkce Oracle 18c:Online úprava dělení

V Oracle Database 18c nyní měníme strategii rozdělení tabulky online pomocí příkazu SQL „ALTER TABLE MODIFY PARTITION“.

Tato nová funkce nám umožňuje přizpůsobit metodu rozdělení pro tabulku, aniž bychom vyžadovali jakékoli související prostoje pro provedení změny.

Pokud neurčíte klauzuli „UPDATE INDEXES“ jako součást příkazu „ALTER TABLE“:

– Databáze označí jako NEPOUŽITELNÉ všechny výsledné odpovídající oddíly nebo pododdíly lokálního indexu.
– Globální indexy nebo všechny oddíly rozdělených globálních indexů jsou označeny jako NEPOUŽITELNÉ a je nutné je znovu sestavit.

Tento příklad poskytuje krok za krokem ukázku úloh potřebných k převodu tabulky oddílů RANGE na tabulku oddílů HASH.

Zobrazte oddíly tabulky 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

Zobrazte metodu rozdělení (RANGE) tabulky 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

Převeďte dělenou tabulku RANGE na dělenou tabulku HASH ONLINE:


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

Table altered.

Zobrazí novou metodu rozdělení (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

Zobrazte oddíly tabulky:


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

Odkazy

Operace údržby pro dělené tabulky a indexy. Dostupné na https://docs.oracle.com/en/database/oracle/oracle-database/18/vldbg/maintenance-partition-tables-indexes.html#GUID-0E7793F7-B38A-427E-846B-7A8651F2A523


  1. Připojení 64bitové aplikace k Acombě

  2. Jak LAST_DAY() funguje v MariaDB

  3. Příkaz EXECUTE...USING v PL/pgSQL nefunguje s typem záznamu?

  4. Načíst poslední známou hodnotu pro každý sloupec řádku