您的位置:首页 > 其它

如何移动LOB索引到其他表空间

2013-12-17 17:16 393 查看
以下转自:http://blog.chinaunix.net/uid-22948773-id-3451103.html 作者:TOMSYAN

今天有同事问到如何移动一个LOB索引到其他表空间。

LOB索引的特殊性使得REBUILD是不可行的。

要移动LOB索引到其他表空间,需要将相应的LOB对象移动到其他表空间。

以下括号中的内容非原文内容,为本人综合其它网络上的相关介绍进行的补充

如果表有Lob段,那么正常的Alter不能移动Lob段到别的表空间,而仅仅是移动了表段,可以采用如下的方法移动Lob段
  alter table tablename move
  lob(lobsegname) store as (tablespace newts);

例如:

SQL> CREATE TABLE TEST(ID INT,NAME VARCHAR2(20),CONTENTS CLOB);

表已创建。

SQL> ALTER INDEX "SYS_IL0000052966C00003$$" REBUILD;
ALTER INDEX "SYS_IL0000052966C00003$$" REBUILD
*
第 1 行出现错误:
ORA-02327: 无法以数据类型 LOB 的表达式创建索引

SQL> COL TABLESPACE_NAME FORMAT A20
SQL> COL INDEX_NAME FORMAT A30
SQL> SELECT INDEX_NAME,TABLESPACE_NAME FROM USER_INDEXES WHERE INDEX_TYPE='LOB';

INDEX_NAME TABLESPACE_NAME
------------------------------ --------------------
SYS_IL0000052966C00003$$ USERS

SQL> ALTER TABLE TEST MOVE LOB(CONTENTS) STORE AS (TABLESPACE SYSTEM);

表已更改。

SQL> SELECT INDEX_NAME,TABLESPACE_NAME FROM USER_INDEXES WHERE INDEX_TYPE='LOB';

INDEX_NAME TABLESPACE_NAME
------------------------------ --------------------
SYS_IL0000052966C00003$$ SYSTEM
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: