教你如何成為Oracle 10g OCP - 第十六章 ASM管理

tolywang發表於2011-08-10
 
---  基礎知識
1. 常見普通檔案系統型別瞭解
ext2
ext2檔案系統是為解決ext檔案系統的缺陷而設計的可擴充套件、高效能的檔案系統,稱為
二級擴充套件檔案系統,是Linux系統中標準的檔案系統,支援256個位元組的長檔名,檔案
存取效能比ext有很大的提高。
 
ext3
ext3檔案系統是ext2的升級版本,相容ext2。與ext2檔案系統相比,ext3增加了檔案
系統日誌記錄功能,稱為日誌式檔案系統,是目前Linux預設採用的檔案系統。由於具
有了日誌功能,當因斷電或其他異常事件而非正常關機時,重啟系統後作業系統會根據
檔案系統的日誌,快速檢測並恢復檔案系統到正常的狀態,提高資料的安全性。
 
MS-DOS
這是DOS、Windows和一些OS/2計算機使用的檔案系統。對於MS-DOS檔案系統,檔名
長度不能超過8個字元,副檔名不能超過3個字元。
備註:  OS/2 allows computers to handle several tasks at once, making them
faster and more efficient than ever.
VFAT
這是Windows 9x、Windows XP使用的擴充套件的DOS檔案系統,增加對長檔名的支援。
 
ISO9660
這是一種針對ISO9660標準的CD-ROM檔案系統,允許使用者在PC、Mac和其他主要計算機
平臺上讀取CD-ROM檔案。幾乎所有帶有CD-ROM的計算機都可以從ISO9660檔案系統讀取檔案。
 
NFS
網路檔案系統,這是用於存取遠端計算機硬碟的檔案系統。
 
SWAP
這是一種特殊的分割槽,用於在記憶體和硬碟間交換資料的檔案系統。
 
NTFS
這是Windows NT檔案系統,Windows 2000/XP及以後的作業系統都支援該檔案系統。
 

2. 常見叢集檔案系統型別瞭解
GFS:全域性檔案系統
GFS是應用最廣泛的叢集檔案系統。它是由紅帽公司開發出來的,允許所有叢集
節點並行訪問。後設資料通常會儲存在共享儲存裝置或複製儲存裝置的一個分割槽裡。
OCFS:甲骨文叢集檔案系統
從概念上來說,OCFS與GFS非常相似,現在OCFS2已經被應用於Linux系統之中。
VMFS:VMware的虛擬計算機檔案系統
VMFS是ESX伺服器用來允許多個伺服器訪問同一個共享儲存裝置的叢集檔案系統。
這樣就可以實現虛擬機器在不同伺服器之間的無縫遷移,因為源伺服器和目標伺服器
都可以訪問同一個儲存裝置。日誌是分散式的,ESX伺服器之間也不會出現單節點故障。
Lustre:Sun的叢集分散式檔案系統。
Lustre是專門用於包含數千個節點的大型叢集的分散式檔案系統。Lustre已經
支援Linux系統,但是高速計算環境之外的應用程式是有限的。
 
16.1  ASM的概念
ASM :  Automatic Storage Management 
ASM 是 Oracle 資料庫 10g 中一個非常出色的新特性,它以平臺無關的方式提供了文
件系統、邏輯卷管理器以及軟體 RAID 等服務。ASM 可以條帶化和映象磁碟,從而實現
了在資料庫被載入的情況下新增或移除磁碟以及自動平衡 I/O 以刪除“熱點”。
 
ASM 不是一個通用的檔案系統,並只能用於 Oracle 資料檔案、重做日誌以及控制檔案。
ASM 中的檔案既可以由資料庫自動建立和命名(透過使用 Oracle 管理檔案特性),也
可以由 DBA 手動建立和命名。由於作業系統無法訪問 ASM 中儲存的檔案,因此對使用
ASM 檔案的資料庫執行備份和恢復操作的唯一途徑就是透過恢復管理器 (RMAN)。
 
ASM 作為單獨的 Oracle 例項實施,只有它在執行時其他資料庫才能訪問它。在 Linux 上,
只有執行 OCSSD 服務(由 Oracle 通用安裝程式預設安裝)才能使用 ASM。ASM 需要的
記憶體不多:對大多數系統,只需 64 MB。
 
用於替代三方的卷管理器和檔案系統,結合了裸裝置的快速IO和OMF檔案的方便管理這兩個優點。

--------------------------------------------------------- 

