2017-07-25 398 views
0

在包含BLOB并且直至今天填充32GB表空间的此表上,我通过将UPDATE语句设置为NULL来删除大部分BLOB(将其余列当然未触动过)。没有空间实际上被释放,所以我不得不添加第二个数据文件,4GB,以便允许INSERT查询工作。我做了一个“改变表X的举动”,没有任何好处。我做了一个“改变表X收缩空间”,它实际上增加了第二个数据文件的占用率,并使第一个数据文件不受影响。Oracle 11:在将BLOB设置为NULL后回收空间

我发现,计算有多少空间可以保存在净utility,它给我的用户TS刚刚可以释放4004MB,当我从第2数据文件预计至少10GB(4GB基本上应该是空的,加上最初填充到容量= 32GB的第一个数据文件至少6GB)。

看起来不可能释放空间。设置为NULL是一个坏主意?为什么Oracle拒绝将可用空间视为可回收?

请指教。

回答

0

检查这有助于:
http://www.dba-oracle.com/t_update_blob_reclaim_space.htm

答:的LOB/BLOB列仍表块中存在,并且该数据依然存在。它只被标记为未使用。要释放空间,使用这个命令:

alter table 
    my_tab 
modify lob 
    event_data 
(shrink space); 

记住,你必须吊球缩小或移动,更新列空或EMPTY_BLOB之后。