N.B. Bug as it doesn’t work with Flex Asm 12.1 – but should be fixed by now.

Suppose that you have an extended 3 nodes RAC:

  • racnode1 located in SITE A
  • racnode2 located in SITE A
  • racnode3 located in SITE B

And 2 ASM instances actives:

  • +ASM1 located in SITE A
  • +ASM3 located in SITE B
srvctl status asm ASM is running on racnode3,racnode1

set the asm_preferred_read_failure_groups parameter that way for the DATAP diskgroup

SQL> alter system set asm_preferred_read_failure_groups='DATAP.SITEB' sid='+ASM3'; System altered. SQL> alter system set asm_preferred_read_failure_groups='DATAP.SITEA' sid='+ASM1'; System altered.

So that ASM3 prefers to read from SITEB and ASM1 from SITEA
BUT we find Instance on node 3 are actually using ASM1

SQL> select I.INSTANCE_NAME,C.INSTANCE_NAME,C.DB_NAME 2 from gv$instance I, gv$asm_client C 3 where C.INST_ID=I.INST_ID and C.instance_name='NOPBDT3'; INSTANCE_NAME INSTANCE_NAME DB_NAME ---------------- ---------------------------------- ------------ +ASM1 NOPBDT3 NOPBDT

Check using

asmcmd iostat

asmiostat.sh

You can temporary fix this that way (connected on the +ASM1 instance):

SQL> ALTER SYSTEM RELOCATE CLIENT ‘NOPBDT3:NOPBDT’;

System altered.

SQL> select I.INSTANCE_NAME,C.INSTANCE_NAME,C.DB_NAME

2       from gv$instance I, gv$asm_client C

3       where C.INST_ID=I.INST_ID and C.instance_name=’NOPBDT3′;

INSTANCE_NAME INSTANCE_NAME DB_NAME

—————- ——————————– ——–

+ASM3        NOPBDT3                   NOPBDT

+ASM3        NOPBDT3                   NOPBDT