Oracle
Oracle 數據庫 LOB 增加不典型
Oracle 12c 生產數據庫包括帶有 BLOB 列的表。通常增長率為每週 2GB。這是表創建語句:
CREATE TABLE XXX.FILEENTRY ( FILENAME VARCHAR2(300 CHAR), FILESIZE NUMBER(20), FILECONTENT BLOB ) LOB (FILECONTENT) STORE AS SECUREFILE ( TABLESPACE DATA ENABLE STORAGE IN ROW CHUNK 8192 CACHE LOGGING STORAGE ( INITIAL 104K NEXT 1M MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 BUFFER_POOL DEFAULT )) TABLESPACE DATA PCTUSED 0 PCTFREE 10 INITRANS 1 MAXTRANS 255 STORAGE ( INITIAL 64K NEXT 1M MAXSIZE UNLIMITED MINEXTENTS 1 MAXEXTENTS UNLIMITED PCTINCREASE 0 BUFFER_POOL DEFAULT ) LOGGING NOCOMPRESS NOCACHE MONITORING;
從某些日子開始,LOB 每天會增加到 100GB。快速增長的 LOB 是:SYS_LOB0000119621C00011$$:
Owner,Segment name,Segment size (GB) xxx,FILEENTRY,1,8 xxx,SYS_LOB0000119621C00011$$, 1156,1
該應用程序有一個傳輸表,它只顯示每周大約 2GB 的通常輸入。如果這不是來自使用者,那麼這種增長的原因可能是什麼?有沒有辦法檢查 SYS_LOB0000119621C00011$$ 的內容?
有沒有辦法檢查 SYS_LOB0000119621C00011$$ 的內容?
是的,您可以先查看 dba_lobs 視圖以檢查哪個表/列與該段關聯。
如果這不是來自使用者,那麼這種增長的原因可能是什麼?
也許您的表中已插入一個巨大的文件。您可以使用 DBMS_LOB.GETLENGTH(column_name) 來查找每個 lob 的大小。
select filename, DBMS_LOB.GETLENGTH(filecontent) from fileentry order by 2;
查看(Oracle 支持內容,需要訂閱):
LOB 段的大小顯著增加,儘管其中的實際數據大小很小(文件 ID 2326423.1)
其中有 3 個錯誤,它們具有 12c 的一次性更新檔(它們已在 18c 中修復):
- 錯誤 26007010:即使刪除了資源,數據庫也會增長
- 錯誤 26439748:ENQ:TX - 爭用和 GC 緩衝區繁忙獲取等待 12.1 中的 SECUREFILES
- 錯誤 26513067:KTSLA_HBB_UPDATE_CACHE 中實例關聯性的分配存在缺陷
還有一些隱藏參數需要設置。
這是該說明的公開版本(不是完整內容):
LOB 段的大小顯著增加,儘管其中的實際數據大小很小(文件 ID 2326423.1)
症狀
- LOB 段的大小約為幾百 GB,而實際上它只有幾百 MB。