oracle asm自动存储使用及管理说明(上)

     oracle rac使用越来越广泛,对asm使用也越来越多,下面就asm的使用进行说明,主要是针对linux应用方面的
一、创建磁盘组

1、建立裸设备
   
    --redhat4的使用
    首先划分lun vg00,然后在lun上面创建lv      
     # lvcreate -L 5000M -n ora_asm1 vg00
     # lvcreate -L 5000M -n ora_asm2 vg00
     # lvcreate -L 5000M -n ora_asm3 vg00
     # lvcreate -L 5000M -n ora_asm4 vg00
     # lvcreate -L 5000M -n ora_asm5 vg00

     绑定网卡

     # raw  /dev/raw/raw1  /dev/vg00/ora_asm1
     # raw  /dev/raw/raw1  /dev/vg00/ora_asm2
     # raw  /dev/raw/raw1  /dev/vg00/ora_asm3
     # raw  /dev/raw/raw1  /dev/vg00/ora_asm4
     # raw  /dev/raw/raw1  /dev/vg00/ora_asm5

   在/etc/sysconfig/rawdevices中添加如下:

     /dev/raw/raw1  /dev/vg00/ora_asm1
     /dev/raw/raw1  /dev/vg00/ora_asm2
     /dev/raw/raw1  /dev/vg00/ora_asm3
     /dev/raw/raw1  /dev/vg00/ora_asm4
     /dev/raw/raw1  /dev/vg00/ora_asm5
   
      更改raw权限
   # chown oracle:dba /dev/raw/raw*
   # vi /etc/init.d/app
       chown oracle:dba /dev/raw/raw*
   # ln -s /etc/init.d/app /etc/rc5.d/S99mapp
   
     --在redhat5、6中,使用udev的方式
     如果没有使用多路径,一般就如下就行了
[root@mytest1 rules.d]# pwd
/etc/udev/rules.d
[root@mytest1 rules.d]# more 99-oracle-asmdevices.rules
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c291777955ad7db711db64828c6e", NAME="OCR1
", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29a84d75cb069f392fabe063c6e", NAME="OCR2
", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c29780f67522e980b44dfad5a8a0", NAME="DATA
1", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="36000c296005896610f2a8a1f156b3688", NAME="OCR3
", OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@mytest1 rules.d]# start_udev
Starting udev: [  OK  ]

 


2、配置ASM
   # su - oracle
   # export ORACLE_SID=+ASM
   # dbca
       选择Configure Automatic Storage Management

3、ASM参数文件信息
  
  #strings $ORACLE_HOME/dbs/spfile+ASM.ora
        +ASM.asm_diskgroups='ASM_DISKGROUP'#Manual Mount
        *.asm_diskgroups='ASM_DISKGROUP'
        *.background_dump_dest='/home/oracle/admin/+ASM/bdump'
        *.core_dump_dest='/home/oracle/admin/+ASM/cdump'
        *.instance_type='asm'
        *.large_pool_size=12M
        *.remote_login_passwordfile='SHARED'
        *.user_dump_dest='/home/oracle/admin/+ASM/udump'

   在$ORACLE_HOME/dbs存在两个文件:
   1)  ab_+ASM.dat
       
        SQL>shutdown
        $ rm ab_+ASM.dat
        SQL>startup
       重新生成该文件,RDBMS连接ASM实例时候,使用该文件确定相关的环境信息。如果文件删除,RDBMS不能连接ASM.

   2) hc_+ASM.dat
   
       EM使用该文件进行健康监控,如果该文件删除,健康检查信息将不准确。

4、进程检查
 
    # ps -ef |grep asm
    # crsctl check css
    # ps -ef |grep d.bin 


二、asm磁盘信息查询

ASM 信息查询

1、查看diskgroup空间大小,以及ASM状态

SQL> select name, total_mb, free_mb, usable_file_mb, state
           from v$asm_diskgroup;

NAME                             TOTAL_MB    FREE_MB   USABLE_FILE_MB   STATE
------------------------------ ------------------ --------------- -------------------------- -----------
ASM_DISKGROUP             25120      24963           9969                         MOUNTED


2、进程数计算
SQL>show parameter process
   processes=40

计算公式=25+(10+最大数量并行数据文件创建)*RDMS连接ASM数量
                = 25+(10+5)*1
               =40

3、显示SGA值
SQL>show sga

4、ASM控制文件
SQL>show parameter control
control_files =  /home/oracle/app/ora10g/dbs/cntrl+ASM.dbf
该文件在目录中不存在,在ASM实例中没有任何意义

