复杂连接服务接口
复杂连接服务包括服务建立、会话开始、会话结束、服务结束四个APL。分配DCI句柄之后,需要使用DCIServerAttach为DCI操作创建数据源的访问路径,然后在登录数据库前以给定的方式设置服务器连接指针的参数,然后使用函数DCISessionBegin来实现创建和开始与数据库的会话,会话结束之后,使用DCISessionEnd来断开DCISessionBegin创建的数据库的会话,用DCIServerDetach来清除数据源访问路径。
DCIServerAttach
功能描述
为DCI操作创建数据源的访问路径。
功能说明
该调用用于创建DCI应用程序和特定服务之间的关联。该调用初始化一个服务上下文句柄,必须确保传入的服务上下文句柄未被初始化。当该调用成功执行之后,将启动oracle数据库的shadow进程。DCISessionEnd和DCIServerDetach被用来清理shadow进程,否则shadow进程的累计增加会导致Linux或者Unix系统进程耗尽进程。如果没有足够的进程的重新启动数据库,则可能无法启动。如果应用程序同时操作多个服务,则多个服务上下文句柄需要被维护。
接口信息
函数/过程
DCIServerAttach语法如下:
sword DCIServerAttach (
DCIServer *srvhp,
DCIError *errhp,
const OraText *dblink,
sb4 dblink_len,
ub4 mode
)
参数解释如下:
srvhp:一个未初始化的服务句柄,如果传入已初始化的服务句柄会导致错误。
errhp:错误句柄,可以通过DCIErrorGet()诊断错误信息。
dblink:指定要使用的数据库服务。如果该字符串为NULL,将指定为默认主机,编码模式取决于应用环境句柄中的设置或mode。如果mode=DCI_CPOOL,则 dblink必须与创建连接池DCIConnectionPoolCreate()的poolName参数相同,且必须采用DCIEnvNlsCreate的charser参数指定的编码。
dblink_len:dblink指向的字符串长度,对于有效的字符串名称,dblink_len必须不为0。当mode=DCI_CPOOL时,无论什么编码,poolName都以字节为单位计算长度。
mode:指定各种操作模式:
DCI_DEFAULT—让服务上下文句柄使用环境句柄中的设置。
DCI_CPOOL—表示使用连接池。
因为可以为任何连接会话句柄设置附加的服务句柄,所以mode的值不会影响任何会话句柄。
外部接口
无。
其它说明
无。
DCIServerDetach
功能描述
删除 DCI 操作的数据源的访问路径。
功能说明
此调用删除通过调用DCIServerAttach()来建立的DCI 操作的数据源访问路径。
接口信息
函数/过程
DCIServerDetach语法如下:
sword DCIServerDetach (
DCIServer *srvhp,
DCIError *errhp,
ub4 mode
)
具体参数解释如下:
srvhp:一个已经被初始化的服务上下文句柄,句柄没有被释放而是被重置为未被初始化的状态。
errhp:错误句柄,可以通过DCIErrorGet()诊断错误信息。
mode:唯一有效的模式是DCI_DEFAULT默认模式。
外部接口
无。
其它说明
无。
DCISessionBegin
功能描述
建立与指定数据库的用户会话连接。
功能说明
该调用通过服务上下文句柄中设置的服务句柄对用户进行身份验证。如果DCI的应用程序启用了连续性,则DCISessionBegin()会在应用程序请求的开始时进行隐式标记。使用DCI会话池API时,无需调用DCIRequestBegin()和DCIRequestEnd()。
接口信息
函数/过程
DCISessionBegin语法如下:
sword DCISessionBegin (
DCISvcCtx *svchp,
DCIError *errhp,
DCISession *usrhp,
ub4 credt,
ub4 mode
)
具体参数解释如下:
svchp:服务上下文句柄,必须设置有效的服务上下文句柄。
errhp:错误句柄,可以通过DCIErrorGet()诊断错误信息。
usrhp:用户会话上下文句柄,由此处初始化。
credt:指定建立用户会话类型。有效值有:
DCI_CRED_RDBMS: 使用数据库用户名和密码对进行身份验证。应该在此调用之前在用户会话上下文中设置DCI_ATTR_USERNAME和DCI_ATTR_PASSWORD属性。
DCI_CRED_EXT: 不需要使用用户名和密码进行身份验证。未提供用户名或密码。
mode:指定各种操作模式。有效模式是:
DCI_DEFAULT: 在这种模式下,只支持一盒会话句柄. 服务句柄使用环境句柄中的编码设置。
DCI_MIGRATE: 移动会话模式;在该模式下,新的会话连接会以不同的会话句柄返回;使用该模式创建新的会话时,必须已存在一个不可移动会话模式的会话连接。也就是说,一个移动会话模式的会话连接必须有一个不可移动模式的连接作为父连接。DCI_MIGRATE当会话使用下面的连接池时不应使用。对用户来说,会话迁移和多路复用会无声进行。
DCI_SYSDBA: 在这种模式下,您将获得 SYSDBA 访问权限。
DCI_SYSOPER: 在此模式下,您将获得 SYSOPER 访问权限。
DCI_SYSASM: 在此模式下,您将获得 SYSASM 访问权限。
DCI_SYSBKB: 在此模式下,您将获得 SYSBACKUP 访问权限。
DCI_SYSDGD: 在此模式下,您将获得 SYSDG 访问权限。
DCI_SYSKMT: 在此模式下,您将获得 SYSKM 访问权限。
DCI_SYSRAC: 在此模式下,您将获得 SYSRAC 访问身份验证。
DCI_PRELIM_AUTH: 这种模式和DCI_SYSDBA、DCI_SYSOPER一起使用,作为某些访问任务的鉴别;
DCI_STMT_CACHE: 在给定的服务句柄上启用具有默认大小的语句缓存。如果应用程序稍后要在该服务句柄上使用DCI_ATTR_STMTCACHESIZE显式设置大小,则传递此模式是可选的。
外部接口
无。
其它说明
无。
DCISessionEnd
功能描述
终止由DCISessionBegin()创建的用户会话上下文。
功能说明
当前会话结束后,需要断开与服务器的连接,结束用户对数据库的操作,终止由DCISessionBegin()创建的用户会话上下文,不会释放用户会话上下文的存储空间。如果现实分配失误句柄,并且失误句柄没有被使用,则可能会被释放。用户会话句柄可以在对DCISessionBegin()的新调用中重新使用被释放的资源。如果启用了DCI的应用程序的连续性,则DCISessionEnd()会在应用程序请求结束时进行隐式标记。DCI停止记录call并清除历史记录。
接口信息
函数/过程
DCISessionEnd语法如下:
sword DCISessionEnd (
DCISvcCtx *svchp,
DCIError *errhp,
DCISession *usrhp,
ub4 mode
)
参数解释如下:
svchp:有效的服务上下文句柄。
errhp:错误句柄,可以通过DCIErrorGet()诊断错误信息。
usrhp:取消用户验证,如果此NULL作为此参数传递,则服务上下文句柄中的用户将被取消身份验证。
mode:唯一有效的模式是DCI_DEFAULT。
外部接口
无。
其它说明
无。
DCIServerVersion
功能描述
返回客户端版本信息。
功能说明
返回运行时客户端的数据库版本号。
接口信息
函数/过程
DCIServerVersion语法如下:
void DCIServerVersion (
dvoid *hndlp,
dvoid *errhp,
dvoid *bufp,
dvoid *bufsz,
dvoid *hndtype
)
参数的解释如下:
hndlp(IN):服务上下文句柄或服务器上下文句柄。
reehp(IN/OUT):一个错误句柄,出现错误时可以传递给他以DCIGetError()来获取诊断信息。
bufp(IN/OUT):返回版本信息的缓冲区。
bufsz(IN):缓冲区长度,单位为字节。
hndtype(IN):传递给函数的句柄类型。
外部接口
无。
其它说明
无。