воскресенье, 7 декабря 2014 г.

Перемещение таблиц в новое табличное пространство


Итак, у нас сложилась не хорошая ситуация. В одном табличном пространстве "свалены" таблицы и их индексы от разных схем. Принимаем решение - для схемы SCHEMA10 создаем отдельное табличное пространство с именем TABLESPACE10. Для реальной схемы таблиц и индексов много. Тогда пропускаем в вашем любимом навигаторе, например SQLDeveloper вот этот оператор. И получаем для каждой таблицы и индекса строку с командами alter table move или alter index rebuild. Через copy/paste переносим их и выполняем. Готово.
Иногда полезно указать конкретное табличное пространство, из которого переносим таблицы.

select txt from (
select decode( segment_type, 'TABLE', segment_name, table_name ) order_col1,
       decode( segment_type, 'TABLE', 1, 2 ) order_col2,
      'alter '||lower(segment_type)||' '||lower(owner)||'.'||lower(segment_name)||
       decode(segment_type,'TABLE',' move ',' rebuild ')||
      ' tablespace TABLESPACE10;' txt
  from dba_segments d,
       (select table_name, index_name from dba_indexes) i
 where d.segment_type in ('TABLE', 'INDEX')
   and d.owner = 'SCHEMA10'
   and d.tablespace_name = 'TABLESPACE_OLD'
   and d.segment_name = i.index_name (+)
 order by 1, 2 )

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

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

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога