Перегородки и знак высокой воды в Oracle - PullRequest
3 голосов
/ 29 марта 2012

High Water Mark (HWM) для таблицы в базе данных Oracle - это граница между блоками, которые использовались, и блоками, которые никогда не были.Усечение таблицы сбрасывает HWM до нуля.

Теперь, если у меня есть секционированная таблица, я хотел бы знать, верно ли следующее:

  1. Поддерживает ли каждый раздел свойсобственный HWM?
  2. Если нет, то alter table ... drop partition ... влияет на HWM таблицы?

Идея состоит в том, что я хотел бы заполнить таблицы разделов insert /*+ append */ (прямая вставка пути),но он только записывает данные за пределы HWM, поэтому будет ли пространство использоваться повторно, если я заново создаю раздел?Мне не удалось найти информацию по этому конкретному аспекту.

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Каждый раздел - это отдельный сегмент, поэтому у каждого будет свой HWM. Я предполагаю, что усечение всей таблицы приведет к сбросу HWM для всех разделов. Вы также можете обрезать отдельные разделы, что, безусловно, приведет к сбросу HWM для раздела.

1 голос
/ 29 марта 2012

В дополнение к ответу Дейва Косты, ответ на второй вопрос: если вы урежете раздел, HWM будет на нуле, поэтому пространство будет восстановлено для прямой вставки пути (будет использовано пространство). Если вы удалите раздел, пространство будет свободно для любого другого сегмента, который будет использоваться. В частности, для вашего нового раздела.

Итак, в нескольких словах:

  • если вы урежете раздел, для этого будет доступно место раздел.
  • если вы отбросите раздел, пространство будет свободным и можно использовать для каждого сегмента в табличном пространстве.

Кроме того, еще один прием, который нужно использовать, если вы хотите повторно использовать пространство, это сделать alter table move partition. Это позволит «воссоздать» раздел без потери данных. Есть более подробная информация, но это ваш вопрос о.

...