Шатёркин
Дата: 27.11.2009 14:48:42
Всем привет.
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE 10.2.0.4.0 Production
TNS for Linux: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production
Столкнулся со следующей бедой:
Есть пустая таблица.
Выполняю тестовый запрос.
Он имеет план №1.
После массовой вставки данных в таблицы я собираю статистику путём "DBMS_STATS.GATHER_SCHEMA_STATS"
Но запрос продолжает выполняться с планом №1 и зависает (>30 минут).
Заставить Оракл придумать новый план (№2) получилось только 2-мя способами:
способ 1 - "alter session set sql_trace = true;", но если сделать "alter session set sql_trace = false;" Оракл попять использует план №1. Зараза.
способ 2 - "ALTER TABLE ... SHRINK SPACE;" эта штука вытесняет план №1 уже навсегда и запрос отрабатывает за 2 сек.
Я был уверен, что любые операции с таблицей типа добавить колонку, собрать статистику, перестроить индекс и т.п. выкинут из кеша все планы, связанные с этой таблицей :(
Внимание вопрос - то что сбор статистики не чистит кеш запросов - это баг или фича?
Заранее спасибо.
Шатёркин
Дата: 27.11.2009 15:19:51
tru55,
Спасибо, попробую. Но это для таблицы :( Для всей схемы такого параметра нет.
Сенкс ещё раз. Проверяю.