如果你将创建表和索引创建在USERS表空间下了,(注:在USERS表空间中是合理的),那么在以后的维护中将会出现很多麻烦。
如果是系统无法删除重建,所以必须考虑在不影响使用的情况下做该项工作。
1、表空间移动命令:
alter table table_name move tablespace tablespace_name;
得到表空间移动语句:
select ’alter table ’ || table_name || ’ move tablespace tablespace_name;’
from user_tables
where tablespace_name = ’USERS’
得到该连接用户下所有创建在USERS表空间下的表名。
2、执行所得到的语句,至此将表转移到新表空间中。
3、重建索引
命令:
alter index index_name rebuild tablespace tablespace_name;
得到重建索引语句
SELECT ’alter index ’||index_name||’ rebuild tablespace tablespace_name;’
FROM USER_INDEXES T where t.table_owner=’’USER_NAME’’
and t.tablespace_name=’USERS’
4、执行得到的语句,将索引转移到新表空间。
alter index rebuild与alter index rebuild online的区别
alter index rebuild online实质上是扫描表而不是扫描现有的索引块来实现索引的重建alter index rebuild 只扫描现有的索引块来实现索引的重建。
online时可以在该索引的基表上执行DML,在在对基表操作的同时可以REBUILD INDEX,但是不能执行DDL语句,所以他们的锁机制是不样的。
创建索引时通常会对该表设置一个表级共享(DML)锁,如果设置ONLINE ,
如果是非ONLINE方式,通常会对该表设置一个表级共享(DML)锁,那么就对DML语句冲突,如果设置ONLINE ,(会使用临时日志IOT表来记录中间改变的数据),但要使用两倍于传统方法的空间.表会变成行级共享锁,在创建索引或者ALTER完成后,对临时日志表与基表进行MERGE