Каковы лучшие практики для мониторинга сегмента отката Oracle?

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

1 ответ

Решение

Какую версию Oracle вы используете? Вы на самом деле используете сегменты ручного отката? Или вы используете автоматическое управление UNDO? Если вы используете относительно свежую версию Oracle (9i или более позднюю), вам действительно следует использовать автоматическое управление UNDO.

Предполагая, что вы используете автоматическое управление UNDO, вам просто нужно знать, сколько UNDO генерирует ваша база данных за единицу времени и как долго должен выполняться самый длинный запрос, который вам нужно выполнить (или самый дальний назад, который должен пройти запрос флэшбэка), Затем вам просто нужно установить UNDO_RETENTION к какому бы длинному времени выполнения запроса ни было, и размер UNDO табличное пространство для хранения всей отмены, сгенерированной за этот интервал (хотя особенности зависят от конкретной версии Oracle).

После этого администратору базы данных относительно легко отслеживать изменения в скорости хранения UNDO. Однако это возможно, но потенциально труднее для администратора баз данных отслеживать изменения в самом длительном "реальном" запросе, потому что производственная база данных несколько часто сталкивается с ужасным безудержным запросом, когда кто-то пытается получить отчет и случайно делает декартово соединение или какое-то другое безобразно дорогостоящая операция, которая требует много времени для запуска. Для администратора БД может оказаться невозможным определить, существуют ли "настоящие" долго выполняющиеся запросы, которые занимают больше времени, или действительно ли долго выполняющиеся запросы являются просто ошибками. Разработчикам приложений, как правило, легче сотрудничать с администраторами баз данных, чтобы определить, когда запросы должны выполняться дольше. Это может быть то, что разработчики просто знают (например, потому что вы развертываете новый отчет, который вы ожидаете запустить в течение особенно долгого времени) или что-то, что разработчики регистрируют где-то и периодически проверяют с администраторами баз данных.

Другие вопросы по тегам