Oracle ASM管理及维护

一、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。第二个进程负责执行实际的重新平衡分配
单元移动操作。

二、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 安装

三、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
 

转载于:https://my.oschina.net/peakfang/blog/2874396

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值