Stopping one ASM listener in Flex ASM environment takes down ASM instance
This is a heads-up about behaviour we are seeing during OAT testing on a 12c environment. We are running OAT tests on a new 220.127.116.11 Grid Infrastructure environment using Flex ASM (OEL 5.8) and when taking down one of the two ASMNETLSNR listeners on one of the nodes, the ASM instance running on that node is taken down. We assume this is due to a hard dependency between the listener and the ASM instance. Unfortunately this does not give us a great deal of resilience: as we have two ASMNETLSNR listeners normally running on each node we would expect to be able to lose one of them without losing an ASM instance.
ps -ef | grep tns root 769 2 0 Nov10 ? 00:00:00 [netns] oracle 8386 1 0 Nov19 ? 00:00:09 /app/gridsoft/18.104.22.168/bin/tnslsnr ASMNET1LSNR_ASM -no_crs_notify -inherit oracle 8389 1 0 Nov19 ? 00:00:12 /app/gridsoft/22.214.171.124/bin/tnslsnr LISTENER_DG -inherit oracle 8500 1 0 Nov19 ? 00:00:51 /app/gridsoft/126.96.36.199/bin/tnslsnr LISTENER -no_crs_notify -inherit oracle 8621 1 0 Nov19 ? 00:00:13 /app/gridsoft/188.8.131.52/bin/tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit oracle 117429 1 0 13:57 ? 00:00:00 /app/gridsoft/184.108.40.206/bin/tnslsnr ASMNET2LSNR_ASM -no_crs_notify -inherit
We are stopping the listener in a consistent and standard manner
srvctl stop listener ASMNET... -n node_name –f
Oracle did refer us to the following note.
Bug 14155526 : [12100-LIN64] BC: FAILED TO STOP ASM LISTENER WITH DEPENDENCY OF “ORA.ASM” RES >> this bug is closed as not bug . since its expected behavior.
This is expected behavior. ASM cannot be stopped on the node where the CRSD PE is running.
However we thought that you should be able to take an ASM listener down without forcing the database down as well. We have HAIP with two ASM Listeners per node. If we take one of the ASM listeners on a node down surely the other ASM Listener should be able to service the ASM instance on that node without the need for ASM going down. So why is there a hard dependency for the ASM listener?
Oracle said that this was expected behaviour but we still did not agree. They took the view that it works as per the design – confirmed by their dev team.
Based on the internal <a href="https://support.oracle.com/epmos/faces/BugDisplay?id=14347014">Bug 14347014</a> : LNX64-12.1-SRVM-FPF:NEED AN OPTION TO REMOVE ASM LISTENER ALSO UPDATE DEPENDENCY there is option provided by dev team to remove asm listener and update the dependency A new command srvctl update listener [-listener -asm -remove [-force]] is provided to remove asm listener and update dependency note: srvctl update listener -listener listener_asm3 -remove -asm [-force] If '-remove' and '-asm' are not specified together, then we should error out
We were still not satisfied that this is how it should work if there are multiple ASM listeners/interfaces.
I can understand that if there is only one interface for the ASM instances to communicate on via the ASM listener, then it could be argued that taking the listener down should take down the non-critical ASM instances. But we have set up HAIP and are utilising two network interfaces, the whole point of this configuration is to provide greater resilience, therefore we should be able to lose one listener, either through failure or a need to restart it, without killing ASM instances.
It looks like the hard dependencies have been configured so that ASM will fail if ANY of the ASM listeners are not present, it should be configured so that ASM should only fail if ALL of the ASM listeners are not present.
Oracle have now confirmed that in 12.2 there will be an enhancement to change the dependencies between ASM and the ASM listener.
If you are testing resilience between nodes on a new 12c cluster then it might be worth stopping an ASM listener and seeing what the impact is.