Разделы и High Water Mark в Oracle

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

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

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

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


person yktoo    schedule 29.03.2012    source источник


Ответы (2)


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

person Dave Costa    schedule 29.03.2012

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

Итак, короче:

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

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

person Florin Ghita    schedule 29.03.2012