架構總覽
Oracle 數據庫系統由物理結構(文件)、邏輯結構(存儲單元)、內存結構(SGA/PGA)、後台進程 四大支柱構成。掌握架構是性能調優、故障診斷、備份恢復的基石。
一、物理結構:磁盤文件族群
| 文件類型 | 屬性 | 核心作用 | 關鍵點 |
| 控制文件 | 數據庫文件 | 記錄 DB 名、表空間/數據文件/Redo 位置、檢查點、日志序列號 | 至少 1 個,建議多路徑多路鏡像 |
| 數據文件 | 數據庫文件 | 存儲實際業務數據、索引、臨時段 | 按類型分盤(數據/索引/臨時/UNDO) |
| Redo 日志文件 | 數據庫文件 | 記錄所有變更,支撐崩潰恢復 | 至少 2 組,多路鏡像,合理設置大小 |
| 歸檔日志 | 數據庫文件 | Redo 歷史副本,介質恢復必需 | 歸檔模式下自動生成,需監控空間 |
| 參數文件 | 非數據庫文件 | 實例啟動參數(SPFILE/PFILE) | 指定控制文件、內存、歸檔目標 |
| 口令文件 | 非數據庫文件 | SYSOPER/SYSDBA 遠程認證 | ORAPWD 創建,REMOTE_LOGIN_PASSWORDFILE 控制 |
| 跟蹤/告警日志 | 數據庫文件 | 後台進程異常、關鍵事件、錯誤記錄 | ADR_HOME/diag 目錄,定期清理 |
控制文件關鍵內容
- 數據庫名稱、創建時間戳
- 所有表空間名、數據文件路徑、Redo 文件路徑
- 當前 Redo 日志序列號、檢查點 SCN/位置
- RMAN 備份元數據(控制文件自動備份開啟時)
啟動掛載流程中的角色
- 讀取參數文件獲取控制文件路徑
- 打開控制文件,驗證一致性
- 根據控制文件列表打開所有數據文件、Redo 文件
二、邏輯結構:存儲層次金字塔
表空間 ──→ 段 ──→ 區 ──→ 塊
│ │ │ │
└─ 邏輯容器 └─ 對象空間 └─ 連續塊組 └─ 最小 I/O 単位 (8K/16K/32K)
- 表空間:邏輯容器,由 1-N 個數據文件組成,管理對象存儲配額
- 段:對象佔用的空間集合(表段、索引段、UNDO 段、臨時段)
- 區:連續塊的分配單位,由 1-N 個塊組成,本地管理表空間統一/自動分配
- 塊:最小 I/O 單位,創建庫時指定
DB_BLOCK_SIZE,不可變
三、內存架構:SGA 與 PGA
SGA (System Global Area) - 共享內存區
| 組件 | 功能 | 關鍵參數 |
| 共享池 | SQL/PLSQL 解析樹、執行計劃、數據字典緩存 | SHARED_POOL_SIZE |
| 數據庫緩存 | 數據塊副本(LRU 列表管理) | DB_CACHE_SIZE / DB_nK_CACHE_SIZE |
| Redo 日志緩存 | Redo 條目順序寫入,LGWR 批量刷盤 | LOG_BUFFER |
| 大池 | RMAN、並行查詢、共享服務器 UGA | LARGE_POOL_SIZE |
| Java 池 | Java 代碼/會話狀態 | JAVA_POOL_SIZE |
| 流池 | Streams/AQ 消息緩存 | STREAMS_POOL_SIZE |
| 結果緩存 | SQL/PLSQL 結果集緩存 | RESULT_CACHE_MAX_SIZE |
SGA 在實例啟動時分配(物理內存不足時溢寫到交換分區),所有進程共享。
PGA (Program Global Area) - 專用內存區
- 每個服務器/後台進程私有
- 包含:排序區、哈希區、位圖合併區、會話游標狀態、UGA(專用服務器模式)
- 關鍵參數:
PGA_AGGREGATE_TARGET(自動管理模式)、SORT_AREA_SIZE(手動模式)
- 進程創建時分配,終止時釋放
四、核心後台進程
| 進程 | 縮寫 | 核心職責 | 關鍵觸發條件 |
| 數據庫寫入進程 | DBWn | 將髒塊從緩存刷入數據文件 | 檢查點、LRU 末端、表空間離線、检查點隊列 |
| 日志寫入進程 | LGWR | Redo 日志緩存順序寫入在線 Redo 文件 | 提交、1/3 滿、1MB、3秒超時、DBWR 需要 |
| 系統監控進程 | SMON | 實例恢復、臨時段清理、事務恢復 | 啟動時、定期喚醒 |
| 進程監控進程 | PMON | 失敗進程資源清理、釋放鎖、回滾未提交事務 | 進程異常終止時 |
| 檢查點進程 | CKPT | 更新控制文件/數據文件頭檢查點信息 | 日志切換、手動檢查點、CKPT_PROCESS=TRUE |
| 歸檔進程 | ARCn | 在線 Redo 切換後複製到歸檔目標 | 歸檔模式 + 日志切換 |
| 恢復進程 | RECO | 分布式事務失敗自動解決 | 雙階段提交失敗 |
| 管理進程 | MMAN/MMON/MMNL | 內存自動管理、AWR 快照、統計收集 | 定期/閾值觸發 |
五、SCN:時序一致性基石
- System Change Number:單調遞增的全局邏輯時鐘
- 每次提交、檢查點、日志切換推進 SCN
- 用於:事務排序、一致性讀構建、恢復同步點、Data Guard 同步進度
- 查看當前 SCN:
SELECT CURRENT_SCN FROM V$DATABASE;
架構知識在實戰中的映射
| 場景 | 關聯架構組件 | 排查/優化切入點 |
| SQL 執行慢 | 共享池、緩存、PGA 排序區 | 解析共享、緩存命中率、排序磁盤化 |
| 日志切換頻繁 | Redo 文件大小、LGWR、歸檔 | 增大 Redo、優化提交頻率、歸檔並行 |
| 表空間報滿 | 數據文件、段、區、塊 | 擴展文件、啟用自動擴展、清理臨時段 |
| 實例崩潰恢復久 | Redo、檢查點、SMON、DBWR | 縮短檢查點間隔、優化 FAST_START_MTTR_TARGET |
| 分布式事務掛起 | RECO、雙階段提交 | 檢查 DBA_2PC_PENDING、網絡/監聽狀態 |
- 上一篇文章: Oracle EXP/IMP 遷移工具深度解析:參數全覆蓋與實戰最佳實踐
- 下一篇文章: Oracle 刪除重複數據高效方案:ROWID、臨時表、分析函數三大流派實戰
Copyright ©
程式碼之家 All Rights Reserved