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兼容。