5、查看管理ASM用户

SQL> select * from v$pwfile_users;

USERNAME                       SYSDB   SYSOP
--------------------------------- ------------ ----------
SYS                                        TRUE    TRUE


6、查看diskgroup中各个磁盘状态
SQL> select name, mount_status from v$asm_disk;

NAME                                           MOUNT_S
----------------------------------        -----------------
ASM_DISKGROUP_0004             CACHED
ASM_DISKGROUP_0003             CACHED
ASM_DISKGROUP_0002             CACHED
ASM_DISKGROUP_0001             CACHED
ASM_DISKGROUP_0000             CACHED

v$asm_disk_stat与v$asm_disk类似
v$asm_file显示ASM文件
v$asm_operation:显示ASM重新负载平衡操作过程

 

三、asm磁盘删除\添加

1、删除disk

SQL> select group_number, name from v$asm_diskgroup;

GROUP_NUMBER         NAME
---------------------------- ------------------
           1                         ASM_DISKGROUP

SQL> select path, name from v$asm_disk where group_number=1;
PATH                           NAME
------------------------------ ------------------------------
/dev/raw/raw5                  ASM_DISKGROUP_0004
/dev/raw/raw4                  ASM_DISKGROUP_0003
/dev/raw/raw3                  ASM_DISKGROUP_0002
/dev/raw/raw2                  ASM_DISKGROUP_0001
/dev/raw/raw1                  ASM_DISKGROUP_0000

SQL>alter diskgroup ASM_DISKGROUP drop disk asm_diskgroup_0004;
SQL>alter diskgroup ASM_DISKGROUP drop disk asm_diskgroup_0003;

2、创建新的diskgroup
SQL> select name, path, mode_status, state from v$asm_disk;

NAME                           PATH                           MODE_ST STATE
------------------------------ ------------------------------ ------- --------
                                                          /dev/raw/raw6                  ONLINE  NORMAL
                                                          /dev/raw/raw5                  ONLINE  NORMAL
                                                           /dev/raw/raw4                  ONLINE  NORMAL
ASM_DISKGROUP_0002             /dev/raw/raw3                  ONLINE  NORMAL
ASM_DISKGROUP_0001             /dev/raw/raw2                  ONLINE  NORMAL
ASM_DISKGROUP_0000             /dev/raw/raw1                  ONLINE  NORMAL

SQL>create diskgroup dg1  external redundancy disk '/dev/raw/raw4';

SQL> select name, state, type, total_mb, free_mb from v$asm_diskgroup;

NAME                                STATE            TYPE       TOTAL_MB    FREE_MB
------------------------------ ----------- ------ ---------- ----------
ASM_DISKGROUP        MOUNTED     NORMAL      15072      14919
DG1                                  MOUNTED     EXTERN          5024       4974

SQL>drop diskgroup dg1;

SQL> create diskgroup dg1 normal redundancy
  2  failgroup f1 disk '/dev/raw/raw4'                       
  3  failgroup f2 disk '/dev/raw/raw5';

alter diskgroup sysdg add failgroup DATA1 disk 'ORCL:ASMDSKA' add failgroup data2 disk 'ORCL:ASMDSKB';

select a.group_number,a.name,b.name,b.path,b.failgroup from v$asm_diskgroup a,v$asm_disk b where a.group_number = b.group_number;

select * from v$asm_operation;

在创建diskgroup有三个选项:external, normal和high redunancy,具体在使用中,如果使用中高端存储设备,通常磁盘镜像在硬件级别就完成了,所以在创建diskgroup采用external,normal则至少需要两个磁盘,high则是三个磁盘,通常用于低端存储设备。

3、添加disk到现有的diskgroup
SQL>alter diskgroup ASM_DISKGROUP add disk
          '/dev/raw/raw6' name ASM_DISKGROUP_0003;


删除failure group 下的所有disk
SQL>alter diskgroup dg1 drop disks in failgroup f2;
检查disk状态,f2下的磁盘处于hung状态
SQL> select group_number,disk_number,name,failgroup,state from v$asm_disk;

4、重新设置disk大小
alter diskgroup asm_diskgroup resize disk ASM_DISKGROUP_0001 size 800m;

5、将diskgroup进行dismount和mount

SQL> select name, state from v$asm_diskgroup;
NAME                                         STATE
------------------------------------- ---------------
ASM_DISKGROUP                                  MOUNTED
DG1                                            MOUNTED

SQL>alter diskgroup dg1 dismount;
SQL> alter diskgroup asm_diskgroup dismount;

