VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

复杂连接服务接口

复杂连接服务包括服务建立、会话开始、会话结束、服务结束四个APL。

分配个OCI句柄之后,需要使用OCIServerAttach为OCI操作创建数据源的访问路径,然后在登陆数据库前以给定的方式设置服务器连接指针的参数,然后使用函数OCISessionBegin来实现创建和开始与数据库的会话,会话结束之后,使用OCISessionEnd来断开OCISessionBegin创建的数据库的会话,用OCIServerDetach来清除数据源访问路径。

OCIServerAttach

功能描述

为OCI操作创建数据源的访问路径。

功能说明

该调用用于创建OCI应用程序和特定服务之间的关联。该调用初始化一个服务上下文句柄,必须确保传入的服务上下文句柄未被初始化。

当该调用成功执行之后,将启动oracle数据库的shadow进程。OCISessionEnd和OCIServerDetach被用来清理shadow进程,否则shadow进程的累计增加会导致Linux或者Unix系统进程耗尽进程。如果没有足够的进程的重新启动数据库,则可能无法启动。

如果应用程序同时操作多个服务,则多个服务上下文句柄需要被维护。

接口信息

函数/过程

OCIServerAttach语法如下:

sword OCIServerAttach ( 
OCIServer     *srvhp,
        OCIError      *errhp,
        const OraText *dblink,
        sb4            dblink_len,
        ub4            mode 
)

参数解释如下:

  • srvhp:一个未初始化的服务句柄,如果传入已初始化的服务句柄会导致错误。
  • errhp:错误句柄,可以通过OCIErrorGet()诊断错误信息。
  • dblink:指定要使用的数据库服务。如果该字符串为NULL,将指定为默认主机,编码模式取决于应用环境句柄中的设置或mode。如果- mode=OCI_CPOOL,则dblink必须与创建连接池OCIConnectionPoolCreate()的poolName参数相同,且必须采用OCIEnvNlsCreate的charser参数指定的编码。
  • dblink_len:dblink指向的字符串长度,对于有效的字符串名称,dblink_len必须不为0。当mode=OCI_CPOOL时,无论什么编码,poolName都以字节为单位计算长度。
  • mode:指定各种操作模式:

    • OCI_DEFAULT:让服务上下文句柄使用环境句柄中的设置。
    • OCI_CPOOL:表示使用连接池。

    因为可以为任何连接会话句柄设置附加的服务句柄,所以mode的值不会影响任何会话句柄。

其他说明

OCIServerDetach

功能描述

删除 OCI 操作的数据源的访问路径

功能说明

此调用删除通过调用OCIServerAttach()来建立的OCI 操作的数据源访问路径。

接口信息

函数/过程

OCIServerDetach语法如下:

sword OCIServerDetach ( 
OCIServer   *srvhp,
                OCIError    *errhp,
                ub4          mode 
) 

具体参数解释如下:

  • srvhp:一个已经被初始化的服务上下文句柄,句柄没有被释放而是被重置为未被初始化的状态。
  • errhp:错误句柄,可以通过OCIErrorGet()诊断错误信息。
  • mode:唯一有效的模式是OCI_DEFAULT默认模式。

其他说明

OCISessionBegin

功能描述

建立与指定数据库的用户会话连接

功能说明

该调用通过服务上下文句柄中设置的服务句柄对用户进行身份验证。 如果OCI的应用程序启用了连续性,则OCISessionBegin()会在应用程序请求的开始时进行隐式标记。使用OCI会话池API时,无需调用OCIRequestBegin()和OCIRequestEnd()。

接口信息

函数/过程

OCISessionBegin语法如下:

sword OCISessionBegin ( 
OCISvcCtx     *svchp,
                OCIError      *errhp,
               OCISession    *usrhp,
                ub4            credt,
                 ub4            mode 
)

具体参数解释如下:

  • svchp:服务上下文句柄,必须设置有效的服务上下文句柄
  • errhp:错误句柄,可以通过OCIErrorGet()诊断错误信息
  • usrhp:用户会话上下文句柄,由此处初始化
  • credt:指定建立用户会话类型。有效值有:
    • OCI_CRED_RDBMS:使用数据库用户名和密码对进行身份验证。应该在此调用之前在用户会话上下文中设置OCI_ATTR_USERNAME和OCI_ATTR_PASSWORD属性
    • OCI_CRED_EXT:不需要使用用户名和密码进行身份验证。未提供用户名或密码
  • mode:指定各种操作模式。有效模式是:

    • OCI_DEFAULT:在这种模式下,只支持一盒会话句柄. 服务句柄使用环境句柄中的编码设置。
    • OCI_MIGRATE:移动会话模式;在该模式下,新的会话连接会以不同的会话句柄返回;使用该模式创建新的会话时,必须已存在一个不可移动会话模式的会话连接。也就是说,一个移动会话模式的会话连接必须有一个不可移动模式的连接作为父连接。

      当会话使用下面的连接池时不应使用此模式。对用户来说,会话迁移和多路复用会无声进行。

    • OCI_SYSDBA:在这种模式下,将获得 SYSDBA 访问权限。

    • OCI_SYSOPER:在此模式下,将获得 SYSOPER 访问权限。

    • OCI_SYSASM:在此模式下,将获得 SYSASM 访问权限。

    • OCI_SYSBKB:在此模式下,将获得 SYSBACKUP 访问权限。

    • OCI_SYSDGD:在此模式下,将获得 SYSDG 访问权限。

    • OCI_SYSKMT:在此模式下,将获得 SYSKM 访问权限。

    • OCI_SYSRAC:在此模式下,将获得 SYSRAC 访问身份验证。

    • OCI_PRELIM_AUTH:这种模式和OCI_SYSDBA、OCI_SYSOPER一起使用,作为某些访问任务的鉴别。

    • OCI_STMT_CACHE:在给定的服务句柄上启用具有默认大小的语句缓存。如果应用程序稍后要在该服务句柄上使用。

    • OCI_ATTR_STMTCACHESIZE显式设置大小,则传递此模式是可选的。

