有事我们在创建数据库时未明确指定用户的表空间,导致后期创建的表都自动创建在了users表空间内,
这时我们想要转移用户所有表到指定表空间可以执行以下步骤:
1.先查询需要转移的表空间
查看所有表空间
select * from dba_tablespaces;
2.目标表空间存在,移动所有表到目标表空间
单个执行语句:
ALTER TABLE 表名 MOVE TABLESPACE 表空间名
获取批量执行语句:
--所有表移动到指定表空间语句
SELECT 'ALTER TABLE 用户名.'||table_name||' MOVE TABLESPACE 表空间名;' FROM user_tables;
获得的查询语句直接执行就行
3.表转移完成后,转移索引(重建即可),具体语句如下
单个索引重建:
ALTER INDEX 索引名 REBUILD TABLESPACE 表空间名;
获取批量重建索引语句:
--所有索引重建在指定表空间
SELECT 'ALTER INDEX '||index_name||' REBUILD TABLESPACE 表空间名;' FROM DBA_INDEXES WHERE OWNER=用户名