在Oracle中如果表上存在有LOB数据类型的字段,而有时候需要将这些LOB字段的索引移动到其他表空间,使用alter index index_name rebuild tablespace_name的方法是不行的,数据库会报错:ORA-02327: cannot create index on expression with datatype LOB。
移动LOB的索引就使用LOB的存储的语法来移动LOB的对象,具体的语法如下:
ALTER TABLE table_name MOVE TABLESPACE new_tbsp STORAGE(new_storage) LOB (lob_column) STORE AS lobsegment (TABLESPACE new_tbsp STORAGE (new_storage));
例如,表TEST含有LOB字段LOBTEST,存储在USERS表空间,要移到TEST表空间,则语法如下:
SQL>ALTER TABLE TEST move tablespace TEST LOB (LOBTEST) STORE AS (TABLESPACE TEST);
Table altered.
LOB的索引已经被移动到TEST表空间了。