ACISessionPoolCreate()¶
-
ACISessionPoolCreate()¶
作用:
初始化会话池,启动sessMin会话数和与数据库的连接。调用之前请调用 ACIHandleAlloc 为会话池句柄分配内存。
语法:
sword ACISessionPoolCreate ( ACIEnv *envhp,
ACIError *errhp,
ACISPool *spoolhp,
OraText **poolName,
ub4 *poolNameLen,
const OraText *connStr,
ub4 connStrLen,
ub4 sessMin,
ub4 sessMax,
ub4 sessIncr,
OraText *userid,
ub4 useridLen,
OraText *password,
ub4 passwordLen,
ub4 mode );
参数:
- envhp (IN)
ACI的环境句柄,用于创建连接池。
- errhp (IN/OUT)
错误句柄,该接口调用失败时,错误信息会存在该句柄上,调用 ACIErrorGet 获得错误信息。
- spoolhp (IN/OUT)
已初始化的会话池句柄的指针。
- poolName (OUT)
返回的会话池的名称。 它在环境中的所有会话池中都是唯一的。 该值必须传递给 ACISessionGet 调用。poolName的字符编码受环境初始化给与的字符集影响。
poolName返回ACI内部内存地址,无需应用程序去释放。
- poolNameLen (OUT)
返回poolName的字节长度。
- connStr (IN)
连接数据库的字符串,connStr的字符编码必须为环境初始化给与的字符集。
- connStrLen (IN)
connStr参数的字节长度。
- sessMin (IN)
初始化最小的会话数, ACISessionPoolCreate 完成后,会创建对应的连接数。有效值为大约等于0。
- sessMax (IN)
指定会话池中可以打开的最大会话数。 达到此值后,将不再打开任何会话。 有效值为大于等于1。
- sessIncr (IN)
如果当前会话数小于sessMax,则允许应用程序设置要启动的会话的下一个增量。 有效值为大约等于0。
- userid (IN)
用户名
- useridLen (IN)
userid用户名的字节长度。
- password (IN)
用户密码
- passwordLen (IN)
password用户密码的长度
- mode (IN)
- ACI_DEFAULT-用于创建新的会话池。
- ACI_SPC_REINITIALIZE-创建会话池后,如果要动态更改池属性(更改sessMin,sessMax和sessIncr参数),mode设置为ACI_SPC_REINITIALIZE的情况下调用
ACISessionPoolCreate。 当mode设置为ACI_SPC_REINITIALIZE时,connStr,userid和password将被忽略。
- ACI_SPC_STMTCACHE-为会话池创建一个ACI语句缓存。
- ACI_SPC_HOMOGENEOUS-池中的所有会话都使用传递给
ACISessionPoolCreate的用户名和密码进行身份验证。 在这种情况下,将忽略传递到ACISessionGet的身份验证句柄(参数authInfop)。 此外,仅在这种情况下才考虑sessMin和SessIncr值。
- ACI_SPC_NO_RLB-默认情况下,如果客户端和服务器能够支持会话池,则将在会话池中启用运行时连接负载平衡。 要关闭它,请使用
ACISessionPoolCreate的新模式ACI_SPC_NO_RLB模式。 不允许为已创建的池传递了此模式,则将引发错误。此模式ACI不支持。
说明:
ACI的会话池和连接池在本质上是一样的,因为数据库后端没有将物理网络连接和用户认证分开,因此前端ACI也没有办法分开。分别实现会话池和连接池目的是与OCI兼容。