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

Oracle ASM 深度解析:架構、實例管理、SGA/進程模型與 ASMLib 實戰部署

     編輯:Oracle 資料庫基礎

ASM 核心定位

Automatic Storage Management (ASM) 是 Oracle 推薦的資料庫專用存儲管理方案,提供條帶化、鏡像、自動再平衡等功能,簡化存儲管理並提升 I/O 效能。ASM 實例與 RDBMS 實例架構相似,均由 SGA、背景進程、控制文件組成,可透過 SQL*Plus、ASMCMD、DBCA 管理。

ASM 實例架構詳解

1. SGA 組成與 Extent Map 記憶體估算

ASM SGA 包含 Buffer Cache、Shared Pool、Large Pool。Shared Pool 關鍵作用:儲存 Extent Map(區塊映射表),將檔案邏輯區塊映射到物理磁碟區塊。

Extent Map 大小估算公式:

-- 1. 計算所有資料檔、線上日誌、臨時檔總大小 (GB)
SELECT SUM(bytes)/(1024*1024*1024) FROM v$datafile;
SELECT SUM(bytes)/(1024*1024*1024) FROM v$logfile a, v$log b WHERE a.group# = b.group#;
SELECT SUM(bytes)/(1024*1024*1024) FROM v$tempfile WHERE status = 'ONLINE';

-- 2. External Redundancy 磁碟組:每 100 GB 需 1 MB Extent Map
-- 3. 建議 Shared Pool = Extent Map 大小 + 2 MB 緩衝

實務上多採用預設值,僅在超大型資料庫(PB 級)需手動調整。

2. 背景進程模型

進程所屬實例職責
RBALASMRebalancer 協調進程,規劃磁碟組再平衡活動
ARBn (n=1~9)ASMRBAL 子進程,執行實際再平衡資料搬移
RBALRDBMS打開 ASM 磁碟、發起再平衡請求
ASMBRDBMSASM 與 RDBMS 通訊橋樑:傳遞 Extent Map、心跳檢測、狀態同步

啟動/關閉順序鐵律:ASM 必須先啟動、同步運行、最後關閉。一個 ASM 可服務多個 RDBMS(1:n),建議獨立 ASM_HOME 避免補丁衝突。

ASMLib 部署實戰(Linux x86_64,RHEL/OEL 7/8)

1. 套件下載對照表

  • oracleasmlib-2.0.x-x.el7.x86_64.rpm(用戶空間庫)
  • oracleasm-support-2.1.x-x.el7.x86_64.rpm(管理工具)
  • oracleasm--2.0.x-x.el7.x86_64.rpm(核心模組,**必須與 uname -r 完全一致**)

下載來源:Oracle ASMLib 官方頁面,按 CPU 架構選擇。

2. 安裝與配置步驟

# 1. 安裝 RPM
rpm -ivh oracleasm-*.rpm oracleasmlib-*.rpm oracleasm-support-*.rpm

# 2. 配置驅動(互動式:預設用戶 oracle、群組 dba、開機自啟、啟動設權限)
/etc/init.d/oracleasm configure
# 輸入:oracle, dba, y, y

# 3. 建立 ASM 磁碟
/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks
# 輸出 VOL1 表示成功

3. 常用管理指令

/etc/init.d/oracleasm {start|stop|restart|enable|disable|status}
                  {createdisk|deletedisk|querydisk|listdisks|scandisks}

RDBMS 使用 ASM 存儲的關鍵點

  • 資料庫啟動階段從 ASM 實例獲取 Extent Map。
  • 磁碟組維護(加/減磁碟、再平衡)觸發 Extent Map 更新,經 ASMB 推送至 RDBMS。
  • 參數 ASM_DISKSTRING、ASM_DISKGROUPS、ASM_POWER_LIMIT(再平衡並行度)需在 RDBMS 端配置。

結語

ASM 以實例化架構封裝存儲複雜度,配合 ASMLib 實現裝置持久命名與權限自動化,是 Oracle RAC 與單機高可用部署的首選存儲層。掌握 SGA 估算、進程交互、ASMLib 部署細節,是 DBA 邁向架構師的必修課。

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