APAR status
Closed as program error.
Error description
Abstract- Oracle Instance getting generated with wrong fqdn in case jdbc connection is not established and target has multiple listeners with different virtual IPs. Problem Description =================== When an Oracle Sensor is invoked for an Oracle Listener on a Target which has mutiple oracle listeners on it, then it extracts details about a SID from listener by trying to establish a JDBC connection with it for that SID. If it finds the listener port unreachable for some reason, it creates a shallow model object of Oracle Instance with minimal details and assigns it details of this listener's IP (which can be a different virtual IP). BUT, if the SID is actually registered with another listener which has different IP/fqdn, it means that in the created shallow object wrong IP details are getting stored vs it. This kind of wrong updates can occur in cases where e.g., the jdbc connection fails because of error like eg "Connection Reset" or any other errors. ------------------------------ The behaviour of storing then a shallow obj vs it had been introduced with the the FP5 old property of com.collation.oracle.sensor.ignoreNonRegisteredSidOfListener= true. The default value of this property is false. If this property is set to true, the Oracle Sensor will ignore those SIDs which are found to be not register ed on Oracle listener . Oracle Sensor first tries to establish a jdbc connection with the listener for a SID. If it gets an err like : ORA-12505, TNS: listener does not currently know of SID given in connect descriptor" the SID is ignored If instead the connection is unsuccessful with any other error a shallow ORA instance obj is created with this listener's IP and Port details. Another impact to this property is that it will not create those ora instances which have NOT registered with any listeners. --------------------------------- For handling this situation this we need to review the above behavior now and we need to have a new property, e.g.: "com.collation.oracle.sensor.CreateOnlyConfirmedRegisteredSid" If this is configured to true, then : a. Oracle Sensor will create Oracle Instances for SIDs for which Jdbc connection is success. So that always fqdn of listening IP is assigned to it. b. Also it will create shallow Oracle Instance for SIDs where we get this error "ORA-01017: invalid username/password; logon denied" . This is because jdbc driver throws this error after it had checked that SID is registered with listener. If SID was not registered, then even on wrong username/password, we first and only gets the error that "ORA-12505, TNS:listener does not currently know of SID given in connect descriptor". So we can create shallow object in username/password error as we are sure SID is registered and the listener's Fqdn can be used in the model object created. If this value is set to false then , c. Sensor will continue to create Oracle Instance as usual as previously ie for in case of any error in Jdbc connection , it will still create shallow Oracle Instance Objects. The default value of ths property is to be true, so that no data with wrong details are generated by default. We also need to enable the capability to allow configuring the new property to the level of IP address. So in case where user has a target IP which has only one listener , and he wants to get the Oracle Instance Model object created with the only listener on that IP, regardless of whether the jdbc connection was success or not , he can configure this new property+IP address to false. In that case sensor will create shallow object in such cases. Local Fix/Work AroundLocal Fix/Work Around- NA
Local fix
Problem summary
When an Oracle Sensor is invoked for an Oracle Listener on a Target which has mutiple oracle listeners on it, then it extracts details about a SID from listener by trying to establish a JDBC connection with it for that SID. If it finds the listener port unreachable for some reason, it creates a shallow model object of Oracle Instance with minimal details and assigns it details of this listener's IP (which can be a different virtual IP). However,, if the SID is actually registered with another listener which has a different IP/FQDN, it means that in the created shallow object, wrong IP details are getting stored. This kind of wrong updates can occur in cases where: The jdbc connection fails because of error like "Connection Reset" or any other errors. ------------------------------ The behaviour of storing a shallow object vs it had been introduced with an old property: com.collation.oracle.sensor.ignoreNonRegisteredSidOfListener= true. The default value of this property is false. If this property is set to true, the Oracle Sensor will ignore those SIDs which are found to be not registered on Oracle listener. Oracle Sensor first tries to establish a jdbc connection with the listener for a SID. If it gets an err like : ORA-12505, TNS: listener does not currently know of SID given in connect descriptor" the SID is ignored If instead the connection is unsuccessful with any other error a shallow ORA instance object is created with this listener's IP and port details. Another impact to this property is that it will not create those ora instances which are NOT registered with any listeners. --------------------------------- To correct this issue, the following porperty has been added: "com.collation.oracle.sensor.CreateOnlyConfirmedRegisteredSid" If this is configured to true: a. Oracle Sensor will create Oracle Instances for SIDs for which Jdbc connection is success. So that always fqdn of listening IP is assigned to it. b. Also it will create shallow Oracle Instance for SIDs where we get this error "ORA-01017: invalid username/password; logon denied" . This is because jdbc driver throws this error after it had checked that SID is registered with listener. If SID was not registered, then even on wrong username/password, we first and only gets the error that "ORA-12505, TNS:listener does not currently know of SID given in connect descriptor". So we can create shallow object in username/password error as we are sure SID is registered and the listener's Fqdn can be used in the model object created. If this value is set to false: c. Sensor will continue to create Oracle Instance as usual as previously ie for in case of any error in Jdbc connection , it will still create shallow Oracle Instance Objects. The default value of ths property is to be true, so that no data with wrong details are generated by default. We also need to enable the capability to allow configuring the new property to the level of IP address. So in case where user has a target IP which has only one listener , and he wants to get the Oracle Instance Model object created with the only listener on that IP, regardless of whether the jdbc connection was success or not , he can configure this new property+IP address to false. In that case sensor will create shallow object in such cases.
Problem conclusion
The fix for this APAR is contained in the following maintenance packages: | Fix Pack | 7.3.0-TIV-ITADDM-FP0006
Temporary fix
Comments
APAR Information
APAR number
IJ07703
Reported component name
APP DEPENDENCY
Reported component ID
5724N5500
Reported release
730
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2018-07-13
Closed date
2018-09-23
Last modified date
2018-09-23
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Modules/Macros
999
Fix information
Fixed component name
APP DEPENDENCY
Fixed component ID
5724N5500
Applicable component levels
[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSPLFC","label":"Tivoli Application Dependency Discovery Manager"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"730","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]
Document Information
Modified date:
23 September 2018