ORACLE MOVE表空间

原创 2013年12月05日 17:39:47

move一个表到另外一个表空间时,索引不会跟着一起move,而且会失效(LOB类型例外)。做表空间转移之前,被转移表的用户必须在目的表空间上有使用表空间的权限,否则会报错:ORA-01950: no privileges on tablespace...

表move分为

1.普通表move

2.分区表move

3.LONG

4.LOB大字段类型move

5.索引的move通过rebuild来实现


首先检查表空间有哪些表

select   table_name   from user_tables where tablespace_name = 'LOADTBS' order by table_Name;


select   table_name ,PARTITION_NAME  from useR_TAB_PARTITIONS where tablespace_name = 'LOADTBS' order by table_Name;


一、move普通表、索引

1、基本语法:

a、alter table table_name t move tablespace xxx;

b、alter index index_name rebuild tablespace xxx;

move过的普通表,在不用到失效的索引的操作语句中,语句执行正常,但如果操作的语句用到了索引(主键当做唯一索引),则此时报告用到的索引失效,语句执行失败,其他如外键,非空约束,缺省值等不会失效。

2、重新创建主键或索引基本语法为:

a、alter index index_name rebuild;

b、alter index pk_name rebuild;

3、move索引用rebuild语法:

a、alter index index_name rebuild tablespace tbs_name;

b、alter index pk_name rebuild tablespace tbs_name;

二、move分区表及索引

和普通表一样,分区表索引会失效,区别的仅仅是语法而已。

1、分区基本语法

注:如果是单级分区,则使用关键字PARTITION,如果是多级分区,则使用SUBPARTITION替代PARTITION。

如果分区或分区索引比较大,可以使用并行move或rebuild,PARALLEL (DEGREE 2);

如:

ALTER TABLE PART_ALARM move SUBPARTITION p_01 TABLESPACE users PARALLEL (DEGREE 2);

--全局索引

ALTER INDEX GX1_ PART_ALARM REBUILD tablespace users PARALLEL (DEGREE 2);

--分区索引

ALTER INDEX LX1_ PART_ALARM REBUILD SUBPARTITION p_01 TABLESPACE users1 PARALLEL (DEGREE 2);

ALTER INDEX LX1_ PART_ALARM REBUILD SUBPARTITION p_02 TABLESPACE users2 PARALLEL (DEGREE 2);

………………

ALTER INDEX LX1_ PART_ALARM REBUILD SUBPARTITION p_0n TABLESPACE usersn PARALLEL (DEGREE 2);

2、移动表的某个分区

ALTER TABLE tab_name move PARTITION partition_name TABLESPACE tbs_name;

3、重建全局索引

ALTER INDEX global_index REBUILD;

ALTER INDEX global_index REBUILD tablespace tbs_name;

4、重建局部索引

ALTER TABLE tab_name MODIFY PARTITION partition_name REBUILD UNUSABLE LOCAL INDEXES;

ALTER INDEX local_index_name REBUILD PARTITION partition_name TABLESPACE tbs_name;

 

提示:

USER_PART_TABLES

USER_IND_PARTITIONS

USER_IND_SUBPARTITIONS

USER_LOB_PARTITIONS

USER_LOB_SUBPARTITIONS

USER_PART_INDEXES

USER_PART_LOBS

user_segments

版权声明:本文为博主原创文章,未经博主允许不得转载。

Oracle Move命令总结

Oracle Move命令总结   从8i开始,oracle开始提供Move的命令。我们通常使用这个命令,将一个table segment从一个tablespace移动到另一个tablespace。...

Oracle Move命令总结

Oracle Move命令总结

oracle move表释放空间

有好多时候,表经过大量的DML操作后,高水线也会升高,在delete后高水位线还是没下来,也就是说,数据是删除了,但空间并没有释放,这时候我们可 以用alter table move的方法使空间释放,...

oracle Move空间释放

有关执行计划,空间释放的分析       最近负责起了DBA的部分工作,于是有一天在对表空间的清理中发现了一张表,这个表有27G那么大,是一个分区表,按天分区。我查看了过程,每天删除35天以前的...

oracle数据库创建表空间和用户

  • 2017年11月07日 22:05
  • 2KB
  • 下载

Oracle11g 创建表空间、创建用户、授予权限、锁定、解锁以及删除用户等

转载:http://blog.csdn.net/cai7095576/article/details/18898717 Oracle创建表空间、创建用户、授予权限、锁定、解锁以及删除用户等 --创建...

Oracle 表空间建立方法

  • 2014年12月05日 22:36
  • 2KB
  • 下载

oracle增加表空间的防范

  • 2013年09月10日 10:13
  • 704KB
  • 下载

oracle新建表空间和用户

介绍oralce新建表空间、创建用户、用户赋权等的方法和操作步骤。
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ORACLE MOVE表空间
举报原因:
原因补充:

(最多只允许输入30个字)