Oracle
Oracle 19c 無法收縮 blob 列
我從模式中刪除了一堆舊數據,包括 BLOB 數據,然後我嘗試縮小和壓縮所有內容。我設法縮小了所有表(啟用行移動,縮小空間緊湊,禁用行移動),除了一個 BLOB 列,它儲存在一個單獨的段上:
SELECT segment_name, SUM(bytes) / 1024 / 1024 / 1024 AS "GB_SIZE" FROM dba_segments WHERE owner = 'MY_OWNER' GROUP BY segment_name ORDER BY SUM(bytes) / 1024 / 1024 / 1024 DESC;
有問題的部分:
SEGMENT_NAME GB_SIZE SYS_LOB0000072887C00005$$ 0,35955810546875
注意:這是一個測試數據庫,在產品數據庫中,大約是 660 GB。
當我嘗試縮小它時,我收到此錯誤:
ALTER TABLE my_table MODIFY LOB ( my_blob ) ( SHRINK SPACE ); Error starting at line : 1 in command - alter table my_table modify lob (my_blob) (shrink space) Error report - ORA-10635: Invalid segment or tablespace type 10635. 00000 - "Invalid segment or tablespace type" *Cause: Cannot shrink the segment because it is not in auto segment space managed tablespace or it is not a data, index or lob segment. *Action: Check the tablespace and segment type and reissue the statement
細分詳情:
SELECT * FROM dba_segments WHERE segment_name = 'SYS_LOB0000072887C00005$$';
相關細節:
- 段類型:LOBSEGMENT
- 段子類型:SECUREFILE
- 表空間名稱:MY_DATA
表空間詳細資訊:
SELECT * FROM dba_tablespaces WHERE tablespace_name = 'MY_DATA';
相關細節:
- 範圍管理:本地
- 分配類型:SYSTEM
- 段空間管理:AUTO
確切的 Oracle 版本:
Oracle Database 19c 企業版 19.0.0.0.0 版 - 生產
據我所知,一切都是應有的,所以我不確定缺少什麼。
SHRINK SPACE
Securefile LOB 不支持該選項。您可以使用
DBMS_REDEFINITION
(主要是線上)或ALTER TABLE ... MOVE LOB (...)
(離線,表格在移動過程中被鎖定)。ORA-10635: 嘗試收縮 SOA-INFRA LOB 時出現無效的段或表空間類型錯誤$$ To Free Tablespace $$(文件 ID 2382484.1)