table/index/LOBINDEX遷移表空間

strivechao發表於2021-05-08

1、alter table tablename move tablespace tbs_name
2、select 'alter index '||index_name||' rebuild tablespace $lts;' from user_indexes;
3、當我們建立一個含有lob欄位的表時,oracle會自動為lob欄位建立兩個單獨的segment,一個用來存放資料(LOBSEGMENT),另一個用來存放索引(LOBINDEX),並且它們都會儲存在對應表指定的表空間中。但是當我們用alter table tablename move tablespace tbs_name 來對錶做空間遷移時,只能移動非lob欄位以外的資料。而如果我們要同時移動lob相關欄位的資料,我們就必需用如下的含有特殊引數據的文句來完成,它就是: alter table tablename move lob(columeName) store as (tablespace newTableSpaceName);
這樣,就將這兩個物件從老的表空間移至新的表空間 。

4、LOB索引的特殊性使得REBUILD是不可行的。
要移動LOB索引到其他表空間,需要將相應的LOB物件移動到其他表空間。
CREATE TABLE TEST(ID INT,NAME VARCHAR2(20),CONTENTS CLOB);
ALTER INDEX "SYS_IL0000052966C00003$$" REBUILD;

第 1 行出現錯誤:
ORA-02327: 無法以資料型別 LOB 的表示式建立索引
ORA-14133: ALTER TABLE MOVE cannot be combined with other operations

desc TEST
ALTER TABLE TEST MOVE LOB(CONTENTS) STORE AS (TABLESPACE TS1);




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25469263/viewspace-2771278/,如需轉載,請註明出處,否則將追究法律責任。

相關文章