Ich habe eine Oracle 12c-Datenbank und eine partitionierte Tabelle. Es gibt eine alte Partition mit 68734 MB, was 27% der Gesamtmenge entspricht.

Ich muss diese Partition löschen. Dies ist eine Produktionsdatenbank, für die ich kein Ausfallzeitfenster habe.

Ich möchte wissen, ob die Indizes dieser Tabelle unbrauchbar sind oder neu erstellt werden, wenn ich diese Partition lösche. Was wäre die beste Strategie, um diese Partition mit minimalen Auswirkungen auf den Live-Verkehr zu löschen?

Kommentare

  • Abhängig von den Indizes. Globale Indizes müssen neu erstellt werden.

Antwort

Wenn Sie eine oder mehrere Partitionen löschen, sind dies lokale Indizes auch fallen gelassen. Sie müssen globale Indizes neu erstellen, es sei denn, die Klausel UPDATE INDEXES oder UPDATE GLOBAL INDEXES ist in der ALTER TABLE DROP PARTITION angegeben Anweisung.

Ich habe beispielsweise eine Tabelle mit dem Namen TBL1 mit Bereichspartition und globalen Indizes.

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 

Wie Sie sehen, werden globale Indizes nicht unbrauchbar, wenn ich die Klausel UPDATE GLOBAL INDEXES spezifiziere.

Nach dem Löschen der Partition gehören Indexeinträge dazu Wenn eine Abfrage diese Indizes verwendet, ignorieren sie solche Einträge einfach (verwaist). Sie können solche verwaisten Einträge in Ihrem regulären Wartungsfenster bereinigen. Details finden Sie auch in den folgenden Dokumentationen.

Die Partitionswartungsvorgänge DROP PARTITION und TRUNCATE PARTITION werden optimiert, indem die Indexpflege nur für Metadaten durchgeführt wird.

In jedem Fall das Löschen oder Abschneiden einer Partition Wird sofort abgeschlossen, ist der Index immer av zur Verwendung verfügbar, und die Pflege des Index wird verzögert.

Dokumentation:

  • Asynchrone globale Indexverwaltung zum Löschen und Abschneiden von Partitionen
  • In Oracle Database 12c

    Kommentare

    • Dies sind sehr nützliche Informationen. Haben Sie eine Vorstellung von der Zeitdauer dieses Vorgangs, da diese Partition die meisten Daten enthält? Wird es mehrere Stunden dauern oder wird die Partition in angemessener Zeit gelöscht? (mit in Sekunden oder Minuten)
    • Gemäß dem oben zitierten letzten Satz ist das tatsächliche Löschen einer Partition eine Metadatenoperation, bei der nur eine Handvoll Datensätze aktualisiert werden. Grundsätzlich wird es schnell gehen.
  • Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.