Периодически мне нужно отделить раздел от одной таблицы и прикрепить к другой таблице в другом табличном пространстве.Как избежать глобального индекса Oracle, восстановленного при перемещении раздела
Псевдо потока:
петли каждой таблицы и с истекшим сроком раздела:
1.1 Создание нового целевого раздела в целевой таблице разделов
1.2 Переместить целевое табличное пространство
1.3 Обмен исходная перегородка в временную таблицу
1.4 Обмен временной таблица с целевым разделом
1,5 Капля источник раздел
Rebuild глобальных индексами в исходной таблице
- Rebuild глобальных индексов в целевой таблице
проблема, восстановление индекс делает индекс временно недоступный, что неприемлемо для поддержки приложения реального времени в моем случае.
Перестройка индекса - дорогостоящая операция, одним из способов избежать этого является обеспечение поддержки асинхронного глобального индекса, что делает глобальный индекс сиротой, но все еще пригодным для использования без какой-либо перестройки. Тем не менее, сиротский индекс может быть включен только в операциях Partition Drop и Partition Truncate. В приведенном выше потоке глобальные индексы отображаются UNUSABLE в разделах Move Move и Partition Exchange. Partition Drop в последнем утверждении больше не может содержать сиротский индекс.
Это неудобно, потому что в конце концов раздел будет удален, но все же я обязан перестроить глобальный индекс. Можете ли вы в любом случае предложить избежать перестройки индекса?
Примечание:
- Я мог бы использовать UPDATE GLOBAL пункт INDEXES в Partition Move и Partition биржи статей, но это дорого, и было бы называют несколько раз в цикле.
- Я могу изменить глобальные индексы на локальные индексы, но это будет иметь большее влияние производительности на наше приложение. Кроме того, уникальный индекс не будет работать (ключ раздела не задействован).
может изменить шаги, описанные Вы? Можно ли создать временную * копию * раздела? –
Да, шаги могут быть изменены, основная цель - переместить раздел (данные, привязки, индекс) в другую таблицу в другом табличном пространстве. Я до сих пор не нашел эффективного способа копирования раздела. Все вышеперечисленные шаги в настоящее время выполняются за один сеанс с использованием PL/SQL. Все предложения приветствуются. – StevieL
Боюсь, нет способа избежать этого. Кроме того, что новая функция 12c. Просто, когда вы используете глобальные индексы, вы теряете некоторые преимущества разделения. Кроме того, внутренний рекурсивный запрос, выполняемый разбиением на разделы, имеет в нем подсказку 'parallel (1)'. Таким образом, вы даже не можете сделать это быстрее. – ibre5041