Oracle 10g中的表空间几乎100%使用.
大小(MB)= 571,768.0
使用(MB)= 571,534.0
我刚刚删除(并提交)表中属于与该表空间关联的模式的数千条记录.令人惊讶的是,根据Enterprise Manager上的"表空间"页面,没有释放任何空间.
问题:是否有任何我需要做的事情来强制Oracle释放与已删除记录相对应的空间?
您看到的空间是桌面空间上的SEGMENTS.
表空间包含段.每个段都与索引或表相关联.段包含扩展,而扩展包含块.对于表,块包含行.
当您删除表上的行时,您将释放按行占用的空间,但新段的空间保持不变.
要释放此空间,您可以尝试:
ALTER TABLESPACE xxx COALESCE;
Run Code Online (Sandbox Code Playgroud)
要么
ALTER TABLE xxx MOVE;
Run Code Online (Sandbox Code Playgroud)
第一个,将"将所有连续的自由扩展区组合成更大的连续扩展区".根据您的配置,这可以由Oracle自动执行.此外,它可能不会自由,因为数据的位置相对于段上的高水位线.
第二个"允许您将非分区表或分区表的分区的数据重定位到新段中,可选地在不同的表空间中,并可选择修改其任何存储属性." .请注意这一点,因为您需要可用空间来实现此目的,针对另一个表空间执行它或添加更多数据文件.