1.单表转移表空间
场景:有表user存放在表空间oldspace下,需把表user移动到表空间newspace下
执行语句:
alter table user move tablespace newspace;
commit;
2.用户scott下的所有表都转移至表空间newspace下
select 'alter table'||table_name||'move tablespace newspace;commit;'
from user_tables where owner='scott'
FOR x IN (select u.table_name,u.compression,u.tablespace_name,u.owner from all_tables u where u.owner = 'scott' ) LOOP EXECUTE IMMEDIATE 'alter table '|| x.table_name ||' move tablespace newspace'; END LOOP;
但是表user被移动到表空间newspace后,表user上的索引是不是自动转移到表空间newspace
3.索引转移表空间,例如,user表上的索引idx_user
alter index idx_user rebuild tablespace newspace
4.用户scott下的所有索引都转移至表空间newspace下
select 'alter index'||index_name||'rebuild tablespace newspace;commit;'
from user_indexes where owner='scott'