服务器上有一Application,保存有30G的CLOB数据。
虽然每周定时将一些CLOB退避到OS,还是发生了Tablespace不够用的现象(使用率约100%)。
经过反复调查发现,CLOB使用的LOBSegment在删除CLOB信息后,并不自动向Tablespace返回空白空间,这就造成其他数据需要空间时出现错误。
所以需要通过SQL整理,使其返回空白的空间。
从10.2开始,Oracle提供了压缩LOBSegment的功能(Shrink Space)。可以执行以下语句。
ALTER TABLE mi.FILE_ITEM_DATA MODIFY LOB (ITEM_DATA)(SHRINK SPACE);
中途出现了ArchiveLog领域不够用等时间(这个整理发生Redolog的)后,经过6个多小时的处理,终于结束了。
可是,很不幸,在进行例行的Expdp(export)时,出现错误。
ORA-02354: error in exporting/importing data
ORA-01555: snapshot too old: rollback segment number with name " " too small
ORA-22924: snapshot too old
经过support.oracle的查证,发现这是10.2.0.3.0的一个Bug。(Bug. 5636728, 参考Oracle文件,编号为833635.1)