2015-01-31

Перенос партицированных объектов в другой TS

Таблицы
Лемма 1: партицированную таблицу нельзя MOVE в другой TABLESPACE, иначе ORA-14511
Лемма 1.1: для партицированной таблицы делать alter table part_test modify default attributes tablespace new_part;  

Индексы
Лемма 2: партицированный индекс нельзя REBUILD, иначе ORA-14086
Лемма 2.1: Для партицированного индекса делать ALTER INDEX idx1 MODIFY DEFAULT ATTRIBUTES TABLESPACE new_part;

LOB
Лемма 3. Для LOB all_lobs.tablespace_name судя по всему указывает на DEFAULT_TABLESPACE и меняется вместе с таблицей
Лемма 3.1 Создание LOB через ALTER TABLE ADD доабвляет LOB в тот же TS, в котором находится партиция. Т.е. если партиции раскиданы по разным TS, то и LOB будет раскидан по TS
Лемма 3.2 Перенос партиции не переносит LOB. Лобы переносят отдельными командами ALTER TABLE ... MOVE LOB(...) STORE AS (TABLESPACE ...);
Лемма 3.3 Перенос LOB для партиционированной таблицы напрямую заканчивается ошибкой ORA-14511. LOB переносить в цикле поштучно for lobpart_rec in (SELECT * FROM All_Lob_Partitions WHERE table_name = 'PART_TEST' AND lob_name = 'SYS_LOB0000094688C00003$$') ...;