Можно.Однако, если вы непрофессионал, когда речь идет о темах, связанных с базами данных, я бы очень обеспокоен тем, что вы делаете что-то, что создает для вас всевозможные проблемы.Поэтому я хотел бы спросить, какую проблему вы пытаетесь решить.
- ANALYZE, как правило, устарел для ряда выпусков в пользу пакета DBMS_STATS.
- Oracle 10g уже имеетпо умолчанию фоновое задание, которое регулярно собирает статистику по объектам, включая индексы.Если это было отключено, у ваших администраторов почти наверняка была бы своя собственная работа по сбору статистики, которой вы почти наверняка не захотите мешать.
- Сбор статистики может изменить планы запросов, которые могут вызвать всевиды производительности, особенно если статистика индекса не соответствует статистике таблицы.
Вы можете сделать что-то вроде
DECLARE
p_owner VARCHAR2(30) := 'BOB'; -- Replace BOB with the user name you are interested in
BEGIN
FOR idx IN (SELECT * FROM dba_indexes WHERE owner = p_owner)
LOOP
EXECUTE IMMEDIATE 'ANALYZE INDEX ' || p_owner || '.' || idx.index_name ||
' COMPUTE STATISTICS';
END LOOP;
END;
, но я бы очень хотел понять, где вы 'придет раньше, чем я предположу, что вы действительно запустите это.