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

Oracle 體系架構核心概念:資料庫與執行個體的本質區別

     編輯:Oracle 資料庫基礎

核心概念辨析:Database vs Instance

掌握 Oracle 體系架構,必須先釐清兩個最基礎卻最易混淆的概念——資料庫與執行個體。兩者關係緊密但本質迥異:

資料庫 = 靜態的物理檔案集合(資料的持久化儲存)
執行個體 = 動態的記憶體結構 + 背景進程群組(存取資料的服務主體)

一、資料庫:持久化的資料容器

邏輯儲存結構層次

資料庫
└── 表空間 —— 邏輯劃分單位(至少含 SYSTEM 表空間)
    └── 資料檔 —— 物理檔案(一個表空間含一或多個資料檔)
        └── 段 —— 物件佔用空間(表段、索引段、回滾段等)
            └── 區 —— 連續區塊組(預設 8 區塊)
                └── 區塊 —— 最小儲存單位(預設 8KB)

表空間核心特性與操作

特性說明
磁碟空間分配控制管理物件在磁碟上的空間分配方式
使用者配額限制限制使用者在表空間可用空間上限
狀態屬性ONLINE / OFFLINE / READ ONLY / READ WRITE
備份恢復單位可針對表空間進行部分備份與恢復

常用管理指令

-- 修改表空間狀態
ALTER TABLESPACE users READ ONLY;

-- 查詢表空間狀態
SELECT tablespace_name, status FROM dba_tablespaces;

-- 查詢表空間與資料檔對應關係
SELECT tablespace_name, bytes, file_name FROM dba_data_files;

-- 移動表至其他表空間
ALTER TABLE scott.emp MOVE TABLESPACE users;

三類核心資料庫檔案

  1. Data Files (.dbf):實際資料儲存
  2. Control Files (.ctl):資料庫物理結構元資料(檔案位置、檢查點、日誌歷史等)
  3. Redo Log Files (.log):交易重做記錄,保障持久性

輔助檔案:Parameter File、Password File、Archived Log Files(非資料庫啟動必需)

查詢物理檔案組成

SELECT * FROM v$datafile;      -- 資料檔
SELECT * FROM v$controlfile;   -- 控制檔
SELECT * FROM v$logfile;       -- 日誌檔

二、執行個體:資料庫的存取服務主體

定義

執行個體 = SGA(系統全域區) + 背景進程群組。一個資料庫可被多個執行個體同時存取(RAC 架構)。

參數檔案與啟動流程

  • 參數檔:init.ora(文字)或 spfile.ora(二進位,支援動態修改持久化)
  • 啟動順序:讀取參數檔 → 配置 SGA → 啟動背景進程 → 掛載資料庫 → 開啟資料庫

記憶體結構(SGA + PGA)

五大核心背景進程

  1. PMON(Process Monitor):進程失敗清理、釋放鎖、回滾未提交交易、重新註冊監聽器
  2. SMON(System Monitor):執行個體恢復、整理臨時段、合併自由空間
  3. DBWn(Database Writer):將緩衝區髒區塊寫入資料檔(多進程 DBW0~DBW9、DBWa~DBWj)
  4. LGWR(Log Writer):將 Redo Log Buffer 寫入線上重做日誌檔,確保交易持久性
  5. CKPT(Checkpoint):檢查點觸發時更新控制檔與資料檔標頭,縮短恢復時間

三、資料庫與執行個體的關係圖譜

┌─────────────────────────────────────┐
│           資料庫                    │
│  (Control Files, Data Files,        │
│   Redo Log Files - 物理檔案)        │
└──────────────┬──────────────────────┘
               │ 掛載/開啟
               ▼
┌─────────────────────────────────────┐
│          執行個體                    │
│  ┌─────────────────────────────┐    │
│  │ SGA (共享記憶體)             │    │
│  │  - Shared Pool              │    │
│  │  - Buffer Cache             │    │
│  │  - Redo Log Buffer          │    │
│  │  - Large Pool, Java Pool... │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ 背景進程                     │    │
│  │  PMON, SMON, DBWn, LGWR,    │    │
│  │  CKPT, ARCn, RECO...        │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ 前景進程 / 伺服器進程        │    │
│  │  (用戶連線對應)              │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘

關鍵差異總結表

區域特性核心組件
SGA(共享)所有進程共享,儲存資料庫資訊與控制資訊Shared Pool、Buffer Cache、Redo Log Buffer、Large Pool、Java Pool 等
PGA(私有)單一進程專用,進程建立時分配、終止時回收排序區、雜湊區、UGA(專用伺服器模式)
維度資料庫執行個體
本質靜態檔案集合動態記憶體 + 進程
持久性永久(除非刪除檔案)暫時(關機即消失)
啟動順序被掛載/開啟先啟動,再開啟資料庫
多對多關係一個資料庫可對多個執行個體(RAC)一個執行個體同一時間只能掛載一個資料庫
備份對象備份資料庫檔案無需備份(可重建)

理解這對核心概念,是掌握 Oracle 架構、備份恢復、RAC、Data Guard 等進階主題的基石。

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