1、UNIX 或者LINUX 作業系統上安裝邏輯卷管理器(LVM) 透過LVM將多個磁碟(PV)做成
卷組(VG),  在卷組上劃分邏輯卷(logical volume), 在邏輯捲上建立檔案系統 將檔案系
統掛載到某個目錄下面, 我們可以把檔案放在該目錄下。
2、windows 將磁碟劃分成不同的分割槽, 分割槽上建立檔案系統, 上面的都是透過檔案系統
對空間進行管理,軟體透過檔案系統來訪問儲存空間
3、裸裝置:不透過檔案系統,而是直接由Oracle 資料庫例項來讀寫磁碟,這個空間是
誰也不管理的,只有oracle 自己併發訪問,oracle 有併發機制,檔案系統就不能做到,
對檔案系統來說,管理檔案相對容易,檔案系統層次清晰,但不能支援併發,速度慢;
對裸裝置來說,管理檔案相對困難,效能好(繞過檔案系統快取,直接由資料庫進行讀寫)
,一旦在裸裝置上建立檔案以後,檔名稱和大小都不能改變。
ASM, 即自動儲存管理,它是自Oracle10g 這個版本推出的新功能。這是Oracle
提供的一個卷管理器,它結合了檔案系統和裸裝置的優點,資料庫在讀寫檔案時,
類似裸裝置,繞過作業系統及檔案系統,直接由ORACLE管理檔案,但同時,ASM
管理的檔案可修改檔名及大小,允許動態擴充套件及收縮,ASM具有類似檔案系統
的特性。

--------------------------------------------------------- 
ASM 組成: ASM例項和ASM磁碟組
ASM磁碟組由多塊磁碟組成,Oracle磁碟組中只能存放Oracle相關檔案,包括資料檔案,
控制檔案,聯機日誌檔案等。
對ASM磁碟組的管理,包括建立,修改,刪除ASM磁碟組的工作,由ASM例項完成。

--------------------------------------------------------- 
ASM帶來的好處:
1. ASM是跨平臺的,主流硬體平臺都可以使用,管理方式一致。
2. 資料均勻分佈在磁碟組裡所有的磁碟上,實現了檔案級別的條帶化,提高了讀取
和寫入的資料的效能。
3. 提供了多重冗餘級別 ,保證資料安全。
4. 能支援線上磁碟更換。新增或刪除磁碟後,自動重新分佈資料,這個過程叫rebalance.
備註:
檔案級別的條帶化:  當資料檔案被建立在這個磁碟組上時,檔案的extents將均衡的分佈
在組中的多個磁碟上,這樣不論是讀取還是寫入,IO效能都是有很大提高的,ASM會自動
檢測各個磁碟的狀況,進行rebalance,避免熱點磁碟的產生,只需關心檔案進入哪個磁
盤組,具體的他怎麼分佈,無須干預 
線上磁碟更換:
如果你想用一個新的磁碟替換磁碟組中某個老化的磁碟,你可以先刪除舊的再新增新的,
但ORACLE推薦的做法是兩個動作同時進行。
--------------------------------------------------------- 

ASM磁碟組:
磁碟組是 oracle 預設的管理單元,一個磁碟組包括若干塊磁碟, 
1、ASM磁碟組可以包含多個磁碟
2、ASM磁碟中可以包含多個檔案,多個檔案也可以打散放在多個磁碟上,
   因此磁碟和檔案是多對多的關係
3、一個ASM磁碟被分成多個AU(allocation unit),每個AU 大小是1M,一個Oracle
資料塊一定放在一個 AU中,不會跨多個AU,一個AU 則由多個物理磁碟塊組成,AU
是ASM進行擴張和收縮時的最小單位 (一個windows 系統預設系統塊是4K)
 
--------------------------------------------------------- 
ASM例項 :
ASM例項用於管理後設資料,這些後設資料是資料庫例項在訪問讀寫ASM檔案所需的資訊。
資料庫例項會直接開啟ASM磁碟組,從中讀取ASM檔案,與ASM例項通訊只是為了獲得
這些ASM磁碟及連線到ASM磁碟的方法。
 
--------------------------------------------------------- 
ASM體系結構:
ASM例項後臺程式: RBAL, ARB0, GMON .
RBAL: 協調磁碟組內不同磁碟之間的rebalance工作,rebalance指資料在不同磁碟
間轉移。
ARB0-ARBA: 用來實際完成rebalance工作,可多個程式併發。
GMON:  監控磁碟組內有關後設資料的維護操作,Diskgroup monitor。
 
