`
giga_Zhang
  • 浏览: 153098 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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

阅读更多

如果你将创建表和索引创建在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 rebuildalter index rebuild online的区别
alter index rebuild online
实质上是扫描表而不是扫描现有的索引块来实现索引的重建alter index rebuild 只扫描现有的索引块来实现索引的重建。

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

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

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

分享到:
评论
1 楼 wanlt_software 2011-07-07  
  厉害,很有帮助。

相关推荐

Global site tag (gtag.js) - Google Analytics