2012-03-29 14 views
3

High Water Mark (HWM) für eine Tabelle in einer Oracle-Datenbank ist die Linie zwischen Blöcken, die verwendet wurden, und solchen, die nie zuvor verwendet wurden. Durch das Abschneiden einer Tabelle wird die HWM auf Null zurückgesetzt.Partitionen und Hochwassermarke in Oracle

Nun, wenn ich einen partitionierten Tabelle haben, würde Ich mag wissen, ob die folgenden Bedingungen erfüllt ist:

  1. Hat jede Partition einen eigenen HWM halten?
  2. Wenn nicht, wirkt sich alter table ... drop partition ... auf die HWM-Tabelle aus?

Die Idee ist, ich mag Partitionstabellen mit insert /*+ append */ (direktem Weg Insert) füllen, aber es schreibt nur Daten über den HWM, so wird der Raum wiederverwendet werden, wenn ich die Partition neu erstellen? Ich habe keine Informationen zu diesem speziellen Aspekt gefunden.

Antwort

4

Jede Partition ist ein separates Segment, so dass jedes seine eigene HWM hat. Ich nehme an, dass das Abschneiden der gesamten Tabelle das HWM für alle Partitionen zurücksetzen würde. Sie können auch einzelne Partitionen abschneiden, was das HWM für die Partition sicher zurücksetzen würde.

1

Zusätzlich zu Dave Costas Antwort, Antwort auf die zweite Frage: Wenn Sie die Partition abschneiden, wird die HWM auf Null gesetzt, so dass der Speicherplatz für direkte Pfadeinfügung wiedergewonnen wird (Leerzeichen wird verwendet). Wenn Sie die Partition löschen, ist der Speicherplatz für jedes andere Segment frei. Insbesondere für Ihre neue Partition.

also in weniger Worten:

  • wenn Sie die Partition gestutzt, wird Platz für diese Partition zur Verfügung. Wenn Sie die Partition löschen, ist der Speicherplatz frei und kann für jedes Segment im Tablespace verwendet werden.

Auch zu einem anderen Trick verwenden, wenn Sie den Raum wieder zu verwenden wollen, ist ein alter table move partition zu tun. Dies wird die Partition "neu erstellen", ohne die Daten zu verlieren. Es gibt mehr Details, aber das ist Ihre Frage zu.

Verwandte Themen