Oracle

Oracle 數據庫 LOB 增加不典型

  • January 7, 2019

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。

引用自:https://dba.stackexchange.com/questions/226490