其他说明

OCISessionEnd

功能描述

终止由OCISessionBegin()创建的用户会话上下文

功能说明

当前会话结束后,需要断开与服务器的连接,结束用户对数据库的操作,终止由OCISessionBegin()创建的用户会话上下文,不会释放用户会话上下文的存储空间。如果现实分配失误句柄,并且失误句柄没有被使用,则可能会被释放。用户会话句柄可以在对OCISessionBegin()的新调用中重新使用被释放的资源。

如果启用了OCI的应用程序的连续性,则OCISessionEnd()会在应用程序请求结束时进行隐式标记。OCI停止记录call并清除历史记录。

接口信息

函数/过程

OCISessionEnd语法如下:

sword OCISessionEnd ( 
OCISvcCtx       *svchp,
                OCIError        *errhp,
                OCISession      *usrhp,
                ub4              mode 
)

参数解释如下:

  • svchp:有效的服务上下文句柄
  • errhp:错误句柄,可以通过OCIErrorGet()诊断错误信息
  • usrhp:取消用户验证,如果此NULL作为此参数传递,则服务上下文句柄中的用户将被取消身份验证
  • mode:唯一有效的模式是OCI_DEFAULT

其他说明

OCIServerVersion

功能描述

返回客户端版本信息。

功能说明

返回运行时客户端的数据库版本号。

接口信息

函数/过程

OCIServerVersion语法如下:

void OCIServerVersion (
dvoid        *hndlp, 
                        dvoid        *errhp, 
                        dvoid        *bufp,
                        dvoid        *bufsz,
                       dvoid        *hndtype 
)

参数的解释如下:

  • hndlp(IN):服务上下文句柄或服务器上下文句柄。
  • reehp(IN/OUT):一个错误句柄,出现错误时可以传递给他以OCIGetError()来获取诊断信息。
  • bufp(IN/OUT):返回版本信息的缓冲区。
  • bufsz(IN):缓冲区长度,单位为字节。
  • hndtype(IN):传递给函数的句柄类型。

其他说明

OCIConnectionPoolCreate

功能描述

初始化连接池。

功能说明

初始化连接池。

接口信息

函数/过程

OCIConnectionPoolCreate 语法如下:

sword OCIConnectionPoolCreate ( OCIEnv         *envhp,
                                OCIError       *errhp, 
                                OCICPool       *poolhp,
                                OraText        **poolName,
                                sb4            *poolNameLen,
                                const OraText  *dblink, 
                                sb4             dblinkLen,
                                ub4             connMin,
                                ub4             connMax,
                                ub4             connIncr,
                                const OraText  *poolUsername,
                                sb4             poolUserLen,
                                const OraText  *poolPassword,
                                sb4             poolPassLen,
                                ub4             mode );

具体参数解释如下:

  • envhp(IN):指向要创建连接池的环境的指针
  • errhp(IN/OUT):当发生错误时,可以传递给 OCIErrorGet ()用于诊断信息的错误句柄。
  • poolhp(IN):已分配的池句柄
  • poolName(OUT):连接池的名称。
  • poolNameLen(OUT):连接池的名称的长度。
  • dblink(IN):指定要连接到的数据库(服务器)。
  • dblinkLen(IN):dblink指向的字符串的长度。
  • connMin(IN):指定连接池中的最小连接数。有效值为0或更高。这些连接由OCIConnectionPoolCreate()打开到服务器。创建连接池后,仅在必要时打开连接。通常,此参数应设置为应用程序计划或预期运行的并发语句数。
  • connMax(IN):指定可以打开到数据库的最大连接数。达到此值后,将不再打开连接。有效值为1或更高。
  • connIncr(IN):如果当前连接数小于connMax,则允许应用程序为打开到数据库的连接设置下一个增量。有效值为0或更高。
  • poolUsername(IN):连接池需要隐式主会话。此属性提供该会话的用户名。
  • poolUserLen(IN):poolUsername的长度。
  • poolPassword(IN):用户名poolUsername的密码。
  • poolPassLen(IN):poolPassword的长度。
  • mode(IN):支持的模式有:

    • OCI_DEFAULT
    • OCI_CPOOL_REINITIALIZE

    通常,调用OCIConnectionPoolCreate()时,模式设置为OCI_DEFAULT。

    要动态更改池属性(例如,更改connMin、connMax和connIncr参数),请调用OCIConnectionPoolCreate(),模式设置为OCI_CPOL_REINITIALIZE。完成此操作后,将忽略其他参数。

其他说明

OCIConnectionPoolDestroy

功能描述

销毁连接池。

功能说明

销毁连接池。

接口信息

函数/过程

OCIConnectionPoolDestroy 语法如下:

sword OCIConnectionPoolDestroy ( OCICPool     *poolhp,
                                 OCIError     *errhp, 
                                 ub4           mode );

具体参数解释如下:

  • poolhp(IN):已为其创建池的池句柄。
  • errhp(IN/OUT):当发生错误时,可以传递给 OCIErrorGet ()用于诊断信息的错误句柄。
  • mode(IN):当前,此功能仅支持OCI_DEFAULT模式。

其他说明