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

Oracle 存儲結構深度解析:從物理文件到邏輯表空間

     編輯:Oracle 資料庫基礎

引子:表空間怎麼就滿了?

某日師傅接到告警:某表空間滿了。原來昨晚跑存儲過程出問題,佔滿空間。這讓我意識到:必須搞懂 Oracle 存儲結構。

兩大維度:物理結構 vs 邏輯結構

  • 物理結構:操作系統層面的實體文件(數據文件、控制文件、重做日志、歸檔日志、參數文件、警報日志、跟蹤文件、備份文件)。
  • 邏輯結構:Oracle 內部組織單元(數據塊 → 區 → 段 → 表空間)。

物理結構詳解

文件類型作用
數據文件真正存放表、索引等對象數據;一個數據文件對應一個 OS 文件。
控制文件記錄數據庫名、數據文件/日志文件路徑、創建時間戳;至少 1 個,建議多路徑鏡像。
重做日志文件記錄所有變更(用戶 DML + DDL);用於故障恢復;至少 2 組,每組多成員。
歸檔日志文件非活動重做日志的存檔備份;備份恢復關鍵;開啟歸檔模式後產生。
參數文件啟動實例時讀取的初始化參數(PFILE/SPFILE)。
警報日志記錄重大事件與錯誤;名稱 alert_SID.log;位置由 background_dump_dest 決定。
跟蹤文件服務器/後台進程錯誤診斷信息;受 MAX_DUMP_FILE_SIZE 限制。
備份文件介質故障時用於還原恢復的副本(RMAN 備份集、拷貝等)。

邏輯結構層級

數據庫
 └─ 表空間
      └─ 段
           └─ 區
                └─ 數據塊(最小存儲單位,默認 8KB)

表空間

  • 邏輯存儲容器,由 1 個或多個數據文件組成;大小 = 所有數據文件大小之和。
  • 創建數據庫時自動建立:SYSTEM、SYSAUX。
  • 創建自定義表空間示例:
CREATE TABLESPACE testTBSP
DATAFILE 'D:\DBFILE\dbfile1.dbf'
SIZE 50M
AUTOEXTEND ON NEXT 20M MAXSIZE UNLIMITED
LOGGING
EXTENT MANAGEMENT LOCAL;

若將 MAXSIZE 限制為固定值(如 20480M),寫入超過即報「表空間滿」。

表與表空間關係

  • 邏輯上:表空間是表的容器,創建表時可指定 TABLESPACE 子句。
  • 物理上:表數據實際存放在表空間對應的數據文件中。
CREATE TABLE tb_student(name VARCHAR2(20)) TABLESPACE testTBSP;

-- 查詢表所在表空間
SELECT table_name, tablespace_name FROM dba_tables WHERE table_name = 'TB_STUDENT';

關鍵點回顧

  1. 每個表必屬於某表空間;
  2. 表空間大小受數據文件大小/自動擴展上限制約;
  3. 監控 DBA_FREE_SPACE、DBA_DATA_FILES 可預警空間不足;
  4. 合理規劃表空間(按業務、生命周期分離)是穩定運行基石。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved