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

Oracle ASM 自動存儲管理詳細指南

     編輯:Oracle 資料庫基礎

ASM 架構核心

ASM(Automatic Storage Management)是 Oracle 主推的存儲解決方案,架構與 RDBMS 相似,由實例(SGA+後台進程)與文件組成,可用 SQL*Plus 維護。ASM 實例需 CSS(Cluster Synchronization Services)進程支援;非 RAC 環境啟動前需執行 $ORACLE_HOME/bin/localconfig add 啟動 CSS。

ASM 實例組成

SGA 結構

包含 Buffer Cache、Shared Pool、Large Pool。特別注意 Shared Pool 需容納 Extent Map,大小估算公式:

  • 所有數據文件總大小(GB)× 1MB/100GB(External Redundancy)+ 2MB
  • 查詢總大小:SELECT SUM(bytes)/(1024*1024*1024) FROM v$datafile; 等

實際生產通常採用默認值即可:SHARED_POOL_SIZE=48M、LARGE_POOL_SIZE=12M、SGA_MAX_SIZE=88M。

後台進程

  • RBAL:Rebalancer 進程,規劃磁盤組重平衡活動。
  • ARBn (n=1~9):RBAL 子進程,執行實際重平衡工作。

使用 ASM 的 RDBMS 實例額外擁有:

  • RBAL:打開磁盤、發起重平衡。
  • ASMB:ASM 與 RDBMS 實例通信通道,負責 Extent Map 同步與心跳。

關鍵依賴:ASM 必須先於 RDBMS 啟動,同步運行,晚於 RDBMS 關閉。一個 ASM 實例可服務多個 RDBMS(1:n),建議獨立 ASM_HOME。

ASM 配置實戰(以 ASMLib 為例)

Linux 環境安裝包

oracleasmlib-2.0.4-1.el4.i386.rpm
oracleasm-support-2.1.3-1.el4.i386.rpm
oracleasm-2.6.9-78.EL-2.0.5-1.el4.i686.rpm

安裝:rpm -ivh *.rpm → 配置:/etc/init.d/oracleasm configure(依次輸入 oracle、dba、y、y)。

磁盤操作命令

/etc/init.d/oracleasm createdisk VOL1 /dev/sdc1
/etc/init.d/oracleasm scandisks
/etc/init.d/oracleasm listdisks

ASM 實例參數配置

關鍵參數:

  • INSTANCE_TYPE='ASM'
  • ASM_DISKGROUPS:啟動自動掛載的磁盤組(SPFILE 會自動更新,PFILE 需手動維護)。
  • ASM_DISKSTRING:掃描磁盤路徑,ASMLib 格式 'ORCL:VOL*'。
  • ASM_POWER_LIMIT (0-11):重平衡速度,0=不重平衡,11=最快(影響性能)。可動態調整:ALTER DISKGROUP DATA REBALANCE POWER 5;

常用管理操作

磁盤組創建/刪除/掛載

CREATE DISKGROUP dgtest NORMAL REDUNDANCY
  FAILGROUP DATA1 DISK '/dev/oracleasm/VOL5' NAME DATA1
  FAILGROUP DATA2 DISK '/dev/oracleasm/VOL6' NAME DATA2;

DROP DISKGROUP DATA INCLUDING CONTENTS;

ALTER DISKGROUP ALL MOUNT;
ALTER DISKGROUP DATA DISMOUNT;

磁盤增減與撤銷

ALTER DISKGROUP DATA ADD DISK '/dev/oracleasm/VOL5' NAME VOL5;
ALTER DISKGROUP DATA DROP DISK VOL5;
ALTER DISKGROUP DATA UNDROP DISKS;  -- 僅在 DROP 未完成時有效

數據文件別名管理

ALTER DISKGROUP dg1 ADD ALIAS '+dg1/my_dir/my_file.dbf' FOR '+dg1/mydb/datafile/my_ts.342.3';
ALTER DISKGROUP dg1 RENAME ALIAS '+dg1/my_dir/my_file.dbf' TO '+dg1/my_dir/my_file2.dbf';
ALTER DISKGROUP dg1 DROP FILE '+dg1/my_dir/my_file.dbf';

ASMCMD 命令行工具

位於 $ORACLE_HOME/bin/asmcmd,支援 cd、ls、mkdir、rm、mkalias 等類文件系統操作,需 SYSDBA 權限。

注意事項

  1. ASM 啟動後需註冊到 Listener:ALTER SYSTEM REGISTER;
  2. RDBMS 運行時不可關閉 ASM,否則報 ORA-15097。
  3. 刪除 ASM 實例步驟:關聯數據庫下線 → 刪除磁盤組 → SHUTDOWN ASM → 刪除 $ORACLE_HOME/dbs 相關文件 → oradim -delete -asmsid +ASM(Windows)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved