When the Policy Server loses connection to a backend Oracle database (User Store or Policy Store), it does not automatically reconnect or fail over to a standby instance.
In a disaster recovery or switchover scenario, the goal is to ensure the Policy Server automatically transitions to the next available database node (using DNS aliases or alternate server lists) without requiring a manual restart of the Policy Server services. If parameters are not tuned correctly, requests may pile up, leading to a service outage during the database transition.
Policy Server: 12.8 SP8 CR01 (or higher) on RedHat 7
Policy/Session Store: LDAP (CA Directory)
User Store: ODBC Oracle 19c
Driver: DataDirect Oracle Wire Protocol
To enable the Policy Server to transition to a secondary database instance automatically, configure the DataDirect ODBC driver for Load Balancing and Alternate Servers (1). This ensures redundancy at the driver level.
system_odbc.ini file (typically located in the siteminder/db directory) to include the failover parameters.ConnectionRetryCount=0 with a specific delay allows the driver to immediately attempt the next server in the AlternateServers list if the primary is unreachable, preventing long "hang" times where requests pile up in the Policy Server queues.[SiteMinder_DSN]Driver=/opt/CA/siteminder/odbc/lib/NSora28.soDescription=DataDirect Oracle Wire ProtocolHostName=db-node1.example.comPortNumber=1521ServiceName=SM_SVCAlternateServers=(HostName=db-node2.example.com:PortNumber=1521:ServiceName=SM_SVC)LoadBalancing=1ConnectionRetryCount=0ConnectionRetryDelay=3ConnectionRetryCount and ConnectionRetryDelay) in a lower environment. Every network and database failover (e.g., Oracle RAC or Data Guard) behaves differently; tuning these values is the only way to ensure the desired behavior in Production.Deprecation Notice: Please note that the DataDirect driver is slated for deprecation starting from SiteMinder version 12.9 SP1.
Request Accumulation: If the retry count is too high, the Policy Server may hold onto worker threads for too long, leading to a "hanging" state.