达梦(DM)数据库数据信息搜集表举例说明

MoMo 2021年6月14日12:38:00
评论
110

第一步,初始化数据捕获环境。

SP_INIT_CPT_SYS(1) ;

第二步,创建要监控的表对象 T1

CREATE TABLE T1(C1 INT,C2 BLOB, C3 CHAR(10),C4 SMALLINT,PRIMARY KEY(C1));

INSERT INTO T1 VALUES(1, 'A' , 'AB', 11);

COMMIT;

第二步,在具体代码中调用 DPI 接口。通过调用数据捕获 DPI 接口,指定对具体对象

具体列的监控。

下面编写一段代码,通过调用数据捕获 DPI 接口,来实现对表 T1 中,所有列的监控。

#include "DPIext.h"

#include "DPI.h"

#include "DPItypes.h"

#include "dmcpt_dll.h"

dhenv henv; /*环境句柄*/

dhcon hdbc; /*连接句柄*/

dhcon get_hdbc(dhcon hdbc,dhenv   henv)

{

/*创建 DPI 运行环境*/

//dpi_init();

/*申请一个环境句柄*/

dpi_alloc_env(&henv);

/*申请一个连接句柄*/

dpi_alloc_con(henv,&hdbc);

/*设置连接端口*/

dpi_set_con_attr(hdbc, DSQL_ATTR_LOGIN_PORT, 5236, 0);

/*连接到本地服务器*/

if (!DSQL_SUCCEEDED(dpi_login(hdbc,"192.168.0.38","SYSDBA","SYSDBA")))

{

printf("connect failed!\n");

exit(-1);

}

return hdbc;

}

void free_hdbc(dhcon hdbc,dhenv   henv)

{

/*断开与数据源之间的连接*/

dpi_logout(hdbc);

/*释放连接句柄*/

dpi_free_con(hdbc);

/*释放环境句柄*/

dpi_free_env(henv);

}

void test_cptview_case1()

{

cpt_col_def_t* col_def;

cpt_col_def_t* temp;

char cdc_id[130] = "NULL";

char cdc_blob_id[130]="NULL";

cpt_error_info_t ei;

col_def=(cpt_col_def_t*)malloc(sizeof(cpt_col_def_t)*4);

strcpy(col_def->name,"c1");

strcpy(col_def->col_define,"");

strcpy(col_def->expr,"");

temp = col_def + 1;

strcpy(temp->name,"c2");

strcpy(temp->col_define,"");

strcpy(temp->expr,"");

temp = temp + 1;

strcpy(temp->name,"c3");

strcpy(temp->col_define,"");

strcpy(temp->expr,"");

temp = temp + 1;

strcpy(temp->name,"c4");

strcpy(temp->col_define,"");

strcpy(temp->expr,"");

hdbc=get_hdbc(hdbc, henv);

dm_create_change_data_capture(hdbc,"SYSDBA","T1","",col_def,4,cdc_id,130,cdc_blob_id,130,

&ei);

printf("cdc_id:%s\n",cdc_id);

printf("cdc_blob_id:%s\n",cdc_blob_id);

printf("%s\n",ei.error_info);

//可以在此改变表中的数据,

//手动在客户端查询打印出的 cdc_id 和 cdc_blob_id 表名,监控开启捕获后,T1 表中数据的

变化。

//dm_drop_change_data_capture(hdbc,cdc_id,  &ei);可以在此处关闭 DPI 接口。因为本例需要

后面查看查看捕获表,所以不关闭。

free_hdbc(hdbc, henv);

}

void main()

{

test_cptview_case1();

system("pause");

}

第三步,在数据捕获的窗口中,查看打印出的 cdc_id 和 cdc_blob_id

cdc_id:CPT_SYSDBA_T1_82118833738749

cdc_blob_id:CPT_SYSDBA_T1_82118833738749_BLOB

第四步,对具体对象进行操作。通过 disql 等客户端来改变表中的数据。

insert into t1 values(2, 'B', 'BC', 22);

insert into t1 values(3, 'C', 'CD', 33);

insert into t1 values(4, 'D', 'DE', 44);

第五步,查看数据捕获表。通过 disql 等客户端来查看 cdc_id 和 cdc_blob_id 表中的数据。

cdc_id 表:

select * from CPT_SYSDBA_T1_82118833738749;

--查询结果如下:

行号 OP_SEQ OPTYPE HAS_BLOB   C1 C3 C4 OP_ERROR

---------- --------   ----------- --------   ----------- --------   ----------- --------   ----------- --------

1 2 I Y 2 BC 22 NULL

2 3 I Y 3 CD 33 NULL

3 4 I Y 4 DE 44 NULL

cdc_blob_id 表:

select * from CPT_SYSDBA_T1_82118833738749_BLOB;

--查询结果如下:

行号 OP_SEQ COL_NAME C1

---------- -------------------- -------- ----------- ----------- --------

1 2 C2 2

2 3 C2 3

3 4 C2 4

 6 步,结束的时候,关闭数据捕获的环境。

SP_INIT_CPT_SYS(0);
https://xpanx.com/
MoMo
  • 本文由 发表于 2021年6月14日12:38:00
  • 转载请务必保留本文链接:https://xpanx.com/2890.html
统信uos邮箱设置 统信UOS操作系统

统信uos邮箱设置

在邮箱主界面,单击 。进入邮箱设置界面,可进行帐号设置、基本设置、反垃圾设置 及高级设置。(如图 4.22 所示) 1.账号设置 邮箱帐号:增加或删除邮箱帐号,单击【添加帐号】,可继续添加新的邮箱帐号...
统信uos邮箱主界面介绍 统信UOS操作系统

统信uos邮箱主界面介绍

邮箱主界面由邮箱帐户、邮箱目录、邮件列表、邮件正文、写邮件、收邮件、通讯录、搜 索等组成,如图 4.21 所示。 表 4.4 主界面介绍图表 1 写邮件 快速开始写邮件。 2 通讯录 展示通讯录列表及...
统信uos浏览器个性化设置 统信UOS操作系统

统信uos浏览器个性化设置

浏览器的基础设置如刷新网页、浏览历史记录、进入主菜单、显示下载记录、打开标签页 等(如图 4.13 和表 4.3 所示) 表 4.3 图标 说明 图标 说明 单击转到上一页,右击显示浏览历史。 添加标...
统信uos云端应用 统信UOS操作系统

统信uos云端应用

1 登录您的网络帐号,点击【我的应用】选项,单击 【云端应用】,即可看到该帐号 下安装的全部云端应用。如图 4.9 所示 2 选择想要安装的云端应用,单击 。 3 安装完后,应用会同步显示在本地应用和...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: