Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Копирование данных в секционную таблицу / 10 сообщений из 10, страница 1 из 1
24.05.2019, 16:33
    #39817894
RichardIV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
У меня в БД хранятся данные в главной таблице за 15 лет.
С целью оптимизации и т.п. создал отдельное табличное пространство, в нем разместил новую таблицу с партициями за каждый из годом, данные в этой таблице хранятся в сжатом виде. Индексы построены локальные.
Все успешно перекопировал, индексы создал.

Теперь встал вопрос о до-копировании данных за прошедший год в неё.
За 2018 год секция пока пустая. Я правильно понимаю, что надо сначала отключить локальные индексы в данной секции, скопировать данные и перестроить локальные индексы?
...
Рейтинг: 0 / 0
26.05.2019, 12:58
    #39818348
RichardIV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
Или индексы не отключать при копировании? Как правильно?
...
Рейтинг: 0 / 0
27.05.2019, 15:56
    #39818856
kernA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
RichardIV,

достаточно пересоздать индексы, в статусе status='UNUSABLE', для своих партиций (alter index ... rebuild partition).

Посмотреть статус и партицию индекса можно в представлении user_ind_partitions.
...
Рейтинг: 0 / 0
27.05.2019, 16:24
    #39818871
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
RichardIVИли индексы не отключать при копировании? Как правильно?
Однозначного ответа нет.
Зависит, как минимум, от объема загрузки и наличия технологического окна.
...
Рейтинг: 0 / 0
27.05.2019, 16:30
    #39818875
RichardIV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
Объем данных планируется ~ 200 млн строк.
Пока планирую делать так:
1) ALTER TABLE HISSTORY MODIFY PARTITION AGE2018 UNUSABLE LOCAL INDEXES;
2) ALTER SESSION SET skip_unusable_indexes = TRUE;
3) insert /*APPEND*/ into hisstory
4) ALTER TABLE HISSTORY MODIFY PARTITION AGE2018 REBUILD UNUSABLE LOCAL INDEXES;

Как то так. )
...
Рейтинг: 0 / 0
27.05.2019, 16:39
    #39818881
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
RichardIVОбъем данных планируется ~ 200 млн строк.
Да как-то не особо много по нынешним временам...
Такой объем без особых проблем должен влезать и без отключения индексов, что позволит не вводить технологическое окно и, таким образом, повысить доступность системы.
Если есть непременное желание влепить все 200 лямов одной транзакцией, то обратите внимание на достаточность доступного объема TEMP (требуется для index maitenance).
Если есть возможность разделить загрузку на пакеты по 10-100 тыс. записей, то это облегчит жизнь.
Рассмотрите вариант загрузки direct или direct parallel
...
Рейтинг: 0 / 0
27.05.2019, 16:45
    #39818890
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
andrey_anonymousRichardIVОбъем данных планируется ~ 200 млн строк.
Да как-то не особо много по нынешним временам...
... в зависимости от имеющейся политики резервного копирования, наличия standby и какой-либо интеграции можно дополнительно рассмотреть проведение загрузки в nologging с немедленным созданием резервной копии по окончании загрузки.
...
Рейтинг: 0 / 0
27.05.2019, 16:59
    #39818902
RichardIV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
andrey_anonymous,
Загрузку планирую делать по месяцам, так как надо еще и дубли удалить.
...
Рейтинг: 0 / 0
27.05.2019, 17:44
    #39818917
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
RichardIVandrey_anonymous,
Загрузку планирую делать по месяцам, так как надо еще и дубли удалить.
Я исходил из предположения, что 200 лямов - это один раздел.
Если означенные числа - общий объем, то вообще не берите в голову, грузите в пакетном режиме и ни о чем не беспокойтесь.
Дубли - отдельный вопрос.
Если их мало, то проще удалить прямо на месте.
Если их доля значительна - то имеет смысл грузить через промежуточную стейджинговую таблицу.

Если предполагаются дубли по уникальным индексам, то для сценария прямой загрузки в целевую таблицу можно сделать неуникальные индексы, а после зачистки включить по этим индексам uk/pk constraints.
...
Рейтинг: 0 / 0
28.05.2019, 07:31
    #39819074
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Копирование данных в секционную таблицу
RichardIV HISSTORY О ком такой графоманский рассказ?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Копирование данных в секционную таблицу / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]