begin
for tbl in (select t.table_name
from all_tables t
where t.owner = :usr
and t.tablespace_name = :oldtbs)
loop
dbms_output.put_line('ALTER TABLE ' || :usr || '.' || tbl.table_name ||
' MOVE TABLESPACE ' || :newtbs || ';');
-- индексы
for indx in (select i.owner || '.' || i.index_name as nm
from all_indexes i
where i.tablespace_name = :oldtbs
and i.table_owner = :usr
and i.table_name = tbl.table_name)
loop
dbms_output.put_line('ALTER INDEX ' || indx.nm ||
' REBUILD TABLESPACE ' || :newtbs || ';');
end loop;
end loop;
end;
где переменные означают следующее:
- :oldtbs - старое табличное пространство
- :usr - пользователь чьи таблицы вы собираетесь переносить
- :newtbs - новое табличное пространство
P.S. никогда не создавайте пользователя в табличном пространстве SYSTEM.