Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Администрирование Oracle Database:
- Установка и настройка базы данных
- Обновление, применение патчей
- Оптимизация, настройка производительности
- Обучение, подготовка персонала, оптимизация
  • Страница:
  • 1

ТЕМА: Переиндексация всей базы

Переиндексация всей базы 07 июль 2011 09:25 #1286

  • margo491
  • margo491 аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 58
  • Спасибо получено: 1
Привет!
Подскажите как можно переиндексировать базу Оракл 9.2. Нашла команду:
ExpandedWrap disabled

ALTER INDEX EVENT_NO REBUILD;


но тогда получается что нужно знать имя всех индексов для всех существующих таблиц БД... Следовательно необхдимо выбрать эти все имена и вставить их в выше приведенный скрипт? Как-то не то... Есть ли более лучшие и красивые способы?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Переиндексация всей базы 07 июль 2011 09:29 #1287

  • Winner
  • Winner аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 32
  • Репутация: 1
  • Спасибо получено: 0
Хех... Читай что такое EXECUTE IMMEDIATE
Потом выполняй запрос SELECT 'ALTER INDEX ' || INDEX_NAME || ' REBUILD;' FROM All_Indexes
Смотрим, что мы получили
Пытаемся написать скриптик примерно такого содержания:
Begin
     for c in ( select index_name from All_Indexes)
     loop
      execute immediate 'alter index ' || c.index_name || ' REBUILD;';
     exception
      when OTHERS then
       NULL;
     end loop;
    end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Переиндексация всей базы 07 июль 2011 09:31 #1288

  • margo491
  • margo491 аватар Автор темы
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 58
  • Спасибо получено: 1
Вот спасибо)))) Переделала по свою... И мне нравится. ВОт что получилось:
for c in ( select index_name, table_name from All_Indexes)
 loop
   begin
     DBMS_OUTPUT.PUT_LINE('перестройка индекса: ' || c.index_name);
     execute immediate 'alter index ' || c.index_name || ' rebuild';
   exception
     when OTHERS then
     DBMS_OUTPUT.PUT_LINE('перестройка индекса: ' || c.index_name || ' для таблицы: ' || c.table_name || ' завершилась неудачей!');
   end;

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Переиндексация всей базы 16 июль 2011 16:24 #2166

  • Miha
  • Miha аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 25
  • Спасибо получено: 0
ALTER INDEX EVENT_NO REBUILD; тут хэш какой у тебя указан все ли так как надо настроено ?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Переиндексация всей базы 10 авг 2011 09:43 #3190

можно как ты с ALTER INDEX EVENT_NO REBUILD; но в настройка указать что бы все имена индексов указывались автоматически

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1