Middle-tier database connection pooling 
The IFS middle-tier makes use of three separate pools of database 
connections. Such connections are shared between multiple users. The three 
connection pools serves different use cases and have very different behavior. 

Overview of IFS Applications three separate pools of database connections
Contents
Two of the database connection pools are managed by the application server as 
Data Sources:
	- fndbas
 This connection pool is used for middle-tier Activities and Services, 
	such as bizAPIs, web services, some IFS Enterprise Explorer 
	framework services, IFS Solution Manager, etc.
 All connections are created as user IFSSYS, but when a connection is 
	to be used by a client call the current Foundation1 user identity is 
	temporarily switched with a call to Login_SYS.Init_Fnd_Session (the 
	Oracle database user is still IFSSYS). The connections are shared 
	between all interactive clients and service consumers.
 When
	
	monitoring database sessions, connections from this pool are identified 
	as category Activity/Service.
 The minimum and maximum size of the connection pool (number of database 
	connections) can be configured using the Installer. The size of the 
	connection pool will vary, depending on the current load, between these 
	configured sizes.
- fndbasXA
 This connection pool is used only by the Application Server integration with 
	Oracle Advanced Queuing.
 Both the
	
	Batch Processor and
	Streams use 
	connections in this pool in order to subscribe to messages sent from the 
	database to the application server. Such connections are never used to 
	invoke business logic and are never used by interactive clients.
 All connections are created as user IFSSYS.
 When
	
	monitoring database sessions, connections from this pool are identified 
	as category JMS-AQ integration.
Both connection pools can be monitored using
IFS System Monitoring and
configured using the Installer.
This type of connection pool is used by interactive clients when accessing 
database business logic directly. The behavior of this connection pool is very 
different from the two application server managed connection pools. All 
connections are created as user IFSSYS, but rather than temporarily 
switching only the Foundation1 user identity when a connection is in use the 
Oracle database user is also switched using Oracle proxy authentication. 
Connections are shared between clients, but the pool will attempt to reuse an 
already switched connection (where the database user identity matches that of 
the current user) as a way to minimize the cost and impact of database user 
switching. If no such idle connection is available the database identity will be 
switched to that of the current user.
There are two scenarios where connections are reserved for a 
particular client session - when the client keeps an open cursor (this typically 
happens when scrolling in a table window with a large result set) or when the 
client keeps a database transaction active between client-server calls. In both 
these scenarios is absolutely vital that the same database connection is 
used for all database calls.
The state of the connection indicates whether the connection is 
currently:
	- USED - Ongoing database call
- INITIALIZED - User identity switched to some database user
- ANONYMOUS - Not yet initialized connection, will have to be initialized 
	before use
- RESERVED - The connection is dedicated to a particular client session, 
	either because of an open cursor or an active transaction. The connection 
	will go back to state INITIALIZED automatically after any of the two 
	configurable timeouts explained below.
(Other transient connection states exists.)
There are three important configuration parameters which can be changed using 
the Installer:
	- Maximum Number of Connections
 The connection pool will grow up to this many connections as needed, 
	depending on the current load. Since connections can be shared, this value 
	can be significantly less than the number of concurrent users.
- Cursor Timeout
 The time until an idle open cursor will be closed automatically.
- Transaction Wait Timeout
 The time until an active transaction, waiting for subsequent client-server 
	call, will be rolled back automatically.
 This is basically the maximum user "think" time between server calls in the 
	context of an ongoing transaction started by the client.
The behavior of this pool can be monitored using
IFS System Monitoring and
configured using the Installer.
When
monitoring database sessions, connections from this pool are identified as 
category PL/SQL Access.