понедельник, 3 сентября 2018 г.

Oracle Warehousing: создание разделов в таблице (table partitions)

Задача: необходимо создать разделы (partitions) в существующей таблице, заполненной данными объемом 14 ГБ, строк - 67 миллионов, в ней есть 5 индексов. Разделов должно получится 150. В дальнейшем, в этой таблице разделы будут создаваться с помощью хранимых процедур.

Решение.
Стоит упомянуть, что весь код для решения задачи нельзя размещать в одном файле скриптов. Необходимо распределять код по разным файлам. Любой файл скриптов можно запустить более одного раза с одним и тем же успешным результатом (кроме файла с DDL командами, обычно этот файл называется alter.sql). Файлы скриптов будут запускаться в том же порядке, в котором они описаны далее в этой статье.
  1. Файл create.sql : здесь мы создаем одноименную таблицу, но с каким-либо суффиксом, например, _new. Обязательно с опцией ENABLE ROW MOVEMENT.
  2. Файл grant.sql : здесь мы даем права на новую таблицу ролям или другим пользователям.
  3. Файл alter.sql : здесь мы создаем пустые разделы в новой пустой таблице, переименовываем constraints и indexes в существующей таблице. Все indexes и constraints в коде не приводятся ради экономии места.
  4. Файл long_operation.sql : здесь мы с помощью INSERT вставляем строки из существующей таблицы в созданную нами таблицу, создаем в новой таблице indexes и constraints (indexes создаем в параллели), собираем статистику по новой таблице, переименовываем существующую таблицу, добавляя суффикс _old, переименовываем новую таблицу, убирая суффикс _new.





Комментариев нет:

Отправить комментарий