1、ASM概念
ASM(自動存儲管理automatic storage management):
ASM是Oracle 10g R2推出的卷管理器,能夠自動管理磁盤組並提供有效的數據冗餘功能,簡化數據文件的管理和分類。提供
與平臺無關的文件系統、邏輯卷管理以及軟RAID服務,支持條帶化和磁盤鏡像,從而實現了在數據庫被加載的狀況下添加或移除
磁盤以及自動平衡I/O以刪除「熱點」。單獨做爲oracle實例部署,只須要參數文件就能夠啓動,只有它運行時才能被其餘數據訪問。
ASM 磁盤按分配單元(AU) 進行分區,每一個分配單元的大小爲1 MB。分配單元是ASM 分配的最小連續磁盤空間。ASM 不容許跨分配
單元拆分一個Oracle 塊。
使用ASM的好處:
1.配置更簡單,而且最大化推進數據庫合併的存儲資源利用。
2.在增量增長或刪除存儲容量後執行自動聯繫重分配
3.維護數據的冗餘副本以提升可用性。
4.支持10g,11g的數據存儲及RAC的共享存儲管理
5.使用OMF方式來管理文件
6.簡化管理oracle數據庫文件
7.數據分佈到各個磁盤中以平衡負載
8.跨磁盤的集成鏡像
ASM冗餘:
ASM使用獨特的鏡像算法:不鏡像磁盤,而是鏡像分配單元。
ASM支持三種不一樣的冗餘方式:
1.外部冗餘(external redundancy):表示Oracle無論理鏡像,鏡像功能由外部存儲系統實現,如經過RAID技術;有效磁
盤空間是全部磁盤設備空間的大小之和。
2.默認冗餘(normal redundancy):表示Oracle提供2份鏡像來保護數據,有效磁盤空間是全部磁盤設備大小之和的1/2
3.高度冗餘(high redundancy):表示Oracle提供3份鏡像來保護數據,以提升性能和數據的安全,最少須要三塊磁盤(三
個failure group);有效磁盤空間是全部磁盤設備大小之和的1/3。
ASM進程:ASM 實例除了傳統的 DBWR,LGWR,CKPT,SMON,PMON 等進程還包含以下四個新後臺進程:
RBAL:負責協調磁盤組的從新平衡活動(負責磁盤組均衡)。
GMON:用於ASM磁盤組監控。
ARB0-ARBn:在同一時刻能夠存在許多此類進程,它們分別名爲ARB0、ARB1,執行實際的從新平衡分配單元移動進程。
O0nn 01-10:創建到 ASM 實例的鏈接,某些長時間操做好比建立數據文件,RDBMS會經過這些進程向ASM發送信息。
ASMB:與ASM 實例的前臺進程鏈接,週期性的檢查兩個instance的健康情況。一個數據庫實例同時只能與一個ASM實例連
接,所以數據庫只會有一個ASMB後臺進程。如一個節點上有多個數據庫實例,它們只能共享一個 ASM 實例。
CSS:集羣同步服務。要使用ASM,必須確保已經運行了CSS集羣同步服務,CSS負責ASM實例和數據庫實例之間的同步。
ASM與數據庫實例的關係:
每一個數據庫實例同時只能與一個ASM實例鏈接,如一個節點上有多個數據庫實例,它們只能共享一個ASM實例。ASM實例必
需要先於數據庫實例啓動,和數據庫實例同步運行,遲於數據庫實例關閉。ASM 實例和數據庫實例的關係能夠是1:1,也可
以是1:n。若是是1:n,最好爲ASM 安裝單獨的ASM_HOME。ASM支持datafile,logfiles,control files,archivelogs,
RMAN backup sets等可經過OMF方式管理的文件。
每一個使用ASM 的數據庫實例都有兩個新的後臺進程,ASMB 和RBAL。RBAL 負責全局打開磁盤組中的磁盤。數據庫實例啓動時,ASMB
做爲前臺進程鏈接到ASM 實例。
ASM 實例包含兩個新的後臺進程。一個進程負責協調磁盤組的從新平衡活動,稱爲RBAL。第二個進程負責執行實際的從新平衡分配
單元移動操做。node
2、ASM實例安裝配置
1.配置ASMLIB服務
安裝ASM對應版本的軟件包
rpm -Uvh \ oracleasm-support-2.1.8-1.el5 \ oracleasm-2.6.18-164.el5xen-2.0.5-1.el5 \
oracleasmlib-2.0.4-1.el5
設置ASM的所屬用戶grid及組asmadmin,而且設置爲自啓動:
#/etc/init.d/oracleasm configure -i
Default user to own the driver interface [grid]:
Default group to own the driver interface [asmadmin]:
Start Oracle ASM library driver on boot (y/n) [y]: y
Scan for Oracle ASM disks on boot (y/n) [y]: y
服務啓停
[root@node1 oracle]# /etc/init.d/oracleasm stop
[root@node1 oracle]# /etc/init.d/oracleasm start
[root@node1 oracle]# /etc/init.d/oracleasm status
參照 grid infrastructure 安裝算法
3、ASM管理
1.ASM 軟件包安裝狀況
檢查驅動加載狀況:
[root@node1 ~]# lsmod | grep oracleasm
oracleasm 84392 1
檢查oracleasmfs文件系統:
[root@node1 ~]# cat /proc/filesystems | grep oracleasm
[root@node1 ~]# df -a |head -1;df -a | grep oracleasm
查看已建立的ASM磁盤
[root@node1 disks]# ll /dev/oracleasm/disks/
ASM磁盤操做的日誌:
cat /var/log/oracleasm
2.ASM 磁盤管理
將系統配置的磁盤分區
fdisk /dev/sdb (n,p,w,d)
將分區建立爲ASM磁盤
[grid@node1 ~]$/etc/init.d/oracleasm --help
[root@node1 ~]# oracleasm createdisk DISKB01 /dev/sdb1
刪除asm磁盤
[root@node1 ~]# oracleasm deletedisk DISKB01
查看asm磁盤
[root@node1 sbin]# /etc/init.d/oracleasm scandisks
[root@node1 sbin]# /etc/init.d/oracleasm listdisks
[root@node1 sbin]# oracleasm querydisk -p DISKB01
[root@node1 sbin]# oracleasm querydisk /dev/sd*
將磁盤的操做權限付給grid用戶
chmod -R 777 /dev/oracleasm/disks
查看ASM磁盤狀況(sql)ASM 實例沒有數據字典,鏈接此類實例的惟一方法是使用操做系統驗證機制
select group_number,disk_number,mount_status,header_status,mode_status,state,failgroup,
total_mb,free_mb,name,path from v$asm_disk;
查看磁盤,磁盤組狀況
col name format a10
col path format a15
col failgroup format a6
col state format a9
select a.group_number,a.name,b.name,b.failgroup,a.state,b.path from v$asm_diskgroup a,v$asm_disk b where
a.group_number = b.group_number;
3.ASM磁盤組管理
a.使用ASMCA工具建立,修改,刪除ASM磁盤組
b.使用ASM實例的sql命令建立,修改,刪除磁盤組
建立外部冗餘磁盤組(能夠是多塊磁盤,也能夠只是一塊磁盤)
create diskgroup dge external redundancy disk 'ORCL:ASMDISKB01';
create diskgroup dge external redundancy disk 'ORCL:DISKC01','ORCL:DISKC02';
建立普通冗餘磁盤組(至少兩塊磁盤)fg1必須得要
create diskgroup dgn normal redundancy failgroup fg1 disk 'ORCL:ASMDISKB01' name diskb01 failgroup fg2
disk 'ORCL:ASMDISKB02' name diskb02;
建立高冗餘磁盤組(至少三塊磁盤)
create diskgroup dgh high redundancy
failgroup fgh1 disk 'ORCL:DISKC01' name dgh_a
failgroup fgh2 disk 'ORCL:DISKC02' name dgh_b
failgroup fgh3 disk 'ORCL:DISKD01' name dgh_c;
刪除ASM磁盤組
drop diskgroup dgd;
drop diskgroup dgc including contents;
向ASM磁盤組中增長磁盤(用磁盤路徑)
向高冗餘磁盤組中添加磁盤成員(能夠對每一個failgroup增長一塊,也能夠只給某個failgroup增長)
alter diskgroup dgh add failgroup fgh3 disk 'ORCL:DISKD02';
向外部冗餘磁盤組中添加磁盤成員
alter diskgroup dge add disk 'ORCL:DISKC02';
向普通冗餘磁盤組中添加磁盤成員
alter diskgroup dgn add failgroup fg1 disk 'ORCL:ASMDISKB03' name diskb03;
向磁盤組中增長磁盤後,能夠經過如下命令查看同步過程
select group_number,sofar,est_work from v$asm_operation;
show parameter power
添加故障組
alter diskgroup dgn add failgroup fgn3 disk 'ORCL:DISKD01';
刪除磁盤組中的磁盤(用磁盤名)
alter diskgroup dgn drop disk ASMDISKB02;
刪除磁盤時同時添加磁盤,可減小重平衡次數
alter diskgroup dge drop disk DISKC01 add disk 'ORCL:DISKC02';
刪除故障組
alter diskgroup dgn drop disks in failgroup fgn3;
刪除故障組同時添加故障組
alter diskgroup dgn drop disks in failgroup fg3 add failgroup fg4 disk 'ORCL:DISKD01';
中止磁盤從一個磁盤組中刪除
alter diskgroup dg1 undrop disks;
平衡磁盤數據
alter diskgroup dg1 rebalance;
alter diskgroup dg1 rebalance wait; --wait即等到數據平衡結束纔在命令行提示結束
alter diskgroup dg1 rebalance power 11; --加快平衡速度
修改加快同步
alter system set asm_power_limit=10;
中止平衡磁盤數據
alter diskgroup dg1 rebalance power 0;
掛載和卸載磁盤組
alter diskgroup dgn mount;
alter diskgroup dgn dismount;
alter diskgroup dg1 dismount force;
檢測磁盤組一致性
ALTER DISKGROUP dgn CHECK ALL;
4.ASM目錄管理
增長目錄
alter diskgroup dgn add directory '+DGN/datafile';
重命名目錄
alter diskgroup dgn rename directory '+DGN/datafile' to '+DGN/datafiles';
刪除目錄
alter diskgroup dgn drop directory '+DGN/datafiles';
建立目錄後就能夠將文件建立爲本身指定的路徑
create tablespace test datafile '+DGN/dirone/test01.dbf' size 20M;
CREATE TABLESPACE sample DATAFILE '+dgroupA';
5.ASM別名管理
asm文件添加別名
alter diskgroup data add alias '+data/c1/datafile/system01.dbf' for
'+data/c1/datafile/SYSTEM.260.803945885';
asm文件修改別名
alter diskgroup data rename alias '+data/c1/datafile/system01.dbf' to
'+data/c1/datafile/system02.dbf';
asm文件刪除別名
alter diskgroup data drop alias '+data/c1/datafile/system02.dbf';
6.ASMCMD工具
是一個命令行實用程序,可用於輕鬆地查看和操縱ASM 磁盤組中的文件和目錄。該實用程序能夠列出磁盤組
內容、執行搜索、建立和刪除目錄以及顯示空間使用狀況等等,grid用戶下調用asmcmd,可用rm 命令刪除磁盤裏
的文件等。
asmcmd -p 在命令行前顯示當前路徑
du 顯示指定的ASM目錄下ASM文件佔用的全部磁盤空間
lsdg 列出全部磁盤組及其屬性
lsdsk 列出此ASM實例可見的全部磁盤
rm 刪除ASM文件或目錄
remap 修理磁盤上遭到破壞或損壞的一系列物理塊
7.單實例ASM數據庫啓動、關閉過程:
開啓:
確認oracleasm狀態正常
# /etc/init.d/oracleasm status
# oracleasm listdisks
啓動ASM監聽,實例
[grid@node1 ~]$ crsctl start resource -all
$ lsnrctl start
$ sqlplus / as sysasm
startup
啓動oracle數據庫實例
$ sqlplus / as sysdba
startup
關閉:
關閉數據庫
shutdown immediate
關閉ASM實例
shutdown immediate
[grid@node1 ~]$ crsctl stop resource -all
8.ASM實例幾個參數介紹
instance_type=[RDBMS | ASM]
若是是ASM的話,該參數必定要是ASM。
asm_power_limit=[1 - 11]
指定了磁盤自動平衡負載的等級,數字越大,表示自動均衡能力越強。
asm_diskstring
指定了ASM實例啓動時自動尋找磁盤的特徵。如參數設置爲/dev/mapper/*,那麼ASM實例在disk group添加磁盤時
會默認把全部/dev/mapper目錄下的磁盤都顯示出來,默認狀況爲NULL,也就是全部磁盤設備都顯示出來。
asm_diskgroups
指定實例啓動時自動MOUNT的磁盤組。
參考資料:
http://czmmiao.iteye.com/blog/1743998
sql