移動LOB型別的索引

yeahokay發表於2008-05-22
如果表上存在有LOB資料型別的欄位,而有時候我們需要將這些表和索引移動到別的表空間去,但是使用正常的alter index index_name rebuild tablespace_name的方法是行不通的,資料庫會報錯:ORA-02327: cannot create index on expression with datatype LOB。

在這種情況下要移動LOB索引,就必須要使用特定的方法來移動LOB索引。讓我們舉例來具體的看看:
[@more@]

先建立一個帶有LOB欄位的表test,預設的表空間是system:

SQL> CREATE TABLE test
2 (
3 NAME VARCHAR2(100 BYTE) NOT NULL,
4 OWNERNAME VARCHAR2(100 BYTE) NOT NULL,
5 STATUSPOLLCOMMAND VARCHAR2(100 BYTE),
6 DATAPOLLIOR BLOB
7 )
8 TABLESPACE system
9 LOGGING
10 LOB (DATAPOLLIOR) STORE AS
11 ( TABLESPACE system)12 NOCACHE
13 NOPARALLEL;Table created.
SQL
> select tablespace_name from user_tables where table_name='TEST';
TABLESPACE_NAME
------------------------------SYSTEM
SQL
>select index_name,tablespace_name from user_indexes where table_name='TEST';
INDEX_NAME TABLESPACE_NAME
------------------------------ ------------------------------
SYS_IL0000006955C00004$$ SYSTEM

然後我們想移動test表到test表空間中去,如果只是移動帶有LOB欄位的表,那是沒有問題的,因為表和LOB欄位的儲存是在兩個不同的段上,移動的只是表的儲存,LOB欄位的儲存還是沒有變。

SQL> alter table test move tablespace test;Table altered.
SQL
> select tablespace_name from user_tables where table_name='TEST';
TABLESPACE_NAME
------------------------------TEST
SQL
> select index_name,tablespace_name from user_indexes where table_name='TEST';
INDEX_NAME TABLESPACE_NAME
------------------------------ ------------------------------SYS_IL0000006955C00004$$ SYSTEM

但是如果想要把LOB的索引也移動到test表空間去,我們使用通常的辦法來move,就會產生ORA-02327: cannot create index on expression with datatype LOB:

SQL> alter index SYS_IL0000006955C00004$$ rebuild tablespace test;alter index SYS_IL0000006955C00004$$ rebuild tablespace test
ERROR at line
1:
ORA
-02327: cannot create index on expression with datatype LOB

這種情況下,我們要移動LOB的索引就必須使用特定的語法來移動LOB的物件,具體的語法如下:

SQL> ALTER TABLE test MOVE
2 TABLESPACE test
3 LOB (DATAPOLLIOR) STORE AS
4 (TABLESPACE test);Table altered.
SQL
>select index_name,tablespace_name from user_indexes where table_name='TEST';
INDEX_NAME TABLESPACE_NAME
------------------------------ ------------------------------SYS_IL0000006955C00004$$ TEST

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

相關文章