ASM(Automatic Storage Management)是Oracle10g R2中爲了簡化Oracle數據庫的管理而推出來的一項新功能,這是Oracle本身提供的卷管理器,主要用於替代操做系統所提供的LVM,它不只支持單實例,同時對RAC的支持也是很是好。linux
ASM是Oracle 10g R2中爲了簡化Oracle數據庫的管理而推出來的一項新功能,這是Oracle本身提供的卷管理器,主要用於替代操做系統所提供的LVM,它不只支持單 實例,同時對RAC的支持也是很是好。ASM能夠自動管理磁盤組並提供有效的數據冗餘功能。使用ASM(自動存儲管理)後,數據庫管理員再也不須要對 ORACLE中成千上萬的數據文件進行管理和分類,從而簡化了DBA的工做量,可使得工做效率大大提升。算法
ASM它提供了以平臺無關的文件系統、邏輯卷管理以及軟RAID服務。ASM能夠支持條帶化和磁盤鏡像,從而實現了在數據庫被加載的狀況下添加或移除磁盤以及自動平衡I/O以刪除「熱點」。它還支持直接和異步的I/O並使用Oracle9i中引入的Oracle數據管理器 API(簡化的I/O系統調用接口)。數據庫
ASM是作爲單獨的Oracle實例實施和部署,而且它只須要有參數文件,不須要其它的任何物理文件,就能夠啓動ASM實例,只有它在運行的時候,才能被其它數據訪問。在Linux平臺上,只有運行了OCSSD服務(Oracle安裝程序默認安裝)了才能和訪問ASM。安全
優勢:架構
(1)將I/O平均分部到全部可用磁盤驅動器上以防止產生熱點,而且最大化性能。在ASM中是DiskGroup概念與LVM卷組管理中VG的概念相似,也是將多塊物理磁盤總成一個磁盤組,一個磁盤組中的數據是均勻分佈在各個物理磁盤上的。手工添加和刪除物理磁盤時,數據會自動均衡(ReBalance);oracle
(2) 配置更簡單,而且最大化推進數據庫合併的存儲資源利用;數據文件都存儲在DiskGroup中(簡稱DG),管理相對簡單。異步
(3) 內在的支持大文件,支持BIGFILE文件。性能
(4) 在增量增長或刪除存儲容量後執行自動聯繫重分配,即自動ReBalance;spa
(5) 維護數據的冗餘副本以提升可用性;操作系統
(6) 支持10g、11g的數據存儲及RAC的共享存儲管理,相對來講11g的ASM更穩定,10g中有些BUG。
(7) 支持第三方的多路徑軟件;如powerpath(aix)、mutlipath(linux)
(8) 使用OMF(Oracle Managed Files)方式來管理文件。
缺點:
(1) 數據庫中新增一個ASM實例,維護上須要對ASM進行管理,增長了維護成本;
(2) ASM相對來講是個黑匣子,若是出問題,恢復起來也是個難點。
ASM使用獨特的鏡像算法:不鏡像磁盤,而是鏡像盤區。做爲結果,爲了在產生故障時提供連續的保護,只須要磁盤組中的空間容量,而不須要預備一個熱備(hot spare)磁盤。不建議用戶建立不一樣尺寸的故障組,由於這將會致使在分配輔助盤區時產生問題。ASM將文件的主盤區分配給磁盤組中的一個磁盤時,它會將該盤區的鏡像副本分配給磁盤組中的另外一個磁盤。給定磁盤上的主盤區將在磁盤組中的某個夥伴磁盤上具備各自的鏡像盤區。ASM確保主盤區和其鏡像副本不會駐留在相同的故障組中。磁盤組的冗餘能夠有以下的形式:雙向鏡像文件(至少須要兩個故障組)的普通冗餘(默認冗餘)和使用三向鏡像(至少須要3個故障組)提供較高保護程度的高冗餘。一旦建立磁盤組,就不能夠改變它的冗餘級別。爲了改變磁盤組的冗餘,必須建立具備適當冗餘的另外一個磁盤組,而後必須使用RMAN還原或DBMS_FILE_TRANSFER將數據文件移動到這個新建立的磁盤組。
三種不一樣的冗餘方式以下:
(1)外部冗餘(external redundancy)--經常使用
表示Oracle不幫你管理鏡像,功能由外部存儲系統實現,好比經過RAID技術;有效磁盤空間是全部磁盤設備空間的大小之和。
(2)默認冗餘(normal redundancy)
表示Oracle提供2份鏡像來保護數據,有效磁盤空間是全部磁盤設備大小之和的1/2 (使用最多)
(3)高度冗餘(high redundancy)
表示Oracle提供3份鏡像來保護數據,以提升性能和數據的安全,最少須要三塊磁盤(三個failure group);有效磁盤空間是全部磁盤設備大小之和的1/3,雖然冗餘級別高了,可是硬件的代價也最高。
ASM實例除了傳統的DBWR,LGWR,CKPT,SMON,PMON等進程還包含以下四個新後臺進程:
(1) RBAL:負責協調磁盤組的從新平衡活動(負責磁盤組均衡)
(2) ARB0-ARBn:在同一時刻能夠存在許多此類進程,它們分別名爲ARB0、ARB1,以此類推,執行實際的從新平衡分配單元移動進程。
(3) GMON:用於ASM磁盤組監控
(4) O0nn 01-10:這組進程創建到ASM實例的鏈接,某些長時間操做好比建立數據文件,RDBMS會經過這些進程向ASM發送信息
ASMB與ASM 實例的前臺進程鏈接,週期性的檢查兩個instance的健康情況。每一個數據庫實例同時只能與一個ASM實例鏈接,所以數據庫只會有一個ASMB後臺進程。如一個節點上有多個數據庫實例,它們只能共享一個ASM實例。
RBAL用來進行全局調用,以打開某個磁盤組內的磁盤。ASMB進程與該節點的CSS守護進程進行通訊,並接收來自ASM實例的文件區間映射信息。ASMB還負責爲ASM實例提供I/O統計數據
CSS集羣同步服務。要使用ASM,必須確保已經運行了CSS集羣同步服務,CSS負責ASM實例和數據庫實例之間的同步。
注意:
ASM實例必需要先於數據庫實例啓動,和數據庫實例同步運行,遲於數據庫實例關閉。ASM 實例和數據庫實例的關係能夠是1:1,也能夠是1:n。若是是1:n,最好爲ASM 安裝單獨的ASM_HOME。
ASM支持datafile,logfiles,control files,archivelogs,RMAN backup sets等自動的數據庫文件管理。
通常來講,一個採用ASM單實例數據庫由兩個DG組成。一個是datadg,另一個是fradg。Datadg主要是存放數據文件,而fradg(flash recovery area)存放archivelog文件,control文件和備份文件等。
視圖名 |
X$基表名 |
描述 |
V$ASM_DISKGROUP |
X$KFGRP |
實施磁盤發現disk discovery和列出磁盤組 |
V$ASM_DISKGROUP_STAT |
X$KFGRP_STAT |
顯示disk group狀態 |
V$ASM_DISK |
X$KFDSK, X$KFKID |
實施磁盤發現disk discovery和列出磁盤以及這些磁盤的使用度量信息 |
V$ASM_DISK_STAT |
X$KFDSK_STAT,X$KFKID |
列出磁盤和其使用度量信息 |
V$ASM_FILE |
X$KFFIL |
列出ASM文件也包括了元數據信息 |
V$ASM_ALIAS |
X$KFALS |
列出了ASM的別名,文件和目錄 |
V$ASM_TEMPLATE |
X$KFTMTA |
列出可用的模板和其屬性 |
V$ASM_CLIENT |
X$KFNCL |
列出連接到ASM的DB實例 |
V$ASM_OPERATION |
X$KFGMG |
列出rebalancing重平衡操做 |
|
X$KFKLIB |
可用的ASMLIB路徑 |
|
X$KFDPARTNER |
列出Disk-partners關係 |
|
X$KFFXP |
全部ASM文件的extent map |
|
X$KFDAT |
全部ASM Disk的extent列表 |
|
X$KFBH |
描述ASM cache |
|
X$KFCCE |
ASM block的鏈表 |
V$ASM_ATTRIBUTE(new in 11g) |
X$KFENV(new in 11g) |
Asm屬性,該X$基表還顯示一些隱藏屬性 |
V$ASM_DISK_IOSTAT(new in 11g) |
X$KFNSDSKIOST(new in 11g) |
I/O統計信息 |
|
X$KFDFS(new in 11g) |
|
|
X$KFDDD(new in 11g) |
|
|
X$KFGBRB(new in 11g) |
|
|
X$KFMDGRP(new in 11g) |
|
|
X$KFCLLE(new in 11g) |
|
|
X$KFVOL(new in 11g) |
|
|
X$KFVOLSTAT(new in 11g) |
|
|
X$KFVOFS(new in 11g) |
|
|
X$KFVOFSV(new in 11g) |
|
http://www.jb51.net/article/43527.htm
http://blog.csdn.net/tianlesoftware/article/details/5314541
http://docs.oracle.com/cd/B28359_01/server.111/b31107/asmcon.htm#OSTMG036