zoukankan      html  css  js  c++  java
  • oracle asm初步(1)

    asm相关

    !--查看asm磁盘组对应的物理磁盘

    如果是用oracleasm createdisk创建的disk可以用命令
    /etc/init.d/oracleasm querydisk
    比如
    /etc/init.d/oracleasm querydisk -v /dev/sd* 2>&1 | grep VOL

    如果是直接用raw device来添加的

    可以查询v$asm_disk的path和mount_status 字段。

    linux 32bit oracle 10.2.0.5.0 asm,以下操作在ORACLE_SID=+ASM的实例进行。

    (1)在oracle和asm的instance里,查相出视图结果不同

    --v$asm_disk;
    set lines 200
    col label for a10
    col name for a10
    col path for a20


    select group_number,disk_number,mount_status,header_status,state,redundancy,name,path,total_mb,free_mb,failgroup,label
    from v$asm_disk;

    --要注意,不属于任何一个disk_group的asm_disk的group_number列为0;
    在asm中mount_status=cached,header_status=member,free_mb=正常值,failgroup=自已所在磁盘
    在oracle中,mount_status=opened,header_status=unknown,free_mb为0,failgroup=null

    --v$asm_diskgroup

    col database_compatibility for a20
    set lines 200
    select group_number,name,sector_size,block_size,allocation_unit_size,state,type,total_mb,free_mb,database_compatibility
    from v$asm_diskgroup;

    (2)--增加删除磁盘的方法(这些操作在dbca里图形化也可以操作,且稳定)

    1、通过/etc/init.d/oracleasm createdisk VOLn /dev/sdbx 增加asmdisk
    2、在type=asm的instance里:(默认的rebalance为1,最慢,最大11,会对io性能有影响)
    alter diskgroup mydata add disk 'ORCL:VOLn' rebalance power 1;--这里的ORCL:VOLn指的path
    --删除:
    alter diskgroup mydata drop disk 'VOLn' rebalance power 1;--这里的VOLn指的label或是name

    --这种方式可能也行(但添加的去name,mount_status状态不对)
    alter diskgroup DATA add disk '/dev/raw/raw3' name data007;


    (3)--手动平衡磁盘组

    一般情况下ASM都会自动对其下的磁盘组进行平衡,不过ORACLE也提供了手动平衡磁盘组的方式
    手动平衡的话,设置的平衡度可以与初始化参数中并不相同,例如,设置磁盘组平衡度为5
    alter diskgroup data rebalance power 5;

    另外再次强调,上述语句将很快返回diskgroup altered的提示,但这并不表示操作真正完成,它只是反馈语句提交而已

    查看磁盘后台的操作,可以通过v$asm_operation视图,或者在语句执行时增加wait子句,这样ASM将会等到操作真正完成时,才返回提示信息

    (4)mount/unmount 磁盘组
    只有被mount的磁盘组才能被数据库使用并执行add/drop等磁盘操作,ASM中的磁盘组默认会在ASM实例启动时自动加载,当然也可以手动通过命令行语句mount/unmount磁盘组

    查询ASM实例中创建的磁盘组可以通过V$ASM_DISKGROUP视图查看:

    select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;

    当前两个磁盘组均为MOUNT状态,要将其置为UNMOUNT,执行语句如下:

    alter diskgroup mydata dismount;


    UNMOUNT磁盘组的话务必慎重操作,要确保UNMOUNT的磁盘组中保存的文件对应的数据库当前未启动,而且该操作也会直接导致数据库SHUTDOWN。

    (5) 删除磁盘组

    语法:drop diskgroup mydata;


    如果删除的diskgroup非空的话,直接执行上述语句会报错
    这时候可以通过附加including contents子句,来自动删除该磁盘组中包含的文件
    删除磁盘组的操作会自动修改spfile中ASM_DISKGROUPS初始化参数的值(如果使用了SPFILE的话)

    (6)测试在EXTERNAL的模式下,只要有一个asm_disk坏掉,整个磁盘组就会dismount(这些创建磁盘组,添加删除磁盘组磁盘的都可以在dbca下进行,且稳定)


    CREATE DISKGROUP diskgroup_name [ { HIGH | NORMAL | EXTERNAL } REDUNDANCY ]
    [ FAILGROUP failgroup_name ]
    DISK [ NAME disk_name ] [ SIZE size_clause ] [ FORCE | NOFORCE ]

    例子如下:ORCL:VOL3对应/dev/sdb6
    create diskgroup disk2 EXTERNAL REDUNDANCY disk 'ORCL:VOL3';

    [root@node01 bin]# dd if=/dev/zero of=/dev/sdb6
    dd: 正在写入 “/dev/sdb6”: 设备上没有空间
    112393+0 records in
    112392+0 records out
    57544704 bytes (58 MB) copied, 0.680422 seconds, 84.6 MB/s

    以上dd命令破坏了asm_disk的header

    SQL> col database_compatibility for a20
    SQL> set lines 200
    SQL> select group_number,name,sector_size,block_size,allocation_unit_size,state,type,total_mb,free_mb,database_compatibility 
      2  from v$asm_diskgroup;
    
    GROUP_NUMBER NAME       SECTOR_SIZE BLOCK_SIZE ALLOCATION_UNIT_SIZE STATE       TYPE     TOTAL_MB    FREE_MB DATABASE_COMPATIBILI
    ------------ ---------- ----------- ---------- -------------------- ----------- ------ ---------- ---------- --------------------
               1 MYDATA             512       4096              1048576 MOUNTED     EXTERN       3826       2849 10.1.0.0.0
               2 DISK2              512       4096              1048576 MOUNTED     EXTERN          0          0 10.1.0.0.0

    我们发现此时这个磁盘组还是处于mount状态,但是total_mb和free_mb都变成了0,即虽然仍然被加载,但不可用。下面查年一下v$asm_disk:

    SQL> select group_number,disk_number,mount_status,header_status,state,redundancy,name,path,total_mb,free_mb,failgroup,label
      2  from v$asm_disk;
    
    GROUP_NUMBER DISK_NUMBER MOUNT_S HEADER_STATU STATE    REDUNDA NAME       PATH                   TOTAL_MB    FREE_MB FAILGROUP                      LABEL
    ------------ ----------- ------- ------------ -------- ------- ---------- -------------------- ---------- ---------- ------------------------------ ----------
               1           0 CACHED  MEMBER       NORMAL   UNKNOWN VOL1       ORCL:VOL1                  1913       1425 VOL1                           VOL1
               1           1 CACHED  MEMBER       NORMAL   UNKNOWN VOL2       ORCL:VOL2                  1913       1424 VOL2                           VOL2
               2           0 CACHED  CANDIDATE    NORMAL   UNKNOWN VOL3       ORCL:VOL3                    54          4 VOL3                           VOL3

    我们发现在v$asm_disk中,空间正常,但是这个极重要的asm的header_status由原来的member变成了Candidate。

    我们将这个data2的diskgroup dismount掉,然后再mount。

    SQL> alter diskgroup DISK2 dismount;
    
    Diskgroup altered.
    
    SQL> alter diskgroup DISK2 mount;
    alter diskgroup DISK2 mount
    *
    ERROR at line 1:
    ORA-15032: not all alterations performed
    ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DISK2"
    

    我们发现此时,这个disk_group因为其中一个asm_disk的损坏已经不能正常的mount了。

    测试完毕,EXTERNAL REDUNDANCY的diskgroup一定要有外部的raid或其它做保证,这样才安全。

  • 相关阅读:
    左孩子右兄弟的字典树
    UVA 1401 Remember the Word
    HDOJ 4770 Lights Against Dudely
    UvaLA 3938 "Ray, Pass me the dishes!"
    UVA
    Codeforces 215A A.Sereja and Coat Rack
    Codeforces 215B B.Sereja and Suffixes
    HDU 4788 Hard Disk Drive
    HDU 2095 find your present (2)
    图的连通性问题—学习笔记
  • 原文地址:https://www.cnblogs.com/taowang2016/p/3158659.html
Copyright © 2011-2022 走看看