Database resident connection pooling provides a connection pool in the database server for typical Web application usage scenarios in which an application acquires a database connection, works on it for a relatively short duration, and then releases it.
Database resident connection pooling pools "dedicated" servers process.
A pooled server is the equivalent of a server foreground process and a database session combined.
Having a pool of readily available servers has the additional benefit of reducing the cost of creating and closing client connections.
This feature is useful for applications that must maintain persistent connections to the database and optimize server resources (such as memory).
Database resident connection pooling complements middle-tier connection pools that share connections between threads in a middle-tier process.
In addition, it enables sharing of database connections across middle-tier processes on the same middle-tier host and even across middle-tier hosts. This results in significant reduction in key database resources needed to support a large number of client connections, thereby reducing the database tier memory footprint and boosting the scalability of both middle-tier and database tiers.
Clients obtaining connections out of the database resident connection pool are persistently connected to a background process, the connection broker, instead of the dedicated servers. The connection broker implements the pool functionality and performs the multiplexing of inbound connections from the clients to a pool of dedicated servers with sessions.
When a client must perform database work, the connection broker picks up a dedicated server process from the pool and assigns it to the client. Subsequently, the client is directly connected to the dedicated server until the request is served. After the server finishes processing the client request, the server goes back into the pool and the connection from the client is restored to the connection broker.