首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 連續自由空間查詢與 COALESCE 碎片整理

     編輯:Oracle 資料庫基礎

Oracle 表空間自由空間可能呈現離散分布,影響大物件建立。本文示範如何查詢連續自由區塊、計算真實連續大小,並使用 ALTER TABLESPACE ... COALESCE 合併相鄰碎片。

一、查詢指定表空間自由區塊

SELECT * FROM dba_free_space
WHERE tablespace_name = 'SFSJTS'
ORDER BY block_id;

二、判斷連續區塊邏輯

對每筆記錄:起始 BLOCK_ID + BLOCKS = 下一筆 BLOCK_ID 即為連續。

範例:第 2 筆 133719 + 126 = 133845 等於第 3 筆 BLOCK_ID,代表從 133719 起有 256 個連續區塊。

三、手動合併碎片指令

ALTER TABLESPACE tablespace_name COALESCE;

等同背景程序 SMON 週期性合併動作,但可由 DBA 主動觸發,立即獲得更大連續空間,避免「ORA-01652: unable to extend temp segment」錯誤。

四、空間管理對效能的影響

  • 連續空間不足導致區段頻繁擴展,產生遞增 I/O 成本。
  • 定期 COALESCE 可減少字典管理表空間的遞增式擴展爭用。
  • 建議搭配本地管理表空間(LMT)與自動區段空間管理(ASSM),從根本降低碎片產生。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved