ORA-10631: SHRINK clause should not be specified for this object


sys@GHSJDB> alter table "GHSJ_JCSJ"."T_PWZY_FHKG" shrink space;
alter table "GHSJ_JCSJ"."T_PWZY_FHKG" shrink space
*
ERROR at line 1:
ORA-10631: SHRINK clause should not be specified for this object

 

查了一下官方文檔,發現shrink這個操作有一些限制

Shrink operations can be performed only on segments in locally managed tablespaces
with automatic segment space management (ASSM). Within an ASSM tablespace, all
segment types are eligible for online segment shrink except these:
■ IOT mapping tables
■ Tables with rowid based materialized views
■ Tables with function-based indexes --看來函數索引也不是那麼容易用的
■ SECUREFILE LOBs
■ Compressed tables

 

老外說的太彆扭,個人翻譯如下:
Shrink 操作需滿足表空間是本地管理和自動段空間管理(10g、11g默認就是這樣),以下情況不能用shrink:
IOT索引組織表
用rowid創建的物化視圖的基表
帶有函數索引的表
SECUREFILE 大對象
壓縮表

--刪除函數索引

drop index ghsj_jcsj.T_PWZY_FHKG_IDX$$_6B680073;

 

--重新執行

sys@GHSJDB> alter table "GHSJ_JCSJ"."T_PWZY_FHKG" shrink space;

Table altered.

--創建索引

create index ghsj_jcsj.T_PWZY_FHKG_IDX$$_6B680073 on ghsj_jcsj.T_PWZY_FHKG(TO_CHAR(TYNF,'yyyy'));

 

本文乃原創文章,請勿轉載。如須轉載請詳細標明轉載出處

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章