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

七步拆解 Oracle 表空間建立語法:從類型選擇到區塊大小完整指南

     編輯:Oracle 資料庫基礎

前言

表空間是 Oracle 邏輯儲存管理的核心單位,所有使用者物件皆須歸屬某表空間。本文以實際 CREATE TABLESPACE 語法為例,逐條拆解七大子句含義與最佳實務,助你精準掌控儲存配置。

範例語法

CREATE TABLESPACE "SAMPLE"
LOGGING
DATAFILE 'D:\Oracle\ORADATA\ORA92\LUNTAN.ora' SIZE 5M
EXTENT MANAGEMENT LOCAL
SEGMENT SPACE MANAGEMENT AUTO;

逐條深度解析

1. 表空間類型:三大類型任君選

  • 永久表空間:CREATE TABLESPACE ...,存放使用者資料(表、索引等),最常用。
  • 臨時表空間:CREATE TEMPORARY TABLESPACE ...,供排序、雜湊連接等操作產生的暫存資料,不產生重做日誌。
  • UNDO 表空間:CREATE UNDO TABLESPACE ...,儲存交易回滾資訊,支援閃回查詢與讀取一致性。

後兩者為系統管理特殊表空間,一般使用者僅使用永久表空間。

2. LOGGING vs NOLOGGING

  • LOGGING(預設):建立表空間及後續物件操作產生重做日誌,支援媒體復原。
  • NOLOGGING:建立過程不產生重做日誌,速度極快,但無法媒體復原。

建議:空表空間建立階段可用 NOLOGGING 加速,資料導入後立即備份並切回 LOGGING 模式。

3. DATAFILE:指定物理檔案路徑與大小

  • 需使用絕對路徑,單位可為 K、M、G。
  • 多檔案以逗號分隔,可分散於不同磁碟/磁碟陣列,實現 I/O 負載均衡。
  • 範例:DATAFILE 'path1' SIZE 5M, 'path2' SIZE 10M

4. EXTENT MANAGEMENT LOCAL:本地區域管理(9i+ 強制)

  • DICTIONARY(舊制):每個區域在字典表留一筆記錄,大量 DML 產生字典爭用與碎片。
  • LOCAL(現制):位圖管理,高效、自動追蹤相鄰自由空間,避免合併碎片操作,極大提升並發與空間利用率。

5. SEGMENT SPACE MANAGEMENT:段空間管理

  • AUTO (ASSM):僅限 LOCAL 表空間。位圖自動管理區塊自由空間,高並發下效能優異,但不支援 LOB 欄位自動管理。
  • MANUAL:使用自由鏈表,僅為相容舊版,不建議新建使用。

6. 區塊大小

可選擇性指定 BLOCKSIZE 8K 等,須與 db_nk_cache_size 參數配合。一般沿用資料庫標準區塊大小即可,特殊需求(如大量 LOB)可考慮較大區塊。

進階提示:多資料檔與自動擴展

CREATE TABLESPACE "APP_DATA"
DATAFILE '/u01/app/oracle/oradata/APP_DATA01.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 10G,
       '/u02/app/oracle/oradata/APP_DATA02.dbf' SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE 10G
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
SEGMENT SPACE MANAGEMENT AUTO;
  • UNIFORM SIZE 1M:固定區域大小,適合物件大小一致的場景,零碎片。
  • AUTOALLOCATE(預設):系統自動決定區域大小(64K, 1M, 8M, 64M),通用性強。

結語

表空間設計關乎儲存效能、可用性與維運彈性。熟悉七大子句語意,依業務特性選擇類型、日誌模式、管理方式與區域策略,是 DBA 建立穩健儲存基礎設施的關鍵能力。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved