Migrate OCR ASM Diskgroup To Another Storage

  1. Query css votedisk.

    ~]$ crsctl query css votedisk

    ## STATE File Universal Id File Name Disk group
    -- ----- ----------------- --------- ---------
    1. ONLINE 73e1c48069d64fefbfc44cd8e65107d8 (ORCL:OCR_VOTE1) [OCR_VOTE]
    Located 1 voting disk(s).
  2. Query the fail groups.

    col path for a20
    col state for a10
    col failgroup for a15
    col name for a15
    select dg.name,dg.state,dg.type,d.disk_number,d.path,d.mount_status,d.failgroup,d.name,d.state
    from v$asm_diskgroup dg, v$asm_disk d
    where dg.group_number=d.group_number and dg.name='OCR_VOTE'
    order by dg.name,d.disk_number;

    NAME STATE TYPE DISK_NUMBER PATH MOUNT_S FAILGROUP NAME STATE
    --------------- ---------- ------ ----------- -------------------- ------- --------------- --------------- ----------
    OCR_VOTE MOUNTED EXTERN 0 ORCL:OCR_VOTE1 CACHED OCR_VOTE1 OCR_VOTE1 NORMAL
    OCR_VOTE MOUNTED EXTERN 1 ORCL:OCR_VOTE2 CACHED OCR_VOTE2 OCR_VOTE2 NORMAL
    OCR_VOTE MOUNTED EXTERN 2 ORCL:OCR_VOTE3 CACHED OCR_VOTE3 OCR_VOTE3 NORMAL
  3. Create new disks.

    oracleasm createdisk NEW_OCR_VOTE1 /dev/sdi1
    oracleasm createdisk NEW_OCR_VOTE2 /dev/sdj1
    oracleasm createdisk NEW_OCR_VOTE3 /dev/sdk1
  4. From node1 add each disk to a fail group.

    sqlplus " / as sysasm"

    -- external type not need to specify a fail group
    ALTER DISKGROUP OCR_VOTE ADD DISK
    'ORCL:NEW_OCR_VOTE1',
    'ORCL:NEW_OCR_VOTE2',
    'ORCL:NEW_OCR_VOTE3'
    REBALANCE POWER 8;
  5. Check gv$asm_operation till it returns no rows.

    SQL> select * from gv$asm_operation;
    no rows selected

    SQL> col path for a20
    col state for a10
    col failgroup for a15
    col name for a15
    select dg.name,dg.state,dg.type,d.disk_number,d.path,d.mount_status,d.failgroup,d.name,d.state
    from v$asm_diskgroup dg, v$asm_disk d
    where dg.group_number=d.group_number and dg.name='OCR_VOTE'
    order by dg.name,d.disk_number;

    NAME STATE TYPE DISK_NUMBER PATH MOUNT_S FAILGROUP NAME STATE
    --------------- ---------- ------ ----------- -------------------- ------- --------------- --------------- ----------
    OCR_VOTE MOUNTED EXTERN 0 ORCL:OCR_VOTE1 CACHED OCR_VOTE1 OCR_VOTE1 NORMAL
    OCR_VOTE MOUNTED EXTERN 1 ORCL:OCR_VOTE2 CACHED OCR_VOTE2 OCR_VOTE2 NORMAL
    OCR_VOTE MOUNTED EXTERN 2 ORCL:OCR_VOTE3 CACHED OCR_VOTE3 OCR_VOTE3 NORMAL
    OCR_VOTE MOUNTED EXTERN 3 ORCL:NEW_OCR_VOTE1 CACHED NEW_OCR_VOTE1 NEW_OCR_VOTE1 NORMAL
    OCR_VOTE MOUNTED EXTERN 4 ORCL:NEW_OCR_VOTE2 CACHED NEW_OCR_VOTE2 NEW_OCR_VOTE2 NORMAL
    OCR_VOTE MOUNTED EXTERN 5 ORCL:NEW_OCR_VOTE3 CACHED NEW_OCR_VOTE3 NEW_OCR_VOTE3 NORMAL
  6. Drop old disks.

    ALTER DISKGROUP OCR_VOTE DROP DISK
    'OCR_VOTE1',
    'OCR_VOTE2',
    'OCR_VOTE3'
    REBALANCE POWER 8;
  7. Check gv$asm_operation till it returns no rows.

    SQL> select * from gv$asm_operation;
    no rows selected

    SQL> col path for a20
    col state for a10
    col failgroup for a15
    col name for a15
    select dg.name,dg.state,dg.type,d.disk_number,d.path,d.mount_status,d.failgroup,d.name,d.state
    from v$asm_diskgroup dg, v$asm_disk d
    where dg.group_number=d.group_number and dg.name='OCR_VOTE'
    order by dg.name,d.disk_number;

    NAME STATE TYPE DISK_NUMBER PATH MOUNT_S FAILGROUP NAME STATE
    --------------- ---------- ------ ----------- -------------------- ------- --------------- --------------- ----------
    OCR_VOTE MOUNTED EXTERN 3 ORCL:NEW_OCR_VOTE1 CACHED NEW_OCR_VOTE1 NEW_OCR_VOTE1 NORMAL
    OCR_VOTE MOUNTED EXTERN 4 ORCL:NEW_OCR_VOTE2 CACHED NEW_OCR_VOTE2 NEW_OCR_VOTE2 NORMAL
    OCR_VOTE MOUNTED EXTERN 5 ORCL:NEW_OCR_VOTE3 CACHED NEW_OCR_VOTE3 NEW_OCR_VOTE3 NORMAL
  8. Delete old disks.

    oracleasm deletedisk OCR_VOTE1
    oracleasm deletedisk OCR_VOTE2
    oracleasm deletedisk OCR_VOTE3