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:
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é.