Итак, у нас сложилась не хорошая ситуация. В одном табличном пространстве "свалены" таблицы и их индексы от разных схем. Принимаем решение - для схемы 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 )
Комментариев нет:
Отправить комментарий