今天drop了一张大表,惊奇地发现表空间大小没有任何变化,只是占据同样空间的segment换了一些类似乱码的名字。
赶紧上网查找,发现oracle确实会有这种情况,须先truncate后再drop表才能减少表空间。可是我已经把表drop掉了,怎么才能让表空间也降下来呢?翻了好几页百度的搜索页面,终于找到答案。原来oracle执行drop表命令时,并没有直接删掉数据,而是类似windows那样放在了回收站之类的地方,这样万一用户要恢复drop掉的表,就可以很快还原。要想真正删掉表,可以清空回收站的数据。命令是:purge table 表名。
哈哈,赶紧运行purge命令,果然表空间立刻少了许多。还有一种做法,就是drop表时加上purge选项,这样也可以真正删掉表,减少表空间大小。命令是:drop table 表名 purge。