有时候,数据库中的索引会调整,移动到另外的表空间中。一般在项目开发时,没有控制好数据库的管理,开发人员在创建表和索引的时候,一般没有指定表空间,Oracle数据库则默认安装在users的表空间中,这就导致users表空间越来越大的缘故。下面表users表空间中的索引移动动相应的表空间中。
--1查询users表空间中有多少索引
select * from dba_indexes where tablespace_name='USERS';
--2 比如:把索引IK_CDFPT_STTC移动到PUB_NORM_SPACE表空间
alter index IK_CDFPT_STTC rebuild tablespace PUB_NORM_SPACE;
--3查看是否移动到相应的表空间
select * from dba_indexes where index_name='IK_CDFPT_STTC'
如果批量的移动索引:
--4用select查询处理sql语句,把COMM表开头的索引移动到PUB_NORM_SPACE表空间中
select 'alter index ' || index_name ||' rebuild tablespace PUB_NORM_SPACE;' from dba_indexes where tablespace_name='USERS' and table_name like 'COMM_%';
--5执行上面4步骤select出来的脚本