我们有一个表,我们将 JSON 文件存储在 securefile 的 BLOB 对象中
数据类型: JSON_FILES BLOB
LOB (JSON_FILES) STORE AS SECUREFILE (
TABLESPACE J_FILES
ENABLE STORAGE IN ROW
CHUNK 8192
NOCACHE
LOGGING
STORAGE (
INITIAL 104K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
))
但是,当我使用删除语句从表中删除行时。行被删除,但 BLOB 占用的空间存在于某些段中。
Delete from FILE_TABLE WHERE FILE_ID Between 10 and 11000
SELECT SEGMENT_NAME, TABLESPACE_NAME, SUM(BYTES) / 1024 / 1024 / 1024 SIZE_IN_GB
FROM DBA_SEGMENTS
WHERE OWNER = 'ABC'
AND TABLESPACE_NAME = 'FILES_TABLESPACE'
GROUP BY SEGMENT_NAME, TABLESPACE_NAME
SYS_LOB0001543022C00007$$ FILES_TABLESPACE **608.9727783203125**
FILE_TABLE FILES_TABLESPACE 2.6875
Oracle 19c 上的任何解决方案
通常,当您删除表(段)中的某些内容时,分配给表的空间在表空间中保持不变,只是表中有更多的可用空间。如果不查看手册进行检查,我预计持有 blob(或 clob)的段也会以相同的方式运行。现在,如果您想缩小一个段以释放它所使用的空间,那就是另一个问题了。