数据库连接池已经不是新概念了,它以有限的连接让外部更多的客户来访问数据库,一般用于中间服务器中,OCI也有连接池的概念。OCI的连接池是由OCI自己管理的,不需要应用干预,程序通过函数从连接池中得到一个会话,通过会话操作数据库,然后通过函数释放会话,会话被连接池回收,供给其他访问使用。
OCI的连接池也是有局限性的,由于连接池在进程中创建,所以连接池中的会话只能本进程下的线程才能共享,连接池不能跨进程使用。如果要跨进程使用,需要用到驻存连接池,它由数据库来管理,需要调整数据库设置,在数据库层级创建连接池。
我们在这里讨论OCI的连接池,也就是进程内共享的连接池。使用连接池的步骤如下。
1. 创建OCI环境句柄,创建错误句柄。
2. 创建连接池句柄,使用OCI_HTYPE_CPOOL从环境句柄创建。
3. 创建连接池,使用函数OCIConnectionPoolCreate()。
4. 各个线程从连接池得到会话,使用函数OCILogon2()或者OCISessionGet()。
5. 线程通过会话进行数据库的DML或查询操作。
6. 线程操作完数据库,释放会话到连接池,使用函数OCILogoff()或者OCISessionRelease()。
7. 删除连接池,使用函数OCIConnectionPoolDestroy()。
8. 释放连接池句柄。
9. 释放掉环境句柄。
下一节我们介绍用到的函数原型,写一个完整的代码来演示如何使用连接池。