瞭解ASM

tolywang發表於2011-01-18

 

1 ASM 作為Oracle推薦的首選方案,除了具有叢集檔案系統的功能,同時
還整合了冗餘,I/O分散等卷管理器的功能.可以透過兩種方式使用ASM,
包括建立在裸裝置上,如果安裝ASMLIB, 也可以建立在塊裝置上.


2 ASM Instance 與RDBMS 的互動
當ASM例項掛載一個磁碟組之後,ASM會把Disk Group Name, ASM Instance
Name, Oracle Home Path等資訊註冊到CSS,這些資訊會被用來構造Connect
String.

當RDBMS啟動過程中需要訪問某個ASM File時, RDBMS會和CSS聯絡,從CSS中獲
取Connect String, 然後發起一個到ASM例項的連線,這條ASM和RDBMS例項之間
的初始連線叫作 Umbilicu(臍帶), 只要RDBMS開啟ASM File,這個連線就會保持
活動.直到所有ASM File都被RDBMS例項關閉之後,這個連線才會關閉.


3 SGA
ASM 的SGA和RDBMS沒有區別, 也包括Buffer Cache, Shared Pool, Large Pool
等部分,需要注意的是Shared Pool, 因為Extent Map也放在這部分記憶體中.

Extent Map: 儲存RDBMS例項中的儲存分配單元Extent與ASM例項中的分配單元AU
的對應關係.


4 後臺程式

ASM例項:

1) RBAL: rebalancer程式,負責規劃ASM磁碟組的Reblance活動
2) ABRn: 是RBAL程式的子程式,真正完成Reblance活動

RDBMS例項:

1) RBAL: 負責開啟每個磁碟組的所有磁碟
2) ASMB: 這個程式作為ASM例項和資料庫例項之間的資訊通道.這個程式負責與
ASM例項的通訊,它先利用Diskgroup name從CSS獲得管理該Diskgroup的ASM例項的
連線串,然後建立到ASM的持久連線,兩個例項透過這條連線定期交換資訊,同時也
是一種心跳機制.
3)O0nn 01-10:這組程式建立到ASM例項的連線,某些長時間操作比如建立資料檔案,
RDBMS會透過這些程式向ASM傳送資訊


5 檔案

ASM例項的執行表面上看不需要任何檔案,實際上ASM也需要許多"檔案"用來保證正常
執行,只是這些檔案是Oracle內部維護的, 對於DBA不可見,而且也不需要DBA的干預.


6 存在的問題

問題記錄:

1) Oracle文件一再強調的線上新增/刪除DiskGroup, Disk, 在ASM層面的管理操作
時不影響應用系統, 在RAC層面, 對某一個節點上ASM操作,這個節點上的RDBMS必須
Shutdown, ASM 例項必須Dismount.  但由於這是RAC, 業務不會受到影響, 還可以
走另一個節點. 不是這樣的.

ASM 與RAC 並沒有必然的關聯, Oracle一再強調的可以線上管理,是指DiskGroup組
之間不會互相影響.假定你想刪除一個DiskGroup,只要這個DiskGroup上的檔案在RDBMS
不是 ACTIVE的就行.


2) 對ASM的理解,ASM其實就是LVM披上了Oracle的馬甲,
Disk對應PV, Diskgroup 對應VG,


3) ASM 例項的Spfile, 或pfile 在哪裡呢?
$ORACLE_HOME/dbs/spfile+ASM.ora

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-684102/,如需轉載,請註明出處,否則將追究法律責任。