Последний проанализированный оракул, что это такое

Обновлено: 04.07.2024

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

Запрос для получения индексов (некоторые из них были last_analyzed недельной давности):

В каких случаях индексы перестают анализироваться?

Как сделать так, чтобы индексы анализировались автоматически?

Нужно ли мне как-то управлять анализом индексов вручную, если они сломаются? Как они могут сломаться? Как я узнаю, что они сломаны? Как исправить? С какими интервалами?

Возможно, нет автоматического управления? Это было бы очень удивительно. Но если это так, как управлять индексами вручную? Спасибо.

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

У Oracle есть стандартное задание статистики, которое выполняется каждый день. Он достаточно умен, чтобы знать, какие сегменты (индексы, таблицы) нуждаются в обновлении статистики. Боюсь, у вас компульсивное расстройство настройки.

Добавлена ​​мотивация в отношении того, что мы видим в продакшене. @mustaccio, руководство администратора? Это безумие для Oracle — просить пользователей исправить то, что не работает в их БД.

Существует огромная разница между "устаревшей статистикой" и "неработающим индексом". Вполне возможно, особенно в приложении DW, что правила по умолчанию, используемые автоматическим сбором статистики, не являются оптимальными для данной ситуации. В этом случае, как сказал @Balazs Papp, вполне нормально просто запланировать собственное задание по сбору статистики для рассматриваемых объектов.

1 Ответ 1

Во-первых, сам по себе тот факт, что некоторые объекты имеют старую статистику, не обязательно означает, что их нужно обновлять.

По умолчанию индексы (таблицы) анализируются автоматически.

Инфраструктура автоматизированных задач обслуживания (известная как AutoTask) планирует автоматическое выполнение задач в окнах Oracle Scheduler, называемых окнами обслуживания.

По умолчанию на каждый день недели запланировано одно окно. . Автоматический сбор статистики оптимизатора выполняется как часть AutoTask. По умолчанию сбор выполняется во всех предварительно определенных окнах обслуживания.

Для сбора статистики оптимизатора база данных вызывает внутреннюю процедуру, которая работает аналогично процедуре GATHER_DATABASE_STATS с параметром GATHER AUTO. При автоматическом сборе статистики учитываются все настройки, установленные в базе данных.

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

В дополнение к вышесказанному ("нет статистики или очень старая статистика"):

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

Определение этого порога:

STALE_PERCENT — это значение определяет процент строк в таблице, которые должны измениться, прежде чем статистика в этой таблице будет считаться устаревшей и должна быть собрана заново. Допустимый домен для stale_percent — неотрицательные числа. Значение по умолчанию равно 10, что означает, что таблица, содержащая более 10 % изменений, считается устаревшей.

Поэтому статистика объектов считается устаревшей, если более 10 % строк изменились с момента последнего сбора статистики по этому объекту.

Это значение в 10 % может быть адекватным для ваших таблиц, а может и не быть. Вы можете установить это значение вручную даже для каждого объекта, чтобы статистика чаще считалась устаревшей.

У вас также есть возможность собирать статистику вручную, даже если задание запланировано.

Привет всем,
Может ли кто-нибудь сообщить мне значение или цель "LAST_ANALYZED" из приведенного ниже запроса. Для какой цели мы используем это слово и как оно будет работать?


ВЫБРАТЬ table_name,num_rows,last_analyzed FROM ALL_TABLES WHERE table_name как 'PYM%'

Ответы

Если при сборе статистики DBMS_stat произойдет сбой, вы всегда можете
отметить LAST_ANALYZED в USER_TABLES, чтобы узнать, какие таблицы
проанализированы в этот день. Затем вы можете вволю проанализировать
все таблицы с датой LAST_ANALYZED раньше, чем sysdate.

В этом случае документация НЕ очень полезна. Я хотел бы знать ответ на этот же вопрос, и ваш ответ скорее умный, чем полезный. Спасибо ни за что.

Что мне нужно знать, так это то, что Oracle подразумевает под "анализом". Означает ли это, что в последний раз, например, таблица была «тронута», например, в транзакции? Последний раз обновлялся?Значит ли это, что была собрана определенная статистика? Если да, то какая статистика и где находится эта информация?

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

Соломон Якобсон

Это означает, что статистика была собрана. В старых версиях статистика собиралась с помощью оператора ANALYZE, поэтому LAST_ANALYZED. В более новых версиях вы по-прежнему можете использовать ANALYZE, но пакет DBMS_STATS предоставляет гораздо более полный интерфейс для сбора статистики.

Свен В.

952934 написал:
Документация НЕ очень полезна в этом случае. Я хотел бы знать ответ на этот же вопрос, и ваш ответ скорее умный, чем полезный. Спасибо ни за что.

Что мне нужно знать, так это то, что Oracle подразумевает под "анализом". Означает ли это, что в последний раз, например, таблица была «тронута», например, в транзакции? Последний раз обновлялся? Значит ли это, что была собрана определенная статистика? Если да, то какая статистика и где находится эта информация?

Ну на самом деле у вас немного другой вопрос. Вот почему ответ идеально подходит для вашего случая.
И вы взломали тему, которой более 3 лет.


Вопрос: Я хочу знать частоту сбора dbms_stats. Как узнать, как часто dbms_stats используется для ваших таблиц?

Ответ. В Oracle Database 10g и более поздних версиях параметр инициализации statistics_level функционирует как глобальная опция для механизма мониторинга таблиц. Этот механизм переопределяет предложение MONITORING уровня таблицы. Другими словами, предложения [NO] MONITORING теперь устарели. Параметр statistics_level также был доступен в версии 9i.

Если для параметра statistics_level установлено значение BASIC, функция мониторинга отключена. Если для него установлено значение TYPICAL (настройка по умолчанию) или ALL, то включен глобальный мониторинг таблиц.

Эти изменения направлены на упрощение операций, а также на их согласование с другими связанными статистическими данными. Механизм мониторинга изменений теперь включен по умолчанию, и пользователям функции GATHER AUTO или STALE в dbms_stats больше не нужно явно включать мониторинг для каждой таблицы в соответствии с настройками по умолчанию.

Несмотря на то, что существует множество способов отображения частоты сбора данных для dbms_stats, этот метод будет получать информацию из словаря данных:

выберите
имя_задания,
включено,
интервал_повторения
из
полный скрипт см. в хранилище кода
dba_scheduler_jobs
где
job_name='GATHER_STATS_JOB';

выбрать
last_analyzed,
count(*)
из
dba_tables
где владелец = 'XXX'
группировать по
last_analyzed < br />упорядочить по
последнему_проанализированному описанию;

выберите
last_analyzed,
count(*)
from

полный сценарий см. в хранилище кода
dba_tables
где владелец = 'XXX'
группировать по
last_analyzed
упорядочить по
last_analyzed desc;

полный скрипт см. в хранилище кода
из
dba_tables
где владелец = 'XXX',
где
last_analyzed равен NULL;

полный сценарий см. в хранилище кода
dba_tables
где владелец = 'XXX',
где
last_analyzed равен NULL;

Обучение Oracle от Дона Берлесона

Лучшие на сайте «Учебные курсы Oracle» находятся на расстоянии одного телефонного звонка! Вы можете пройти индивидуальное обучение Oracle от Дональда Берлесона прямо в своем магазине!


Бурлесон — американская команда


Примечание. Эта документация по Oracle была создана в качестве справочника по поддержке и обучению Oracle для использования нашими специалистами-консультантами по настройке производительности администраторов баз данных. Не стесняйтесь задавать вопросы на нашем форуме Oracle.

Проверьте опыт! Любой, кто рассматривает возможность использования услуг эксперта службы поддержки Oracle, должен самостоятельно проверить свои полномочия и опыт, а не полагаться на рекламу и самопровозглашенный опыт. Все законные эксперты Oracle публикуют свои квалификации Oracle.

Ошибки? Технология Oracle меняется, и мы стараемся обновлять нашу информацию о поддержке BC Oracle.Если вы обнаружите ошибку или у вас есть предложение по улучшению нашего контента, мы будем признательны за ваш отзыв. Просто электронная почта:


и укажите URL-адрес страницы.


Burleson Consulting

Оракул поддержки баз данных

Команда ANALYZE предназначена для получения более быстрой и точной статистики с помощью предоставленных процедур.
Таблицу анализа можно использовать для создания статистики для 1 таблицы, индекса или кластера.

Примеры кода
АНАЛИЗ таблицы статистики вычислений Скотта;
АНАЛИЗ таблицы Скотта оценка выборки статистики 25 процентов;
АНАЛИЗ таблицы Скотт оценивает статистику выборки из 1000 строк;
анализ статистики вычислений индекса sc_idx;
анализ индекса sc_idx, проверка структуры;

7 комментариев:


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

Зачем мы на самом деле анализируем таблицу/индекс/кластер?

Что происходит в фоновом режиме, когда выполняется вышеуказанное? Что на самом деле собирается и т.д.

Это для какой версии?

Я должен поблагодарить вас за усилия, которые вы приложили для создания этого
сайта. Я надеюсь увидеть такие же высококачественные сообщения в блоге от вас позже.
По правде говоря, ваши творческие писательские способности побудили меня создать свой собственный, личный
сайт сейчас ;)

хорошее содержание дало возможность посетить этот сайт oracle training in chennai

Получите сертификат Data Science Certification в Ченнаи, чтобы резко повысить свою карьеру с Infycle Technologies, лучшими учебными заведениями по программному обеспечению и трудоустройству в Ченнаи и его окрестностях. В дополнение к сертификации, Infycle также предлагает лучшее обучение для прохождения личностных тестов, подготовки к собеседованиям и пробных интервью для повышения оценок кандидата до профессионального уровня.

Вы ищете обучение по работе с большими данными в Ченнаи с возможностью трудоустройства? Тогда мы, Infycle Technologies, с вами, чтобы воплотить вашу мечту в реальность. Infycle Technologies — один из лучших учебных заведений по работе с большими данными в Ченнаи, который предлагает различные программы наряду с большими данными, такие как Oracle, Java, AWS, Hadoop и т. д., в полном практическом обучении с тренерами, которые являются специалистами в области поле. В дополнение к обучению для кандидатов будут организованы пробные собеседования, чтобы они могли пройти собеседование с лучшими знаниями. Из всего этого здесь будет дана 100% гарантия размещения. Чтобы услышать слова выше в реальном мире, позвоните по телефону 7502633633 в Infycle Technologies и получите бесплатную демоверсию, чтобы узнать больше. Курс № 1 по большим данным в Ченнаи | Infycle Technologies

Пройдите курс обучения Hadoop в Ченнаи, чтобы получить отличные возможности трудоустройства в Infycle Technologies, лучшем учебном заведении по работе с большими данными в Ченнаи. Infycle Technologies проводит самое надежное обучение Hadoop в Ченнаи с полным практическим обучением от профессиональных тренеров в этой области. Наряду с этим для кандидатов будут организованы собеседования при приеме на работу, чтобы они могли пройти собеседования, не пропуская их. Чтобы вывести свою карьеру на новый уровень, позвоните в Infycle Technologies по телефону 7502633633 и получите бесплатную демоверсию, чтобы узнать больше. Top Hadoop Training in Chennai | Infycle Technologies

Отличный товар от вас, я понял ваши вещи раньше, и вы просто фантастические. Мне на самом деле нравится то, что вы здесь получили, очень нравится то, что вы говорите, и то, как вы это говорите. Вы делаете это приятным, и вы все еще заботитесь о том, чтобы оставаться разумным. Я не могу дождаться, чтобы прочитать больше от вас. Это действительно замечательный сайт. КИПиА

Читайте также: