ASM Preferred read
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
Â
Discussion ¬