有事我们在创建数据库时未明确指定用户的表空间,导致后期创建的表都自动创建在了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=用户名
该博客介绍了当未在创建数据库时指定用户表空间时,如何后期将用户的所有表和索引转移至目标表空间。首先,通过查询`dba_tablespaces`来查看所有表空间,然后使用`ALTER TABLE`语句逐个或批量移动表,最后重建索引以确保它们位于新的表空间中。
2309

被折叠的 条评论
为什么被折叠?



