Если вы удаляете строки с большими объектами больших объектов, то oracle не освобождает пространство для табличного пространства автоматически.
Вам потребуется указать пространство (размер), которое будет освобождено в вашем табличном пространстве, используя следующий запрос:
ALTER TABLE <YourTable> MODIFY LOB (<LobColumn>) (SHRINK SPACE);
Вы можете рассчитать общий размер сегмента большого объекта, используя следующий запрос:
SELECT OWNER,SEGMENT_NAME,ROUND(SUM(BYTES)/1024/1024) "LOB size (mb)"
FROM DBA_SEGMENTS
WHERE SEGMENT_NAME IN
(
SELECT SEGMENT_NAME
FROM DBA_LOBS WHERE TABLE_NAME = <YOURTABLE>
AND OWNER = <YOUROWNER>
)
GROUP BY OWNER,SEGMENT_NAME;
Вы можете рассчитать размер до и после удаления записи, и вы не найдетеразница, но как только вы выполните вышеупомянутую команду ALTER TABLE
(после удаления строк), вы увидите разницу в размере, используя приведенный выше запрос.
Cheers !!