首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 表空間區管理與段空間管理深度解析:本地管理、ASSM 自動段空間、Free List 與位圖機制對比

     編輯:Oracle 資料庫相關知識

典型 DBA 建表空間腳本

CREATE TABLESPACE Think
DATAFILE '/u01/app/oracle/oradata/orcl/think.dbf' SIZE 100M
AUTOEXTEND ON NEXT 10M MAXSIZE 4096M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K
SEGMENT SPACE MANAGEMENT AUTO;

兩大核心子句解析

① 區管理:EXTENT MANAGEMENT LOCAL

  • 8i 前:字典管理,高併發下效能衰退、空間碎片
  • 8i+:本地管理,資料檔頭部加入位圖區域
    • 段首區塊 1:First Level Bitmap
    • 塊 2:Second Level Bitmap
    • 塊 3:段頭塊
    • 前兩塊管理 Free Block
  • 語法:EXTENT MANAGEMENT LOCAL {AUTOALLOCATE | UNIFORM SIZE nK/M}
    • AUTOALLOCATE:遞增演算法自動分配
    • UNIFORM SIZE:固定區大小(如 256K)
  • DBA_EXTENTS 視圖查看物件區分配情況

② 段空間管理:SEGMENT SPACE MANAGEMENT

Oracle 以區分配給段,段內以區塊管理。9i 起兩種模式:

模式全稱控制參數特點
MSSMManual Segment Space ManagementFREELISTS, FREELIST GROUPS, PCTUSED, PCTFREE, INITRANS手動調優,傳統模式
ASSMAutomatic Segment Space Management僅 PCTFREE(其餘設定會被忽略)自動管理,簡化維運

關鍵參數深度

  • FREELIST:MSSM 維護高水位線下有空間區塊;ASSM 不存在
  • PCTFREE:預留空間供未來更新;MSSM 控制區塊進出 Free List;ASSM 僅限制新行能否插入區塊,PCTUSED 被忽略。合理設定減少行遷移
  • INITRANS:區塊頭事務槽初始大小,兩模式均有效

查詢現有表空間管理模式

SELECT EXTENT_MANAGEMENT, SEGMENT_SPACE_MANAGEMENT FROM DBA_TABLESPACES;
EXTENT_MAN  SEGMEN
----------  ------
LOCAL       MANUAL
LOCAL       MANUAL
LOCAL       AUTO
LOCAL       MANUAL
LOCAL       MANUAL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved