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