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

Oracle 基礎架構核心概念筆記:資料庫、表空間、檔案、重做日誌、UNDO、緩衝區

     編輯:Oracle 資料庫基礎

什麼是資料庫?

資料庫 = **管理資料檔案的一組程式** + **資料檔案本身**。包含使用者資料 (業務資料) 與系統資料 (中繼資料)。

邏輯儲存結構

  • 表空間:邏輯容器,由一或多個資料檔組成
  • 區段:表、索引、UNDO、臨時等物件在表空間內的空間分配單位
  • 區塊:連續區塊的集合,降低碎片
  • 資料塊:最小 I/O 單位 (預設 8KB)

核心表空間類型

表空間用途備註
SYSTEM資料字典、系統核心物件建庫自動建立、不可離線/刪除
SYSAUX輔助系統元件 (EM, AWR, Streams 等)10g+ 引入、減輕 SYSTEM 壓力
UNDO儲存 UNDO 資料 (交易回滾、讀一致性)自動 UNDO 管理模式專用
TEMP排序、雜湊、臨時表等臨時段本地管理、暫時表空間群組
USERS使用者永久物件預設表空間建議建立專屬業務表空間替代
INDEX索引專用 (可選)分離索引與表資料檔

物理檔案

  • 資料檔:實際儲存資料、索引、UNDO 等,對應作業系統檔案
  • 控制檔:記錄資料庫名稱、資料檔/重做日誌檔路徑、檢查點、備份資訊,**多工鎖存 (Multiplex) 必備**
  • 線上重做日誌檔:循環寫入交易變更向量,**最少 2 組 (Group),每組 1+ 成員**,支援多工
  • 歸檔日誌檔:ARCHIVELOG 模式下產生,用於時間點復原
  • 參數檔 (SPFILE/PFILE):例程啟動參數
  • 密碼檔:遠程 SYSDBA/OPER 認證

重做日誌與復原機制

  • 所有變更先寫入 **重做日誌緩衝區 (SGA)**,再由 **LGWR** 寫入線上重做日誌檔
  • NOARCHIVELOG:覆寫循環使用,僅支援執行個體復原
  • ARCHIVELOG:ARCN 將填滿組歸檔,支援完整介質復原 (PITR)
  • 檢查點 (CKPT):定期將檢查點位置寫入控制檔與資料檔標頭,縮短復原時間

UNDO 與讀一致性

  • UNDO 區段:儲存資料修改前的舊映像
  • 讀一致性:查詢看到查詢啟動時刻 (SCN) 的資料快照,不被並發修改干擾
  • 交易回滾:利用 UNDO 將資料恢復至交易開始前狀態
  • UNDO 保留:UNDO_RETENTION 參數控制保留秒數,支援長時間查詢與閃回查詢

緩衝區管理與 LRU

  • 資料庫緩衝區快取:SGA 中最大區塊,儲存熱門資料塊
  • LRU 列表:Least Recently Used,冷塊逐出、熱塊上移
  • 髒塊:記憶體中已修改、尚未寫入磁碟的塊,由 DBWn 批次寫入
  • 熱塊:高頻存取塊,停留在 LRU 熱端
  • 全表掃描:預設將塊置於 LRU 冷端 (防污染),CACHE Hint 可置於熱端

常見操作指令

-- 查看表空間使用率
SELECT tablespace_name,
       ROUND(SUM(bytes)/1024/1024,2) AS total_mb,
       ROUND(SUM(bytes)/1024/1024 - NVL(SUM(free_bytes),0)/1024/1024,2) AS used_mb
FROM dba_data_files
LEFT JOIN (SELECT tablespace_name, SUM(bytes) free_bytes FROM dba_free_space GROUP BY tablespace_name) USING (tablespace_name)
GROUP BY tablespace_name;

-- 查看重做日誌組狀態
SELECT group#, sequence#, bytes/1024/1024 AS size_mb, members, archived, status FROM v$log;

-- 查看 UNDO 統計
SELECT * FROM v$undostat;

結語

掌握 **表空間-區段-區塊-塊** 四層邏輯結構、**資料檔/控制檔/重做日誌** 三大物理檔案、**重做/UNDO/緩衝區** 三大核心機制,即建立起 Oracle 架構的完整心智模型,是效能調校、備份復原、故障排查的基石。

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