设置DCI驱动
安装DCI驱动前需要先装好Vastbase G100 Libpq和unixODBC以及ODBC,并配置环境变量。
安装Vastbase G100 Libpq
安装Libpq有两种方式。
- 通过提供的Libpq安装包安装。
解压Vastbase G100提供的Libpq,新建/usr/local/libpq目录,将解压后的 include和lib目录拷贝到/usr/local/libpq目录下,配置环境变量如下:
export LD_LIBRARY_PATH=/usr/local/libpq/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=/usr/local/libpq/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=/usr/local/libpq/include:$CPLUS_INCLUDE_PATH
- 通过Vastbase G100安装包安装。
安装过程可参考Vastbase G100 安装指南中的数据库安装步骤。新建/usr/local/libpq目录,将数据库安装目录中的 include和lib目录拷贝到/usr/local/libpq目录下,配置上述环境变量。
安装unixODBC
以下步骤以安装unixODBC-2.3.9为例。
1、解压安装包。
tar zxvf unixODBC-2.3.9.tar.gz
2、编译安装。
cd unixODBC-2.3.9
./configure --enable-gui=no #如果要在鲲鹏服务器上编译,请追加一个configure参数: --build=aarch64-unknown-linux-gnu
make #安装可能需要root权限
make install
安装ODBC
使用ODBC安装包ODBC安装可以选择安装opengGauss提供的安装包或者由Vastbase G100提供的安装包。
- 安装openGauss-2.0.0-ODBC
1、下载对应平台的openGauss-2.0.0-ODBC(目前仅支持centos_x86_64、openeuler_aarch64、openeuler_x84_64)地址:https://opengauss.org/zh/download.html
2、替换客户端 openGauss 驱动程序。
解压 openGauss-2.0.0-ODBC.tar.gz, 将解压后 lib 目录下的库拷贝到”/usr/local/lib” 目录下。
- 安装Vastbase G100 ODBC
1、解压由Vastbase G100提供的ODBC驱动安装包,安装包可联系工程师获取。
2、将解压后的lib目录、unixodbc/lib以及odbc/lib目录下的库拷贝到”/usr/local/lib” 目录下。
配置数据源
1、配置 ODBC 驱动文件。 在”/usr/local/etc/odbcinst.ini” 文件中添加以下内容。
[VastbaseMPP] # 驱动器名称,对应数据源 DSN 中的驱动名。
Driver64=/usr/local/lib/psqlodbcw.so # 驱动动态库的路径。
setup=/usr/local/lib/psqlodbcw.so # 驱动安装路径,与Driver64 中动态库的路径一致。
2、配置数据源文件。 该步骤并不是必须的, 取决于获取连接的方式, 详见下章“连接数据库” 小节。 在”/usr/local/etc/odbc.ini” 文件中添加以下内容。
[Test] # 数据源的名称。
Description=Test # 数据源说明。
Driver=VastbaseMPP # 驱动名,对应odbcinst.ini中的DriverName。
Servername=172.16.12.57 # 服务器的 IP 地址。
Database=vastbase # 要连接的数据库的名称。
Username=odbc # 数据库用户名称。
Password= Gauss@123 # 数据库用户密码。
Port=5432 # 服务器的端口号。
Sslmode=allow # 开启SSL模式:disable否,allow可能,prefer可能,requrie是,verify-ca是, verify-full是。
配置环境变量
1、修改配置文件。
vim ~/.bashrc
配置文件中追加以下内容:
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
export ODBCSYSINI=/usr/local/etc
export ODBCINI=/usr/local/etc/odbc.ini
2、执行如下命令使配置生效。
source ~/.bashrc
测试数据源配置
上述配置中该数据源的 DSN 为 Test,可以通过 isql 来验证配置是否正确。 命令如下。
isql -v Test
如果数据源配置中未指定用户名和密码,则用 isql 测试连接时需要指定用户密码:
isql -v Test yuntu Ttest@123
如果显示以下信息,表示配置正确,连接成功。
如果显示查找不到psqlodbcw.so动态库,如图:
在确认动态库确实存在之后,该错误可能是由于当前机器上缺少odbc驱动库的依赖库造成的,可以使用ldd命令观察缺失的动态库后安装对应的依赖库。
安装DCI驱动
1、解压由Vastbase G100提供的DCI驱动安装包,并将路径添加到LD_LIBRARY_PATH环境变量里,再将LD_LIBRARY_PATH添加到LIBRARY_PATH环境变量里。
vi ~/.bashrc
添加以下内容
export LD_LIBRARY_PATH="DCIpath:$LD_LIBRARY_PATH"
export LIBRARY_PATH="$LD_LIBRARY_PATH:$LIBRARY_PATH"
2、将解压后的.so和.a文件拷贝到“/usr/local/lib” 目录下。
3、将头文件放到/usr/include/路径下(头文件另外提供或者使用DCI12.c的头文件)。
使用DCI连接数据库
获取DCI连接
DCIEnv *envhp; // 环境句柄
DCIServer *srvhp; // 服务句柄
DCIError *errhp; // 错误句柄
DCISvcCtx *svchp; //服务上下文句柄
/* 1.分配环境和错误句柄 */
if(DCIEnvCreate((DCIEnv **) &envhp, (ub4) DCI_DEFAULT,
(dvoid *) 0, (dvoid * (*)(dvoid *,size_t)) 0,
(dvoid * (*)(dvoid *, dvoid *, size_t)) 0,
(void (*)(dvoid *, dvoid *)) 0, (size_t) 0, (dvoid **) 0))
{
printf("FAILED: DCIEnvCreate()\n");
return DCI_ERROR;
}
If(DCIHandleAlloc( (dvoid *) envhp, (dvoid **) &errhp, (ub4) DCI_HTYPE_ERROR,
(size_t)0, (dvoid **) 0))
{
printf("FAILED: DCIHandleAlloc()\n");
return DCI_ERROR;
}
/* 2.建立连接并创建简单会话*/
if(DCILogon(envhp, errhp, &svchp, username, strlen (username),
password, strlen (password), "", 0))
{
printf("FAILED: DCILogon()\n");
return DCI_ERROR;
}
关闭DCI连接
关闭连接时调用DCILogoff()函数关闭数据库连接:
if(DCILogoff(svchp, errhp))
{
printf("FAILED: DCILogoff()\n");
return DCI_ERROR;
}
if(svchp)
DCIHandleFree((dvoid *)svchp, (ub4)DCI_HTYPE_SVCCTX);
if(errhp)
DCIHandleFree((dvoid *)errhp, (ub4)DCI_HTYPE_ERROR);
if(envhp)
DCIHandleFree((dvoid *)envhp, (ub4)DCI_HTYPE_ENV);