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

Oracle 體系架構核心:SGA 共享記憶體與背景進程深度解析

     編輯:Oracle 資料庫基礎

SGA:實例的心臟

系統全局區域(SGA)是一塊大型共享記憶體區域,實例啟動時分配,所有前景/背景進程共同訪問。核心職責:

  • 維護內部數據結構(鎖、佇列、資源控制塊)
  • 快取磁碟數據塊(資料緩衝區),減少物理 I/O
  • 快取重做日誌(Redo Log Buffer),批次寫入提升效能
  • 儲存已解析 SQL 執行計劃(Library Cache)
  • 支援大型池、Java 池、Streams 池等擴展組件

進程附著機制:跨平台差異

SGA 記憶體結構示意圖

核心背景進程速查表

平台附著方式底層系統呼叫
UNIX/Linux共享記憶體段shmget() 建立、shmat() 附著
Windows單進程多執行緒malloc() 分配虛擬記憶體,執行緒天然共享位址空間

記憶體與進程交互關鍵點

  1. Server Process(前景進程):處理用戶請求,讀寫 SGA、分配 PGA
  2. 專用伺服器模式:每連線一前景進程,私有 PGA
  3. 共用伺服器模式:Dispatcher + Shared Server,連線共用進程池,PGA 移至 SGA(Large Pool)
  4. 物理檔案:控制檔、Redo Log、資料檔、臨時檔、參數檔、密碼檔——僅 Oracle 進程可直接讀寫

UNIX 環境驗證指令

ps -ef | grep ora_
# 典型輸出:
# oracle  1234  1  0 10:00 ?  0:00 ora_pmon_ORCL
# oracle  1236  1  0 10:00 ?  0:00 ora_dbw0_ORCL
# oracle  1238  1  0 10:00 ?  0:00 ora_lgwr_ORCL
# oracle  1240  1  0 10:00 ?  0:00 ora_ckpt_ORCL
# oracle  1242  1  0 10:00 ?  0:00 ora_smon_ORCL
# oracle  1244  1  0 10:00 ?  0:00 ora_reco_ORCL
# oracle  1246  1  0 10:00 ?  0:00 ora_arc0_ORCL

架構理解的實戰價值

  • 效能調優:識別 DBWn/LGWR 負載、Redo Log 構造、檢查點頻率
  • 故障診斷:解讀 trace 檔、alert log 中進程異常堆疊
  • 高可用設計:Data Guard 需啟用 ARCn、LGWR 同步/非同步傳輸
  • 資源規劃:依進程模型估算記憶體、CPU、Semaphore 需求

深入掌握 SGA 結構與背景進程協作機制,是從「會用 Oracle」進階為「懂 Oracle 內核」的關鍵門檻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
進程職責關鍵特徵
DBWn資料庫寫入進程將髒塊從緩衝區寫回磁碟,支援多進程(DBW0-DBW9)
LGWR日誌寫入進程循序寫入 Redo Log,保證交易持久化(WAL 機制核心)
CKPT檢查點進程定期更新控制檔/資料檔頭檢查點資訊,縮短恢復時間
SMON系統監控進程實例恢復、臨時段清理、空間合併
PMON進程監控進程清理失敗進程資源、釋放鎖、重註冊服務
RECO分布式恢復進程解決雙階段提交失敗的分散式交易
ARCn歸檔進程將線上 Redo Log 歸檔至備份目的地
MMON/MMNL記憶體管理/輕量監控自動記憶體管理、AWR 快照收集、閾值告警