ASMDG agent shows “status unknown” and outputs error in engine log:
VCS INFO V-16-20002-259 (nodename) ASMDG:asmdgresourcename:monitor:Agent unable to identify state of the ASMDG resource. The asm_diskstring parameter is not set correctly in the ASM initialization parameter file. (2)
asm_diskstring is either null or confirmed correct.
See TECH160429 which isn’t pertinent to this error but does have an example log entry for this error.
First, as of this post, the DiskGroups attribute description for the ASMDG agent is mis-labeled as EnvFile, so it looks as if there are two EnvFile attributes. Clicking on the attribute label reveals that it is actually the DiskGroups attribute.
The ASMDG agent monitor script compares the number of diskgroups listed in the DiskGroups attribute with the output of a SQL command that collects the status for each of the DiskGroups in the list. If the SQL command executes properly, it will return one status line for each diskgroup. The monitor script counts the number of non-blank lines returned to get the count.
The problem is that the script listed in the EnvFile is run in the same command as the sql code in the agent monitor script /opt/VRTSagents/ha/bin/ASMDG/monitor: see line 165. If the EnvFile script produces any output, that gets added to the output of the SQL command starting at line 153, which produces a mis-match between the DiskGroups count and the status count. This produces the V-16-20002-259 “asm_diskstring” error, even though it has nothing to do with asm_diskstring.
Please note that at the end of the V-16-20002-259 error entry in the engine log there will be a number enclosed in parenthesis. The example in above referenced technote has a “(2)”. This is the actual number of non-blank lines returned from the SQL command. So, if you have 2 diskgroups listed in the DiskGroups attribute, and the number listed at the end of the -259 error is (6), you know that something extra is being returned from the SQL command.
The recommendation would be that all oracle environment scripts used in a VCS environment should be silent, meaning they should under no circumstances produce any output. This would include the .profile, .cshrc, or separately sourced environment scripts.
Most cases the issue of output from oracle user’s environment is relatively benign and just produces a lot of extraneous VCS log entries. In this case it actually breaks the monitor script and prevents the ASMDG agent from working.
2 Responses