ASM的全稱是Automated Storage Management,通俗的講 就是自動存儲管理,ASM是自Oracle10g版本Oracle推出的最新功能之一。這是Oracle數據庫提供的一個卷管理器,用於替代操作操作系統所提供的LVM,它不僅支持單實例配置,也支持RAC這樣的多實例配置。
將給Oracle數據庫管理員帶來極大的方便,ASM可以自動管理磁盤組,並提供數據冗余和優化。特別是對於企業極的大型數據庫管理員來說,可以使管理員可以從管理成百上千個數據文件這些瑣碎的日常事務中解脫開來,以便處理其它更為重要的事務上去。
在Oracle 10g這個版本之前,管理一個大型數據庫成百上千個的數據文件對數據庫管理員來說是一個既無技術含量又十分枯燥的工作,這要求數據庫管理員要熟悉一些系統的LVM的相關知識,做好磁盤規化,LV的條帶等相關的系統方面的相關操作。而使用自動存儲管理將大大減輕這方面的工作量,Oracle數據庫管理員只需要管理少數幾個磁盤組即可。
一個磁盤組是ASM管理的一個邏輯單元,由一組磁盤設備組成。我們可以定義一個磁盤組作為Oracle數據庫的默認磁盤組,Oracle會自動管理存儲,包括創建、刪除數據文件等。Oracle會自動將這些文件與一個合適的數據庫對象做關聯,這樣我們在管理這些對象時只需要提供對象的名稱,而無需像以前那樣提供詳細的文件名。
ASM提供了很多有用的存儲技術,如RAID和LVM(邏輯卷管理)等。像這些技術一樣,ASM允許你在一組獨立的磁盤上創建一個單獨的磁盤組。這樣就實現了單個磁盤組的I/O均衡。同時ASM還實現了條帶化(Striping)和磁盤鏡像(Mirroring)以提高I/O的性能和數據可靠性。
與RAID或LVM不同的是,ASM是在文件級實現的條帶化和鏡像,這樣的實現方式給用戶帶了很大選擇自由度,我們可以在同一個磁盤組中對不同的文件配置不同的存儲屬性,實現不同的存儲方式。
2 11g中ASM都有哪些新特征
2.1 快速重新同步(ASM Fast Mirror Resync)
短暫的磁盤路徑發生問題時,恢復ASM磁盤組(DISK GROUP)的允余性是很費時間的,特別是這種恢復操作需要重新布局整個磁盤組的情況下。ASM快速磁盤重新同步這個新特征能顯著減少重新同步一塊壞磁盤時這種情況的時間,當你更換了壞磁盤,ASM能夠快速的同步ASM磁盤的extent。
任何使磁盤組臨時不可用的問題被認為是暫時的失效,這是ASM快速重新同步新特征可以恢復的。磁盤路徑失效,例如接口線問題,主機適配器問題,磁盤控制器問題,或者是磁盤電源問題這些都能引起瞬時失效。缺省的情況下,當一塊磁盤脫機時,ASM會立刻移出該磁盤。
ASM快速再同步功能夠記錄脫機磁盤在脫機期間該磁盤上區的所有的變化,當磁盤被修復或再次聯機時,這期間更改的extent能夠被快速的重新同步到剛才失效的這些磁盤中。
你可以設定DISK_REPAIR_TIME這個屬性使失效磁盤在被修復和再次聯機這段時間內重新整理這樣的操作不發生。這個時間可以以分鐘(m或M)或者小時(h或H)為單位,如果你不指定時間單位,缺省的時間單位為小時。如果DISK_REPAIR_TIME這個屬性沒有設定,其缺省值為3.6小時。
需要注意的是,這個缺省值適用於磁盤被設定為脫機模式而操作語句沒有DROP AFTER子句這樣的情況。大部分來說環境,3.6個小時這個DISK_REPAIR_TIME缺省屬性數值應該都是合適的。
注意:
使用這項新功能,ASM磁盤組的兼容性需要設定至11.1或更高。
例:
- CREATE DISKGROUP asmdskgrp1 DISK '/dev/raw/*'
- SET ATTRIBUTE 'compatible.rdbms' = '11.1', 'compatible.asm' = '11.1';
只有當包含脫機磁盤的磁盤組再次被掛上,消逝時間(自磁盤被設定成脫機模式後)都是增加的,V$ASM_DISK的REPAIR_TIME這列顯示的是脫機磁盤在被刪除之前所剩余的時間(單位:秒),當指定的時間到達後,ASM刪除磁盤,可以用帶有DROP AFTER的ALTER DISKGROUP DISK OFFLINE語句來覆蓋這個屬性。
注意:
DROP AFTER也是11g的新特征。
如果一條ALTER DISKGROUP SET ATTRIBUTE DISK_REPAIR_TIME操作的磁盤組含有脫機的磁盤,這個屬性只對當前那些非脫機模式的磁盤是生效的。
當一塊脫機磁盤被第二次執行脫機操作,消逝時間會被重置並重新開始計算。如果另一個時間這塊磁盤又被執行了DROP AFTER操作,上一個值會被覆蓋並且新值生效。不能用ALTER DISKGROUP DROP DISK語句刪除處於脫機狀態的磁盤,這樣操作時會報錯。
如果在某時情況,例如磁盤不能夠被修復,需要在DISK_REPAIR_TIME到達前把磁盤刪除時,可以再次執行帶有DROP AFTER子句的OFFLINE語句,DROP AFTER指定0H或0M,表示立刻刪除。
你可以用ALTER DISKGROUP來設定磁盤組的DISK_REPAIR_TIME屬性,可以是分鐘,也可以是小時,例如4.5小時或270分鐘,例如:
- ALTER DISKGROUP dg01 SET ATTRIBUTE 'disk_repair_time' = '4.5h'
- ALTER DISKGROUP dg01 SET ATTRIBUTE 'disk_repair_time' = '270m'
在你修復磁盤後,運行ALTER DISKGROUP DISK ONLINE這條SQL語句可以使磁盤組恢復到聯機狀態,新的讀寫操作都可以正常進行了,這條語句也觸發把磁盤維修期間內更改的extent從磁盤組冗余的數據重新同步到剛才失效的這些磁盤中。