SQL> select name, state from v$asm_diskgroup;
NAME                                         STATE
------------------------------------- ---------------
ASM_DISKGROUP                  DISMOUNTED
DG1                                            DISMOUNTED

SQL> alter diskgroup dg1 mount;
SQL>alter diskgroup  asm_diskgroup mount;

SQL> select name, state from v$asm_diskgroup;
NAME                                         STATE
------------------------------------- ---------------
ASM_DISKGROUP                  MOUNTED
DG1                                            MOUNTEDx`

6、冗余性考虑

        我们在创建diskgroup没有指定failure group, failure group 自动在自己盘重建。但我们要注意指定failure group 时,每个failure group中的盘数量和大小要一致,避免空间浪费。
        在ASM的diskgroup中,第一个被分配的file extents,作为primary extent,其他作为second extents,在10g中,缺省都是先读primary extents,但在11g,我们可以设置prefered read 特性,主要解决了RAC的两个节点中,节点1优先读取primary extent,节点2优先读取second extents,提高I/O性能

7、disk partnership
     在normal和high redundancy diskgroup中,磁盘故障切换备用盘的信息可查询x$kfdpartner.

SQL> select name, disk_number
            from v$asm_disk
            where GROUP_NUMBER=2
            order by 2;

NAME                                         DISK_NUMBER
----------------------------------- -------------------------
ASM_DISKGROUP_0000                       0
ASM_DISKGROUP_0001                       1
ASM_DISKGROUP_0002                       2

SQL> select disk, NUMBER_KFDPARTNER from x$kfdpartner;

      DISK        NUMBER_KFDPARTNER
----------------- -----------------------------------
         0                 1
         0                 2
         1                 0
         1                 2
         2                 0
         2                 1
可以看到磁盘1的parner是磁盘2和磁盘3.

四、条带化

        ASM的条带化有两种:coarse和fine-gained。AU是最小分配单元,缺省是1M,每个AU缺省由8个128K条带空间组成。
      
         coarse条带化中一个extent映射为一个AU,缺省是1M大小,比如4个磁盘
#0~#3,分配extent时候,第一个AU分配给disk0,第二个AU给disk1,依此顺推。所以该条带化适合连续的I/O读写,比如全表扫描表。

        Fined-gained条带化,一个AU中的8个128K条带空间,平均打散在磁盘上,也就是说,4个磁盘,1个AU是平均分布在4个磁盘,每个磁盘2个128K。适合于对数据读写延迟比较敏感的文件。如redo日志,控制文件,spfile等。

        10g版本AU和条带设置参数:_asm_ausize和_asm_stripesize,11g版本数据库在创建diskgroup时候,可以设置attribute 'au_size' = '16M'。

五、Rebalance

        从diskgroup中添加或删除disk时候,将触发RBAL进程创建rebalance计划,并计算执行Rebalance所需要时间和工作要求,然后发消息给ASM Reblance (ARBx)进程处理该请求。ARBx进程的数量由参数ASM_POWER_LIMIT决定。COD (Continuting Operation Directory)用于记录rebalances情况。如果rebalance失败,在重启instance时候,将从COD读取记录,重新启动rebalance。ARBx进程对每个extents进行locked, relocated和unlocked操作,执行过程中可以参考v$asm_operation视图。

     ASM_POWER_LIMIT范围是0~11,0:表示不进行rebalance,值越大, rebalance速度越快。

       在进行rebalance时候要注意以下几点:
    
      1、每个disk的大小必须是相同,如果存在一个小盘,因为rebalance将对每个盘的分配相同比例的空间,可能造成rebalance时候空间不足。

      2、rebalance仅仅在diskgroup发生改变时候才进行的,并不是定时执行

      3、如果磁盘大小一样,仍然没有进行rebalance,需要查看asm_power_limit

      4、如果rebalance执行过程中,server宕机,重启后会自动进行rebalance

      5、影响rebalance速度因素有很多,最重要是I/O子系统

      6、如果执行过程中,空闲空间不足,造成rebalance失败,将出现ORA-15041错误,需要再添加disk,。

      7、如果需要频繁添加disk,每一次都可能造成数据的频繁移动,为提高效率,最好批量添加。

     从老的磁盘阵列切换和迁移disk到新的磁盘阵列命令如下:

SQL> alter diskgroup add disk '/dev/xxx/xxx'
           drop disk [disk_name] rebalance power 8;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29371470/viewspace-1259096/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29371470/viewspace-1259096/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值