金仓数据库 OCCI 迁移指南(4. KingbaseES 的 OCCI 迁移指南)

4. KingbaseES 的 OCCI 迁移指南

本部分描述 KingbaseES 的 OCCI 迁移和配置。

本部分包含以下内容:

  • 迁移前准备

  • 工程搭建与迁移

  • 代码迁移与编译

  • 数据库服务与连接配置

  • 迁移后确认

4.1. 迁移前准备

在开始工程迁移前,需要做好一系列准备,包括:

  • 适配度评估

  • 系统环境评估

4.1.1. 适配度评估

迁移前,需确认 KingbaseES 所支持的数据类型和函数是否满足您的业务需求。 您可以参考 KingbaseES 的 OCCI 特性支持 章节中的表格,评估是否可以完成迁移工程。

4.1.2. 系统环境评估

除了特性支持适配度以外,还需要考虑使用的平台是否支持 KingbaseES 数据库。目前 KingbaseES 支持的平台如下:

  • Windows 系统: 64 位操作系统,可运行 64 位 / 32 位 VS2013

    在该平台上,可兼容 release/debug 版本的 OCCI。

  • Linux 系统: 各种主流的操作系统 64 位发行版本的 CPU 平台,如 x86/arm/mipsel/loongarch64

    默认使用 gcc4.8.5 。

注意:

由于在 gcc5.1 版本之后重新实现了 C++ 底层的 string 类和 list 类,为了与原有方式兼容,引入了双重 ABI。新版本 gcc 默认使用新的 ABI, 即使用新版本 C++ 库,也可通过设置 gcc 参数定义宏_GLIBCXX_USE_CXX11_ABI=0(默认 1 表示新 ABI)以表示使用旧版本的 ABI,使用旧版本的 C++ 库。

在使用驱动之前,要明确项目所使用 gcc 版本、是否使用新的 ABI, 以及编译数据库驱动的 gcc 版本。

若项目使用高版本 gcc(大于 5.1)且使用新的 ABI (默认), 在连接低版本 gcc 编译的驱动时,会报错 undefined symbol,因要求提供高版本 gcc 编译的驱动。

若项目所在系统使用高版本 gcc,但在编译应用时指定了(_GLIBCXX_USE_CXX11_ABI=0)且又使用高版本 gcc 编译的数据库驱动,连接是也会报错,应要求提供低版本 gcc 编译的驱动。

4.2. 工程搭建与迁移

  • 工程搭建

  • 工程迁移

4.2.1. 工程搭建

  • Linux 平台工程搭建

  • Windows 平台工程搭建

4.2.1.1. Linux 平台工程搭建

  1. 将 OCCI 库文件拷贝至需求目录,本例的解压目录为 /home/nli/occitest;

2. 添加环境变量 $KINGBASE_CONFDIR(如.bashrc 中添加 "export KINGBASE_CONFDIR=/home/nli/occitest"),该目录下需放置 OCCI 的数据源配置文件 sys_service.conf。如果环境中因使用其他接口库而配置了该环境变量,则可复用该环境变量及其目录下的 sys_service.conf 文件;

3. 将 OCCI 中的 lib 目录添加至环境变量 LD_LIBRARY_PATH 中(如.bashrc 中添加 "export LD_LIBRARY_PATH=/home/nli/occitest/lib:$LD_LIBRARY_PATH");

4. 在 makefile 文件中引入 OCCI 中的头文件目录和库文件目录;

金仓数据库 OCCI 迁移指南(4. KingbaseES 的 OCCI 迁移指南)_第1张图片

4.2.1.2. Windows 平台工程搭建

  1. 将 OCCI 库文件拷贝至需求目录,本例的解压目录为 D:\kbocci\v8r6_occi_win;

金仓数据库 OCCI 迁移指南(4. KingbaseES 的 OCCI 迁移指南)_第2张图片

2. 添加环境变量 $KINGBASE_CONFDIR(如图所示,在 “控制面板→系统和安全→系统→高级系统设置→环境变量→系统环境变量” 中添加变量 "KINGBASE_CONFDIR",变量值设为配置文件 sys_service.conf 所在的目录);该目录下需放置 OCCI 的数据源配置文件 sys_service.conf。如果环境中因使用其他接口库而配置了该环境变量,则可复用该环境变量及其目录下的 sys_service.conf 文件。

3. 将 OCCI 中的 lib 目录添加至环境变量 PATH 中(如在系统环境变量中的 PATH 变量中添加 "D:\kbocci\v8r6_occi_win\lib_x64\release" 值);

金仓数据库 OCCI 迁移指南(4. KingbaseES 的 OCCI 迁移指南)_第3张图片

4. 在工程配置文件中引入 OCCI 中的头文件目录和库文件目录。

金仓数据库 OCCI 迁移指南(4. KingbaseES 的 OCCI 迁移指南)_第4张图片

金仓数据库 OCCI 迁移指南(4. KingbaseES 的 OCCI 迁移指南)_第5张图片

4.2.2. 工程迁移

将 Oracle 的 OCCI 工程迁移至 KingbaseES 是极为简单的,通常不需要在代码层进行改动,仅需在 KingbaseES 的 OCCI 库安装后变更一下编译依赖即可。

工程搭建 章节中详细介绍了金仓 OCCI 库的安装和使用方法,应用层可按照对应的步骤更改编译依赖,或者将原工程代码拷贝后,按照搭建步骤重新搭建依赖 KingbaseES OCCI 库的工程即可。

4.3. 代码迁移与编译

代码层通常不需要改动,只需要在完成 工程搭建与迁移 之后,即可进行编译。编译流程图如下图所示:

金仓数据库 OCCI 迁移指南(4. KingbaseES 的 OCCI 迁移指南)_第6张图片

4.4. 数据库服务与连接配置

需要通过 sys_service.conf 文件配置数据源。

OCCI 的 sys_service.conf 文件配置与 OCI 的配置方法相同,KingbaseES 的 DCI 兼容了 OCI,因此您可以参考《KingbaseES 客户端编程接口指南 - DCI》的 sys_service.conf 文件配置。

详见 KingbaseES 客户端编程接口指南 - DCI 的 DCI 服务的配置方法与参数说明。

sys_service.conf 中的中括号里的字串代表一个数据源名字, OCCI 程序里中建立连接的地方需要填的是 sys_service.conf 中的数据源名字。

配置文件示例:

[KingbaseES]
dbname=test
port=54321
host=127.0.0.1
#Print=1
#DCILog=oci.log
#DCILogLevel=DEBUG3
#UseExtendedProtocol=1
#UsePackage=1
#AutoCommit=1

4.5. 迁移后确认

迁移完成后,需确认迁移是否成功,以保证迁移后业务正常运行。

  1. 迁移完成后,编写一个程序连接到 KingbaseES 数据库,查看是否能连接成功。

    程序示例请参考 程序开发示例 中的连接和断开数据库。

  2. 尝试运行您的业务,观察是否与迁移前行为一致。

如有疑问,请联系我们的技服人员。

你可能感兴趣的:(KingbaseES产品手册,c++,开发语言)