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

Oracle 資料庫 vs 實例核心觀念:關係、RAC 架構與高可用設計

     編輯:Oracle 資料庫基礎

前言:最基本也最關鍵的區分

許多初學者混淆「資料庫」與「實例」。釐清兩者關係、理解 RAC 如何打破一對一限制,是掌握 Oracle 架構的起點。

一、核心定義

概念定義組成關鍵特性
資料庫物理作業系統檔案集合資料檔、控制檔、線上重做日誌、參數檔、密碼檔、歸檔日誌靜態、持久化、可備份/還原
實例記憶體結構 + 背景進程/執行緒SGA、PGA、PMON/SMON/DBWn/LGWR/CKPT/ARCn...動態、啟動後存在、掛載/開啟資料庫

二、關係規則

  1. 一個實例,任一時刻只能掛載/開啟一個資料庫
  2. 一個資料庫,可被多個實例掛載/開啟 (RAC)
  3. 大多數情況 (Single Instance):一對一
  4. RAC 環境:多實例 ↔ 一資料庫 (多對一)

三、啟動階段對應關係

STARTUP NOMOUNT
    │
    ├─ 啟動實例 (SGA + 背景進程)
    │
    └─ 尚未關聯資料庫檔案
        │
        ▼
ALTER DATABASE MOUNT
    │
    ├─ 讀取控制檔,確認資料庫結構
    │
    └─ 實例掛載資料庫 (關聯建立)
        │
        ▼
ALTER DATABASE OPEN
    │
    ├─ 開啟資料檔、重做日誌
    │
    └─ 實例開啟資料庫 (可服務用戶)

四、RAC (Real Application Clusters) 架構

核心價值

  • 高可用:單節點故障,其他節點秒級接管服務
  • 擴展性:橫向增加節點分攤負載
  • 單一系統映像**:應用端視為單一資料庫

架構圖解

                    ┌─────────────────┐
                    │  Shared Storage │  (ASM / Cluster FS / NFS)
                    │  Datafiles      │
                    │  Control Files  │
                    │  Redo Logs      │
                    └────────┬────────┘
                             │
              ┌──────────────┼──────────────┐
              ▼              ▼              ▼
        ┌──────────┐  ┌──────────┐  ┌──────────┐
        │ Node 1   │  │ Node 2   │  │ Node 3   │
        │ Instance │  │ Instance │  │ Instance │
        │  (SGA)   │  │  (SGA)   │  │  (SGA)   │
        └────┬─────┘  └────┬─────┘  └────┬─────┘
             │             │             │
             └─────────────┼─────────────┘
                           ▼
                  ┌─────────────────┐
                  │  Interconnect   │  (Private Network)
                  │  Cache Fusion   │  (Block Transfer)
                  └─────────────────┘

關鍵技術:Cache Fusion

  • 節點間透過 **高速私有網路** 直接傳輸資料塊 (一致性讀/當前塊)
  • 避免傳統「寫盤再讀」的磁碟 I/O 延遲
  • Global Cache Service (GCS) / Global Enqueue Service (GES) 協調全域一致性

五、非 RAC 叢集 vs RAC

特性Cold Failover ClusterRAC
架構Active-PassiveActive-Active
資源利用備援節點閒置所有節點分擔負載
故障切換時間分鐘級 (啟動實例+掛載+開啟)秒級 (服務遷移+事務恢復)
擴展性無 (單活)線性擴展
授權成本標準版包含Enterprise Edition + RAC Option

六、實例識別與參數


-- 查看實例資訊
SELECT instance_name, host_name, version, startup_time, status, parallel
FROM v$instance;

-- RAC 環境查看所有實例
SELECT inst_id, instance_name, host_name, status
FROM gv$instance;

-- 實例唯一名稱 (RAC 必須唯一)
SHOW PARAMETER instance_name;
SHOW PARAMETER instance_number;

七、常見誤區澄清

誤區正確觀念
「備份實例」備份的是**資料庫檔案**,實例是記憶體結構無法備份
「實例包含資料」資料在**資料檔**,實例只緩存熱點資料在 SGA
「RAC 是備份機制」RAC 是**高可用架構**,仍需完整備份策略 (RMAN)
「單實例也能掛載多資料庫」**單實例任一時刻只能開啟一個資料庫** (CDB/PDB 除外)

八、CDB/PDB (12c+) 的新維度

  • CDB (Container Database) = 一個實例 + 一組資料庫檔案
  • PDB (Pluggable Database) = 邏輯容器,共享 CDB 的實例與背景進程
  • 一個實例可服務 **多個 PDB** (多租戶)
  • PDB 可 Unplug/Plug 遷移至其他 CDB

結語

**資料庫 = 檔案 (靜態、持久)**,**實例 = 記憶體 + 進程 (動態、運算)**。單機環境一對一,RAC 打破界限實現多實例共享一資料庫,靠 Cache Fusion 維持一致性。理解此核心關係,才能正確規劃備份策略、高可用架構、擴展方案,避免本質誤判導致的架構缺陷。

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