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

Oracle ASM 與數據庫緊密集成實戰:ASMLib 配置、磁盤創建與 RAC 就緒驗證

     編輯:Oracle 資料庫基礎

一、 為什麼說 ASM 與 Oracle 緊密集成?

ASM 非獨立存儲產品,而是Oracle 數據庫內核組件:

  • 同一二進制: ASM 實例與 RDBMS 實例共享 `$ORACLE_HOME` 核心代碼(`oracle` 二進制)。
  • 實例級協調: RDBMS 通過 `ASMB` 進程與 ASM 實例建立持久連接,實時交換 Extent Map、心跳、再平衡協調信息。
  • 工具鏈統一: DBCA、ASMCA、SRVCTL、SQL*Plus、EM Cloud Control 同一工具集管理。
  • 原始 I/O 性能: 繞過文件系統層,直接發起 `libaio` 異步 I/O,獲得裸設備性能並保留文件管理便利性。

二、 Linux 平台 ASMLib 部署標準化流程

1. 環境前置檢查

# 確認內核版本
uname -r
# 輸出示例:3.10.0-1160.el7.x86_64

# 下載對應 RPM(以 Oracle Linux 7 / RHEL 7 為例)
oracleasm-support-2.1.11-1.el7.x86_64.rpm
oracleasmlib-2.0.12-1.el7.x86_64.rpm
kmod-oracleasm-3.10.0-1160.el7.x86_64-2.0.8-1.el7.x86_64.rpm  -- 內核模塊,版本必須精確匹配

2. 安裝與配置(Root 執行,所有 RAC 節點)

# 安裝順序:support -> lib -> kmod
yum localinstall -y oracleasm-support-*.rpm oracleasmlib-*.rpm kmod-oracleasm-*.rpm

# 互動式配置(或使用 -i 非互動參數)
/etc/init.d/oracleasm configure
# 輸入示例:
# Default user to own the driver interface []: grid
# Default group to own the driver interface []: asmadmin
# Start Oracle ASM library driver on boot (y/n) [n]: y
# Fix permissions of Oracle ASM disks on boot (y/n) [y]: y

# 驗證模塊加載
lsmod | grep oracleasm
# 輸出:oracleasm  53248  1

3. 創建 ASM 磁盤(任一節點 Root 執行,共享存儲可見)

# 假設共享 LUN:/dev/sdb, /dev/sdc, /dev/sdd 已分區為 sdb1, sdc1, sdd1
/etc/init.d/oracleasm createdisk DATA01 /dev/sdb1
/etc/init.d/oracleasm createdisk DATA02 /dev/sdc1
/etc/init.d/oracleasm createdisk FRA01  /dev/sdd1

# 掃描並驗證所有節點可見
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks
# 輸出:
# DATA01
# DATA02
# FRA01

4. 關鍵權限模型說明

  • ASMLib 在 `/dev/oracleasm/disks/` 下創建設備文件,權限由 `configure` 時指定的 `user:group`(如 `grid:asmadmin`)擁有,權限 `0660`。
  • RDBMS/ASM 實例運行用戶(`oracle`/`grid`)必須屬於 `asmadmin` 組才能讀寫磁盤。
  • 多路徑環境下,僅對多路徑設備(`/dev/mapper/mpathXp1`)創建磁盤,避免重複聲明路徑設備。

三、 RAC 環境驗證清單

檢查項命令/查詢預期結果
磁盤組掛載狀態 `SELECT name, state, type FROM v$asm_diskgroup;` 所有相關節點顯示 `MOUNTED`
磁盤成員資格 `SELECT name, path, header_status, mode_status FROM v$asm_disk;` `HEADER_STATUS=MEMBER`, `MODE_STATUS=ONLINE`
實例註冊 `SELECT instance_name, status FROM gv$asm_diskgroup_stat;` 所有實例顯示 `CONNECTED`
ASMB 連接健康 `SELECT group_number, inst_id, connected FROM gv$asm_client;` 所有 RDBMS 實例 `CONNECTED=YES`

四、 常見部署陷阱與規避

  1. 內核升級導致模塊失效: 系統 `yum update kernel` 後,需重新安裝匹配新內核的 `kmod-oracleasm` 並重啟或 `modprobe oracleasm`。
  2. 設備名稱漂移: 僅使用 `/dev/mapper/mpathXp1` 或 `udev` 規則固定的符號鏈接創建磁盤,禁用 `/dev/sdX`。
  3. SELinux 阻擋: 確保 `/etc/selinux/config` 為 `permissive` 或 `disabled`,或為 `oracleasm` 域配置策略。
  4. 兼容性屬性缺失: 創建磁盤組時顯式指定 `ATTRIBUTE 'compatible.asm'='19.0', 'compatible.rdbms'='19.0'`(按實際版本),避免默認值限制新特性(如 Fast Resync、Flex ASM)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved