Освобождает ли удаление строк из таблицы пространство больших объектов в столбцах CLOB или BLOB? - PullRequest
0 голосов
/ 03 октября 2019

Размер больших объектов не отображается с размером таблицы, где запрашивается через dba_segments, где table_name = abc, поэтому удаление строк из таблицы также освобождает пространство больших объектов в столбцах CLOB или BLOB в этих таблицах?

1 Ответ

0 голосов
/ 03 октября 2019

Если вы удаляете строки с большими объектами больших объектов, то 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 !!

...