Оставьте пустой раздел. Индексы помечены как недействительные?
Я хочу отбросить пустой раздел, но мне известно о том, что oracle устанавливает все индексы в непригодные для использования всякий раз, когда вы выполняете оператор DDL раздела, такой как DROP, поэтому я должен добавить UPDATE GLOBAL INDEXES
к заявлению, хотя это выглядит ненужным.
Затем я придумал этот пост, в котором говорится, что он не будет помечен как непригодный для использования, поэтому я решил проверить его. Дело в том, что я тестировал его в двух версиях Oracle, и он работал по-разному!
Имея два экземпляра:
- DBA (
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
) - DBB (
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
)
В DBa он помечал их как недействительные, а в DBb, который содержал те же данные, что и другие базы данных (клонированные с exp/imp), он удалялся, не помечая их как непригодные.
Можно ли явно указать Oracle, что вы хотите сохранить работоспособность индексов, потому что в разделе нет данных (без перестройки индексов)?
3 ответа
До сих пор я не могу выяснить, почему он был помечен как недействительный в одном месте, но не в другом, но есть что сказать, если у кого-то есть такая же проблема.
Запустите его всегда с UPDATE GLOBAL INDEXES
поскольку, если раздел пуст, выполнение удаления не займет много времени, и это гарантирует, что индексы не будут помечены как недействительные. Поэтому нет никаких оснований надеяться, что оракул их не пометит.
Да.. использовать локальные индексы при создании индексов по секционированной таблице
Может быть, вы можете попробовать ниже, это сохраняет правильность индекса во время падения. ALTER TABLE t1 DROP PARTITION p5 ОБНОВЛЕНИЕ ГЛОБАЛЬНЫХ ИНДЕКСОВ;