经常会遇到日志表或者历史数据疯涨的情况,发现的时候,大概率是表空间已经告警了,这时候就需要想办法清理表空间了。
清理表空间方法有好多,可以move,可以shrink,可以导出导入,也可以建临时表,当然还有在线重定义。具体怎么做,以及各种方法的优劣,很多博客的文章都说了,我就不做复制粘贴了。
重点想说一下实际情况应用处理方式,一般来说,如果能做shrink,当然是优选了,他的 优点就是,可以在线做,而且不需要额外的表空间。但是总有二般情况,比如下面这些情况
IOT mapping tables
Tables with rowid based materialized views
Tables with function-based indexes
SECUREFILE LOBs
Compressed tables
shrink表示爱莫能助,这时候就要用别的方式了
如果条件允许一般选择导入导出,因为不需要再扩额外的表空间了,本来表空间就已经扩很大了,为了清垃圾数据,又得扩一倍的数量,从心理上我是拒绝的。
当然表能truncate就另说了,能truncate我上面的都是废话,直接清就行了
附一篇MOS文章,作为参考补充吧
How to Shrink a Securefile LOB Using Online Redefinition (DBMS_REDEFINITION)? (文档 ID 1394613.1)