使用ASM儲存的資料庫例項也有2個新的程式:
RBAL;  用於開啟磁碟組裡的磁碟,透過DBWn將資料寫入開啟的磁碟中去。
ASMB: 在第一次訪問ASM檔案時動態建立。它作為前臺程式連入ASM例項,從而
使資料庫例項和ASM例項之間建立了一個連線通道。透過這個通道,定期在
兩個例項間傳遞資訊,並確保兩個例項都正常工作。同時ASMB程式會訪問
group services, 從中獲得ASM例項管理的磁碟組的資訊,當資料庫例項要
向某磁碟組寫入資料時,透過group services, 資料庫例項就能知道該磁碟
組是由哪個ASM例項所管理的以及連線到該磁碟組的資訊,最後透過RBAL開啟
該磁碟組,資料庫例項一次只能連線到一個ASM例項上,所以只存在一個ASMB
程式.
Group Services:  用來註冊ASM例項所管理的磁碟組,以及連線磁碟組的資訊,
當一個ASM例項與一個磁碟組相關聯時,這個過程叫做mount磁碟組,它會將
磁碟組及磁碟組的連線字串註冊到group services 中。

資料例項只能與其在同一臺主機上的ASM例項通訊,如果當前主機上有多個資料
庫,這個資料庫可以共享一個ASM例項。
--------------------------------------------------------- 
 
 

16.2  建立ASM例項
可以使用dbca建立ASM例項,ASM例項也需要引數檔案spfile.
DBCA之後選擇配置ASM選項,以root身份執行localconfig指令碼是用來建立Group
Services .
ASM例項中的spfile:
instance_type='asm'
asm_power_limite=1 預設為1,表示ASM磁碟組在進行rebalance時的速度,取值
從1到11,1表示最小,對前臺使用者影響最小,但速度慢,11相反。一般在做磁碟
更換後都需要更改此引數為5或6,使rebalance更快。
large_pool_size; 必須定義,至少為1M. 

ASM例項的啟動和關閉
建立完ASM例項以後,我們可以對ASM例項進行啟動和關閉,啟動過程分為nomount和
mount.
nomount: 讀取spfile,根據引數定義啟動ASM例項。
mount  : 將初始化引數asm_diskgroup 所定義的磁碟mount起來。
$export ORACLE_SID=+ASM
$sqlplus / as sysdba
SQL> startup
但是在Oracle11g之後,如果需要管理ASM,需要以sysasm 角色登入。
$export ORACLE_SID=+ASM
$sqlplus / as sysasm 
SQL> startup

也可以nomount後透過手工mount磁碟組。
SQL> alter diskgroup RECOVERYDEST mount;

關閉ASM例項和關閉資料庫例項一樣使用shutdown .一般如果資料庫例項正在
使用ASM例項,非abort時關閉不了的。
如果以shutdown abort關閉ASM例項,那麼會先關閉連線在ASM例項中的資料庫
例項,然後再關閉ASM例項。
對於單例項ASM來說,如果ASM例項異常中斷或shutdown abort, 或startup force ,
那麼開啟的時候,會讀取磁碟組裡的日誌檔案,恢復ASM例項崩潰的資料,對於
多例項的ASM叢集來說,如果其中一個例項崩潰,其他ASM例項會負責恢復此ASM
例項的資料。
 
 
 
16.3  管理ASM磁碟組
ASM磁碟組將每塊磁碟分割為多個大小為1M的單元,這叫分配單元(AU)。對磁碟組
裡面的資料檔案來說,ASM將資料檔案分割為大小為1M的塊(chunk),並將這些chunk
均勻的分佈在所有磁碟,這叫做coarse striping(粗粒度條帶);  對於資料庫中的
redo log及controlfile,因為檔案較小,且需要較快的訪問速度,ASM將他們分割
為128KB的chunk, 這叫做fine-grained striping(細粒度條帶), 一個AU(1M)會
放多個128KB的chunk,  這樣一次I/O就會分割為多個更小的I/O, 並行完成。
ASM磁碟組組中的磁碟大小及轉速應該一致,ASM磁碟組的個數不應該過多,2個就
夠用了,一個用於儲存資料,一個用於flash recovery area .
可以在邏輯上將磁碟組劃分為多個故障組(Failure Group). 這裡要引入磁碟組的
另外一個特性:映象。 注意映象是在AU級別完成的,而不是檔案級別的映象。有
三種不同的映象級別: External Redundancy, Normal , High .
External Redundancy:   不在ASM磁碟中提供映象功能,如果有硬體冗餘,那麼
可設定此項。
Normal Redundancy:   提供雙重映象功能,對於檔案裡的每個AU都會存在該AU的
一個副本。
High Redundancy:   提供三重映象功能,對於檔案裡的每個AU都會存在該AU的
兩個副本。

