Иногда у нас заканчивается пространство сегмента отката, что приводит к сбою запроса / обновления. Какие передовые практики я могу ожидать от администратора базы данных Oracle, чтобы гарантировать, что это будет проактивно отслеживаться и какие меры будут приняты до возникновения проблем?
Какую версию Oracle вы используете? Вы действительно используете сегменты ручного отката? Или вы используете автоматическое управление UNDO? Если вы используете среднюю версию Oracle (9i или новее), вам действительно следует использовать автоматическое управление UNDO.
Предполагая, что вы используете автоматическое управление UNDO, вам действительно просто нужно знать, сколько UNDO генерирует ваша база данных за единицу времени и как долго должен выполняться самый длинный запрос, который вам нужно выполнить (или самый дальний назад, который должен пройти ретроспективный запрос) . Затем вам просто нужно установить UNDO_RETENTION
независимо от того, какой должна быть самая длинная среда выполнения запроса, и размер UNDO
табличное пространство для хранения всех отмен, сгенерированных в течение этого интервала (хотя особенности зависят от конкретной версии Oracle).
Отсюда администратору базы данных относительно легко отслеживать изменения в скорости удержания UNDO. Однако для администратора базы данных возможно, но потенциально сложнее отслеживать изменения в самом продолжительном «реальном» запросе, поскольку производственная база данных несколько часто сталкивается с ужасным неконтролируемым запросом, когда кто-то пытается получить отчет и случайно выполняет декартово соединение или другое ужасное дорогостоящая операция, требующая много времени для выполнения. Администратор баз данных может быть не в состоянии определить, существуют ли «настоящие» длительные запросы, которые занимают больше времени, или они действительно являются ошибками. Как правило, разработчикам приложений легче сотрудничать с администраторами баз данных, чтобы определить, когда запросы должны выполняться дольше. Это может быть то, что разработчики просто знают (то есть потому, что вы развертываете новый отчет, который вы ожидаете запускать в течение особенно долгого времени) или что-то, что разработчики где-то регистрируют и периодически просматривают вместе с администраторами баз данных.