We've got a table with a LOB column which is empty as the content has be transfered to some other place (another column). However, the LOB segment still occupies 300 GB, and I cannot get rid of it.
Here is a minimal example:
CREATE TABLE t (id NUMBER, c CLOB)
LOB (c) STORE AS BASICFILE (DISABLE STORAGE IN ROW RETENTION NONE);
INSERT INTO t SELECT object_id, object_name FROM all_objects;
COMMIT;
UPDATE T SET c=NULL;
COMMIT;
Now, the LOB is empty, but the storage still occupies 500 MB:
SELECT s.bytes/1024/1024 as mb
FROM user_lobs
JOIN dba_segments s using (segment_name);
MB
528
In the minimal example, ALTER TABLE xxx MOVE works, but not with the real table, as it is too big and runs into various Oracle errors. Online redefinition doesn't work, too, as the underlying datatype is BINARY XML. Expdp/impdp takes too long for production.
I simply can't believe that it is not possible to reclaim the space of a totaly empty column.
Who can help, please?