ODBC Failover Mechanism

Document ID : KB000011241
Last Modified Date : 14/02/2018
Show Technical Document Details
Question:

We're running a Policy Server with different Databases used for User Store, Policy Store and Audit Store. We would like to know how failover feature works for these ODBC connections ?

  1. Does the failover mechanism works similar for all the ODBC store types (policy store, user store, audit store, session store, key store, report server) irrespective of whether database is Oracle or MS SQL in both SiteMinder r6 and r12?

  2. Does Policy Server ping all configured databases every 15 seconds or it ping only one server at a time ?
Answer:
  1. SiteMinder supports failover for all ODBC connections. Policy Server ping the database every 15 seconds and maintains a list of configured data sources with a priority that is determined by the order in which they are listed. When a statement must be executed, a connection is required. When SiteMinder interrogates the database layer for a connection, it looks at the first entry in the list that has the connection credentials for which it is looking. It checks the state of the connection to determine whether it is available. If the state is hung, then the server is considered not usable and it checks the next item in the list that matches i.e., the failover server(s). This continues until it finds an available connection. When the primary server becomes available again, the thread that was monitoring the connection flags it as available and when another connection is requested this connection is once again.Ā 

  2. The DBMonitor thread that is used for this feature (PING) is created for each connection to a DB. So if there are multiple connects to the same database for different reasons there will be multiple monitor threads created. The monitor thread checks the database when the database is not in use. If the database is handling requests, the monitor thread does not test the database as it does not need to. This is in the shared connection mode (which is the default). In non shared mode each type of connect has its own set of db connections and they do not share them.