Mám databázi Oracle 12c a tabulku s oddíly. Existuje starý oddíl, který má 68734 MB, což je 27% z celkového počtu.

Musím tento oddíl zrušit. Toto je produkční databáze a nemám k tomu okno prostoje.

Chci vědět, jestli tento oddíl zruším, budou indexy této tabulky nepoužitelné nebo znovu vytvořené? Jaká by byla nejlepší strategie pro zrušení tohoto oddílu s minimálním dopadem na živý provoz?

Komentáře

  • Závisí to na indexech. Globální indexy bude třeba znovu sestavit.

Odpovědět

Když vypustíte jeden nebo více oddílů, místní indexy jsou také klesl. Globální indexy musíte znovu sestavit, pokud v klauzuli ALTER TABLE DROP PARTITION není uvedena klauzule UPDATE INDEXES nebo UPDATE GLOBAL INDEXES. prohlášení.

Mám například tabulku s názvem TBL1 s oddílem rozsahu a globálními indexy.

SQL> select p.index_name, p.partition_name,p.status from dba_ind_partitions p, dba_indexes i where i.index_name=p.index_name and table_name="TBL1"; INDEX_NAME PARTITION_ STATUS ---------- ---------- -------- T_INDEX GI3 USABLE T_INDEX GI2 USABLE T_INDEX GI1 USABLE SQL> alter table tbl1 drop partition p0 UPDATE GLOBAL INDEXES; Table altered. SQL> select p.index_name, p.partition_name,p.status from dba_ind_partitions p, dba_indexes i where i.index_name=p.index_name and table_name="TBL1"; INDEX_NAME PARTITION_ STATUS ---------- ---------- -------- T_INDEX GI3 USABLE T_INDEX GI2 USABLE T_INDEX GI1 USABLE 

Jak vidíte, pokud zadám klauzuli UPDATE GLOBAL INDEXES, globální indexy se stanou nepoužitelnými.

Po zrušení oddílu patří položky indexů na tyto oddíly zůstanou. Když dotaz používá tyto indexy, jednoduše ignoruje tyto položky (osiřelé). Tyto osiřelé položky můžete vyčistit v okně běžné údržby. Podrobnosti jsou také uvedeny v následujících dokumentacích.

Operace údržby oddílů DROP PARTITION a TRUNCATE PARTITION jsou optimalizovány provedením údržby indexu pouze pro metadata.

V každém případě je zrušení nebo zkrácení oddílu dokončí okamžitě, index je vždy av k dispozici pro použití a údržba indexu je odložena

Dokumentace:

  • Údržba asynchronního globálního indexu pro vypouštění a zkracování oddílů
  • V Oracle Database 12c

    Komentáře

    • Toto je velmi užitečná informace. Máte nějakou představu o době trvání této operace, vzhledem k tomu, že tento oddíl má největší množství dat? Bude to trvat několik hodin, nebo dojde k poklesu oddílu v rozumném čase? (s v sekundách nebo minutách)
    • Podle poslední věty citované výše je skutečné zrušení oddílu operací metadat, takže bude zahrnovat pouze aktualizace několika záznamů. V zásadě to bude rychlé.
  • Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *