Предупреждения при нехватки места в табличном пространстве

Стас Белков

Стас Белков

Автор статьи. Известный специалист в мире IT. Консультант по продуктам и решениям Oracle. Практикующий программист и администратор баз данных. Подробнее.

Если сегмент нуждается в расширении, чтобы вместить новые данные, в табличном пространстве, к которому относится этот сегмент, должно быть достаточно свободного пространства. Если его нет, то данные не могут быть вставлены, и вы получите ошибку Oracle, указывающую на неудачу операцию из-за недостатка места в табличном пространстве.

Вы можете писать сценарии для выдачи предупреждений, когда в табличном пространстве остается мало места, но база данных сама может посылать упреждающие сигналы тревоги для всех локально управляемых табличных пространств, включая табличное пространство undo. База данных Oracle хранит информацию об использовании места в табличном пространстве в системной глобальной области (SGA). Новый фоновый процесс Oracle под названием MMON проверяет степень заполнения табличного пространства каждые десять минут, и выдает предупреждение в случае необходимости.

База данных Oracle Database будет посылать два типа сигналов об исчерпании места в табличном пространстве: предупреждающий сигнал и критичный (аварийный) сигнал. Предупреждающий сигнал извещает о том, что свободного места осталось мало, а критичный сигнал — о том, что необходимо немедленно позаботиться о решении проблемы со свободным местом, чтобы база данных не начала выдавать ошибки типа “нет места”. Оба эти сигнала основаны на пороговых значениях, которые можно модифицировать.


Совет. При обновлении до Oracle Database 11g по умолчанию предупреждения о степени заполнения в процентах и байтах отключены. Их потребуется явно установить. Для каждого отдельного табличного пространства можно использовать любой из двух типов предупреждений.


Типы пороговых сигналов

Есть два пути установки пороговых значений для сигналов: можно специфицировать,что сигнал должен инициироваться на основе процента использованного пространства либо на основе количества оставшихся свободных байт в табличном пространстве.

  • Процентное наполнение. База данных выдает сигнал тревоги, когда использованное в табличном пространстве место достигает или превышает заранее заданного процента от всего объема. Для новой базы данных в качестве порога для предупреждающих сигналов устанавливается 85% наполнения, а в качестве порога для критичных сигналов — 97% наполнения. При желании можно изменить эти значения и установить, например, 90% и 98%, соответственно, для предупреждающих и критичных сигналов.
  • Оставшиеся байты. Когда объем свободного места снижается ниже определенного объема (заданного в килобайтах), Oracle выдает сигнал. Например, можно установить пороговое значение в 10240 Кбайт для выдачи предупреждающего сигнала и в 4096 Кбайт — для выдачи критичного предупреждения. По умолчанию “сигналы об оставшихся байтах” (предупреждающее и критичное) в новой базе данных отключены, поскольку стандартные значения для обоих типов порогов установлены в ноль. Их следует установить в размер, который считается подходящим для каждого табличного пространства.


Подсказка. Отключить предупреждающие и критичные сигналы для табличного пространства можно, установив их равными нулю.


Установка пороговых сигналов

Простейший способ установки и модификации сигналов о свободном месте в табличном пространстве предусматривает использование Oracle Enterprise Manager (OEM).Просто зайдите на домашнюю страницу OEM и выберите Administration->Related Links->Manage Metrics->Edit Thresholds (Администрирование->Связанные ссылки->Управление метриками->Редактировать пороги). На странице Edit Thresholds (Редактирование порогов) можно установить пороговые значения для выдачи предупреждающих и критичных сигналов для табличных пространств. Можно также специфицировать действия, выполняемые в ответ на получение сигналов, в форме командных сценариев или сценариев, доступных агенту управления (Management Agent).

Кроме того, для установки предупреждающих и критичных сигналов можно воспользоваться предоставляемым Oracle пакетом PL/SQL под названием DBMS_SERVER_ALERT.В листинге ниже показано, как устанавливается пороговое значение для сигнала об “оставшихся байтах” с использованием значений атрибутов.


 

SQL> BEGIN
DBMS_SERVER_ALERT.SET_THRESHOLD(
metrics_id              => DBMS_SERVER_ALERT.TABLESPACE_BYT_FREE,
warning_operator        => DBMS_SERVER_ALERT.OPERATOR_LE,
warning_value           => '10240',
critical_operator       => DBMS_SERVER_ALERT.OPERATOR_LE,
critical_value          => '2048',
observation_period      => 1,
consecutive_occurrences => 1,
instance_name           => NULL,
object_type             => DBMS_SERVER_ALERT.OBJECT_TYPE_TABLESPACE,
object_name             => 'USERS');
END;
SQL>

Обратите внимание, что в листинге выше атрибут warning_value устанавливает порог предупреждающего сигнала в 10 Мбайт, а атрибут critical_varning — порог критичного сигнала в 2 Мбайт.

Чтобы выйти из ситуации с недостатком свободного места, всегда можно добавить к табличному пространству новый файл данных. Однако в большинстве случаев имеется способ вообще избежать этой проблемы; он предусматривает использование автоматически расширяемых табличных пространств. Автоматически расширяемые табличные пространства автоматически увеличиваются в размере по мере роста табличных или индексных данных, содержащихся в них. Для новых баз данных это может показаться блестящим решением, избавляющим от ошибок, связанных с недостатком места, при создании табличных пространств, которые слишком малы, и от пустой траты места,когда создается слишком большое табличное пространство. Создать автоматически расширяемое табличное пространство очень легко. Все что для этого нужно — включить конструкцию AUTOEXTEND для файла данных в команду создания или изменения табличного пространства. Нужно лишь удостовериться в наличии достаточного места на диске, чтобы автоматически расширяемый файл данных уместился.

Вас заинтересует / Intresting for you:

Количество пользовательских та...
Количество пользовательских та... 1489 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Квоты табличных пространств
Квоты табличных пространств 3505 просмотров Stas Belkov Tue, 21 Nov 2017, 13:18:46
Создание табличных пространств...
Создание табличных пространств... 12054 просмотров Дэйзи ак-Макарова Tue, 21 Nov 2017, 13:18:46
Oracle Database: обзор базы да...
Oracle Database: обзор базы да... 23483 просмотров Илья Дергунов Sun, 11 Aug 2019, 15:01:35
Войдите чтобы комментировать

apv аватар
apv ответил в теме #8488 6 года 10 мес. назад
Установка пороговых сигналов (семафоров) для предупреждении о заканчивании свободного места в табличном пространстве - это отличная функция, реализованная в СУБД Oracle Database 11g!