记录日常工作关于系统运维,虚拟化云计算,数据库,网络安全等各方面问题。

Oracle转移表和索引所在的表空间


如果你将创建表和索引创建在USERS表空间下了,(USERS表空间中是合理的),那么在以后的维护中将会出现很多麻烦。

 

如果是系统无法删除重建,所以必须考虑在不影响使用的情况下做该项工作。

 

 

  1、表空间移动命令:

 

  alter table table_name move tablespacetablespace_name;

 

  得到表空间移动语句:

   select alter table || table_name || move tablespacetablespace_name;

    fromuser_tables

   where tablespace_name = USERS

 

  得到该连接用户下所有创建在USERS表空间下的表名。

 

  2、执行所得到的语句,至此将表转移到新表空间中。

3、重建索引

 

命令

alter index index_name rebuildtablespace tablespace_name;

 

  得到重建索引语句

 

   SELECT alter index ||index_name|| rebuild tablespacetablespace_name; 

    FROMUSER_INDEXES T where t.table_owner=’’USER_NAME’’ 

    andt.tablespace_name=USERS

 

  4、执行得到的语句,将索引转移到新表空间。

 

 

alterindex rebuildalter index rebuildonline的区别
alter indexrebuild online
实质上是扫描表而不是扫描现有的索引块来实现索引的重建alter indexrebuild 只扫描现有的索引块来实现索引的重建。

online时可以在该索引的基表上执行DML,在在对基表操作的同时可以REBUILD INDEX,但是不能执行DDL语句,所以他们的锁机制是不样的。

创建索引时通常会对该表设置一个表级共享(DML),如果设置ONLINE,

如果是非ONLINE方式,通常会对该表设置一个表级共享(DML)锁,那么就对DML语句冲突,如果设置ONLINE ,(会使用临时日志IOT表来记录中间改变的数据),但要使用两倍于传统方法的空间.表会变成行级共享锁,在创建索引或者ALTER完成后,对临时日志表与基表进行MERGE



转载请标明出处【Oracle转移表和索引所在的表空间】。

《www.micoder.cc》 虚拟化云计算,系统运维,安全技术服务.

网站已经关闭评论