Ik heb een Oracle 12c-database en een gepartitioneerde tabel. Er is een oude partitie met 68734 MB, dat is 27% van het totaal.
Ik moet deze partitie verwijderen. Dit is een productiedatabase en ik heb hiervoor geen downtime-venster.
Ik wil weten of ik deze partitie laat vallen, zullen de indexen van deze tabel dan onbruikbaar zijn of opnieuw worden opgebouwd? Wat zou de beste strategie zijn om deze partitie te verwijderen met minimale impact op het live verkeer?
Opmerkingen
- Hangt af van de indexen. Globale indexen moeten opnieuw worden opgebouwd.
Antwoord
Wanneer u een of meer partities verwijdert, worden lokale indexen ook gedaald. U moet globale indexen opnieuw opbouwen, tenzij de clausule UPDATE INDEXES
of UPDATE GLOBAL INDEXES
is opgegeven in de ALTER TABLE DROP PARTITION
statement.
Ik heb bijvoorbeeld een tabel met de naam TBL1
met bereikpartitie en globale indexen.
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
Zoals je kunt zien, als ik de clausule UPDATE GLOBAL INDEXES
specificeer, worden globale indexen niet onbruikbaar.
Na het verwijderen van de partitie, behoren indexingangen naar die partities blijven. Wanneer een query deze indexen gebruikt, negeren ze dergelijke items gewoon (verweesd). U kunt dergelijke verweesde items opschonen in uw reguliere onderhoudsvenster. Details worden ook gegeven in de volgende documentatie.
De partitie-onderhoudsbewerkingen DROP PARTITION en TRUNCATE PARTITION worden geoptimaliseerd door het indexeren alleen voor metadata te laten onderhouden.
In ieder geval het verwijderen of afkappen van een partitie voltooit onmiddellijk, de index is altijd av bruikbaar voor gebruik, en het onderhoud van de index wordt uitgesteld
Documentatie:
Opmerkingen
- Dit is erg nuttige informatie. Heeft u enig idee over de tijdsduur van deze operatie, aangezien deze partitie de meeste gegevens bevat? Zal het enkele uren duren of zal de partitie vallen binnen een redelijke tijd? (met in seconden of minuten)
- Zoals in de laatste zin die hierboven is aangehaald, is het feitelijk verwijderen van een partitie een bewerking met metagegevens, dus alleen updates van een handvol records. In principe zal het snel zijn.