ASM映象的規則:  不會將AU(稱為主AU)與他的映象副本放在同一個故障組裡。、
ASM映象針對AU級別進行,比如一個檔案有6個AU, 磁碟組定義了兩重映象,假設
P1-P6代表主AU, M1-M6代表映象AU, 那麼failuer group1 中3個磁碟(假設3個)
存放可能分別是(P1,M6),(P2,M5),(P3,M4),而failuer group2 中3個磁碟
存放可能分別是(M1,P4),(M2,P5),(M3,P6),

我們不能直接刪除磁碟組,當故障組中最後一塊磁碟被刪除以後,該故障組被刪除。
ASM支援熱插拔磁碟,當我們向磁碟組中加入磁碟的時候,ASM會自動將磁碟組中
每塊磁碟上取出部分AU, 寫入新加入的磁碟,使所有磁碟含有資料大致相同,
當我們從磁碟組中刪除磁碟時,同樣被刪除磁碟中的AU會被平均分配到其他磁碟
,這個過程叫做再平衡(rebalance)
Rebalance :  Reblance的過程自動進行,需要我們設定asm_power_limite的值,
調整速度。

ASM中沒有資料字典資訊,ASM是透過物理磁碟的頭部記錄後設資料,描述了每個磁碟
屬於哪個磁碟組及故障組的資訊。 ASM的每塊磁碟都是自我描述的。
對於磁碟組的操作,可以透過SQL或database control來完成。
$export ORACLE_SID=+ASM
$sqlplus / as sysasm 
SQL> create diskgroup diskgroup1 normal redundancy
     failgroup  fg1 disk  '/dev/raw/raw1  name Disk1 ,
                          '/dev/raw/raw2  name Disk2
     failgroup  fg2 disk
                         '/dev/raw/raw6  name Disk6  ;
常用的還有如下命令;
SQL> alter diskgroup diskgroup1 dismount;
SQL> alter diskgroup all dismount;
SQL> alter diskgroup diskgroup1 mount;
SQL> alter diskgroup all mount;
在刪除磁碟組前,必須要先將要刪除的磁碟組mount起來,然後使用下面
的命令刪除它:
SQL> drop diskgroup diskgroup1 including contents ;
SQL> create diskgroup diskgroup1 normal redundancy
     failgroup  fg1 disk 
                         '/dev/raw/raw3  name Disk3
     failgroup  fg2 disk
                         '/dev/raw/raw4  name Disk4  ;
將raw5加入到fg1中;
SQL> alter diskgroup diskgroup1 add failgroup fg1 disk '/dev/raw/raw5'
name Disk5 ;
將磁碟從磁碟組裡刪除:
SQL> alter diskgroup diskgroup1 drop  disk  Disk5 ;

一般我們建議同時做磁碟加入及刪除,這樣只需要進行一次rebalance即可。
SQL> alter diskgroup diskgroup1 rebalance power 8 ;
SQL> alter diskgroup diskgroup1
     drop  disk  Disk5 
     add failgroup fg1 disk '/dev/raw/raw8' name Disk8 ;
 
 
 

16.4  管理ASM檔案
ASM檔案多是OMF檔案,建立時只需要寫磁碟組名即可建立,當然也可以自己名命名。
SQL> create tablespace test datafile '+diskgroup1' size 200M ;
這樣建立的檔案目錄為 +diskgroup1/SID/datafile/
如果我們使用別名方式建立ASM檔案的話,檔案就不是OMF了,在刪除檔案的時候,
Oracle不會從物理上刪除該檔案。建議建立檔案時不要採用這種方式。
SQL> create tablespace test datafile '+diskgroup1/data/test01.dbf' size 200M ;

 
$export ORACLE_SID=+ASM
$sqlplus / as sysasm
查詢檔案使用資訊  v$asm_file
在ASM中建立聯機日誌檔案
SQL> alter database add logfile group 4 ('+diskgroup1','+diskgroup2') size 100M;
 

16.5  遷移ASM  
因為ASM不能使用普通的作業系統命令訪問,所以只能透過RMAN進行遷移。
 
 
16.6  ASMCMD命令 
為了更加方便檢視ASM磁碟中的檔案,Oracle在10GR2中提供了一個工具ASMCMD.
$export ORACLE_SID=+ASM
$asmcmd
ASMCMD> ls
 

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

相關文章