自1999年以来,我们的银行一直在Progress OpenEdge平台上使用集成的BISKVIT银行系统来为后台服务,该后台在包括金融部门在内的世界范围内得到广泛使用。 这种DBMS的性能使您每秒可以在一个数据库(DB)中读取多达一百万或更多的记录。 我们的Progress OpenEdge为约150万个人存款和约2220万份活性产品(汽车贷款和抵押)合约提供服务,并且还负责与监管机构(CB)和SWIFT进行的所有结算。

使用Progress OpenEdge,我们面临一个事实,那就是我们需要与Oracle DBMS交朋友。 最初,此捆绑包是我们基础架构的“瓶颈”,直到我们安装并配置了Pro2 CDC(一种Progress产品),该产品可以使您将Progress DBMS的数据直接在线发送到Oracle DBMS。 在本文中,我们将详细介绍所有陷阱,介绍如何有效地与OpenEdge和Oracle交朋友。
状况:通过文件共享将数据上传到QCD
首先,关于我们基础架构的一些事实。 数据库的活动用户数约为15,000。 所有生产数据库(包括副本数据库和备用数据库)的容量为600 TB,最大的数据库为16.5 TB。 同时,数据库也在不断补充:仅在去年,就增加了约120 TB的生产数据。 该系统在x86平台上提供150个前端服务器。 数据库托管在21台IBM平台服务器上。

前端系统,各种ABS和银行服务通过Sonic ESB总线与OpenEdge Progress(IBS BISQUIT)集成在一起。 数据通过文件交换上传到QCD。 直到某个时间点,这种解决方案都立即遇到两个大问题-将信息上载到公司数据仓库(QCD)的性能低以及与其他系统进行数据协调(对帐)所需的时间长。

因此,我们开始寻找可以加速这些过程的工具。 这两个问题的解决方案正是新的Progress OpenEdge产品-Pro2 CDC(更改数据捕获)。 因此,让我们开始吧。
安装进度OpenEdge和Pro2Oracle
要在管理员的Windows计算机上运行Pro2 Oracle,只需安装Progress OpenEdge Developer Kit课堂版,即可免费
下载 。 OpenEdge默认安装目录:
DLC:C:\ Progress \ OpenEdge
WRK:C:\ OpenEdge \ WRKETL流程需要Progress OpenEdge 11.7+版本许可证-即用于Oracle和4GL开发系统的OE DataServer。 这些许可证包含在Pro2中。 为了使DataServer for Oracle在远程Oracle数据库中完全运行,需要安装Full Oracle Client。
在Oracle服务器上,您需要安装Oracle Database 12+版本,创建一个空数据库并添加用户(我们将其称为
cdc )。
要安装Pro2Oracle,请从
Progress Software下载中心下载最新的分发软件包。 将存档解压缩到
C:\ Pro2目录(使用相同的分发工具包在Unix上配置Pro2,并应用相同的配置原理)。
创建一个cdc复制数据库
Pro2使用
cdc(repl)复制数据库来存储配置信息,包括复制映射,复制数据库的名称及其表。 它还包含一个复制队列,其中包含有关源数据库中的表行已更改的事实的注释。 ETL流程使用复制队列中的数据来标识需要从源数据库复制到Oracle的行。
创建一个单独的cdc数据库。
创建数据库的过程- 在数据库服务器上,为cdc数据库创建目录-例如,在/ database / cdc / server上。
- 为cdc基础创建一个虚拟: procopy $ DLC /空的cdc
- 启用大文件支持: proutil cdc -C EnableLargeFiles
- 我们准备脚本来启动cdc数据库。 启动参数应类似于复制数据库的启动参数。
- 我们启动cdc数据库。
- 我们连接到cdc数据库,并从Pro2软件包中随附的cdc.df文件加载Pro2图。
- 在cdc数据库中,创建以下用户:
pro2adm-用于从Pro2管理面板进行连接;
pro2etl-用于连接ETL进程(ReplBatch);
pro2cdc-用于连接CDC进程(CDCBatch); 激活OpenEdge更改数据捕获
现在让我们打开CDC机制本身,通过该机制将数据复制到其他技术领域。 在每个Progress OpenEdge源数据库中,您需要添加要向其复制源数据的单独存储区域,并使用
proutil命令激活该机制本身。
bisquit数据库的示例过程- 将cdcadd.st文件从C:\ Pro2 \ db 目录复制到bisquit源数据库目录。
- 我们在cdcadd.st中描述了ReplCDCArea和ReplCDCArea_IDX区域的固定范围范围。 您可以在线添加新的存储区域: prostrct addonline bisquit cdcadd.st
- 激活OpenEdge CDC:
proutil bisquit -C enablecdc区域“ ReplCDCArea”索引区域“ ReplCDCArea_IDX”
- 必须在源数据库中创建以下用户以标识正在运行的进程:
一个 pro2adm-用于从Pro2管理面板进行连接。
b。 pro2etl-用于连接ETL进程(ReplBatch)。
c。 pro2cdc-用于连接CDC进程(CDCBatch)。
为DataServer for Oracle创建模式持有人
下一步,我们需要在服务器上创建数据库模式持有人,将从Progress DBMS到Oracle DBMS的数据复制到该服务器上。 DataServer Schema Holder是一个空的Progress OpenEdge数据库,没有用户或应用程序数据,其中包含源表与外部Oracle表之间的对应关系图。
用于Pro 2的Progress OpenEdge DataServer for Oracle的Schema Holder数据库必须位于ETL流程服务器上;该数据库是为每个分支单独创建的。
如何创建模式持有人- 将Pro2发行包解压缩到/ pro2目录中
- 创建并转到/ pro2 / dbdb目录
- 使用procopy $ DLC /空bisquitsh命令创建模式持有人数据库
- 我们将bisquitsh转换为必要的编码-例如,如果Oracle数据库以UTF-8编码, 则以 utf-8编码: proutil bisquitsh -C convchar转换UTF-8
- 创建空的bisquitsh数据库后, 我们以单用户模式连接到该数据库: pro bisquitsh
- 转到数据字典: 工具->数据字典-> DataServer-> ORACLE实用程序->创建DataServer架构
- 启动架构持有人
- 配置Oracle DataServer代理:
一个 启动AdminServer。
proadsv-开始
b。 Oracle DataServer Broker的启动
oraman-名称orabroker1-开始
配置管理面板和复制方案
Pro2管理面板可配置Pro2设置,包括设置复制方案并生成ETL处理程序(处理器库),主同步程序(批量复制处理器),复制触发器和OpenEdge CDC策略。 还有一些用于监视和管理ETL和CDC流程的主要工具。 首先,我们配置参数文件。
如何设置参数文件- 转到目录C:\ Pro2 \ bprepl \ Scripts
- 打开replProc.pf文件进行编辑
- 添加用于连接到cdc复制数据库的参数:
#复制数据库
-db cdc -ld repl -H <主数据库的主机名> -S <cdc数据库代理的端口>
-U pro2admin -P <密码>
- 将用于连接到源数据库和Schema Holder的参数以参数文件的形式添加到replProc.pf中 。 参数文件的名称必须与要连接的源数据库的名称匹配。
#连接到所有复制的源BISQUIT
-pf bprepl \脚本\ bisquit.pf
- 在replProc.pf中添加用于连接到模式持有器的参数。
#Target Pro DB模式持有人
-db bisquitsh -ld bisquitsh
-H <ETL进程的主机名>
-S <biskuitsh代理端口>
-db bisquitsql
-ld bisquitsql
-dt Oracle
-S 5162 -H <Oracle代理主机名>
-DataService orabroker1
- 保存replProc.pf参数文件
- 接下来,您需要在C:\ Pro2 \ bprepl \ Scripts:bisquit.pf目录中创建并打开用于编辑每个已连接源数据库的参数文件。 每个pf文件都包含用于连接到相应数据库的参数,例如:
-db bisquit -ld bisquit -H <主机名> -S <代理端口>
-U pro2admin -P <密码>
要配置Windows快捷方式,请转到
C:\ Pro2 \ bprepl \ Scripts目录,然后编辑“
Pro2-管理”快捷方式。 为此,请打开快捷方式的属性,并在“
开始于 ”行
中指示安装目录Pro2。 对于“ Pro2-Editor”和“ RunBulkLoader”标签,需要执行类似的操作。
配置Pro2管理:下载主要配置
我们启动控制台。

转到“数据库地图”。

要在Pro2-管理中链接数据库,请转到“
数据库映射”选项卡。 我们添加源数据库的映射
-Schema Holder-Oracle 。

转到“
映射”选项卡。 在“
源数据库”列表中,默认情况下选择第一个连接的源数据库。 列表的右侧应为“
所有数据库已连接” -所选数据库已连接。 来自bisquit的“进度”表列表应在左下方显示。 右侧是Oracle数据库中的表的列表。
在Oracle中创建SQL模式和数据库
要创建复制映射,必须首先在Oracle中生成
SQL模式 。 在Pro2 Administration中,执行菜单项
Tools-> Generate Code-> Target Schema ,然后在
Select Database对话框中
选择一个或多个源数据库并将其移至右侧。

单击“确定”,然后选择目录以保存SQL模式。
接下来,我们创建基础。 例如,这可以通过
Oracle SQL Developer来完成。 为此,请连接到Oracle数据库并加载该方案以添加表。 更改Oracle表的组成后,您需要更新Schema Holder中的SQL模式。

成功完成下载后,退出bisquitsh数据库并打开Pro2管理面板。 Oracle数据库中的表应显示在右侧的“映射”选项卡上。
映射表
要在Pro2管理面板中创建复制映射,请转到“映射”选项卡,选择源数据库。 我们单击Map Tables,在左侧选择应该复制到Oracle的Select Changes表,将它们转移到右侧并确认选择。 将自动为所选表格创建一个地图。 重复该操作,为其他源数据库创建复制映射。

Pro2复制处理器库和批量复制处理器程序的生成
处理器库专为特殊的复制过程(ETL)设计,该过程处理Pro2复制队列并将更改推送到Oracle数据库。 生成后,复制处理器库程序将自动保存在
bprepl / repl_proc目录(参数PROC_DIRECTORY)中 。 要生成复制处理器库,请转到
工具->生成代码->处理器库。 生成完成后,程序将出现在
bprepl / repl_proc目录中 。
批量处理器程序用于基于Progress ABL(4GL)编程语言将源Progress数据库与目标Oracle数据库同步。 要生成它们,请转到菜单项
工具->生成代码->批量复制处理器 。 在“选择数据库”对话框中,选择源数据库,将其传输到窗口的右侧,然后单击“
确定” 。 生成完成后,程序将出现在
bprepl \ repl_mproc目录中 。
在Pro2中配置复制过程
将表分成由单独的复制线程提供服务的集合可以提高Oracle Pro2的性能和效率。 默认情况下,在复制映射中为新复制表创建的所有连接都绑定到流号1。建议将表划分为不同的流。
有关复制流状态的信息显示在“复制状态”部分的“监视”选项卡的“ Pro2管理”屏幕上。 有关参数值的详细说明,请参见Pro2文档(目录C:\ Pro2 \ Docs)。
创建并激活CDC策略
策略是OpenEdge CDC机制的一组规则,根据这些规则跟踪表中的更改。 在撰写本文时,Pro2仅支持级别0的CDC策略,也就是说,仅跟踪
记录更改的事实。
要在管理面板上创建CDC策略,请转到“映射”选项卡,选择源数据库,然后单击“添加/删除策略”按钮。 在打开的“选择更改”窗口中,在左侧选择并转移到需要为其创建或删除CDC策略的右表。
要激活,请再次打开“映射”选项卡,选择源数据库,然后单击“
(In)激活策略”按钮。 选择并转移到需要激活其策略的表的右侧,单击“确定”。 之后,它们将标记为绿色。 使用
(在)“激活策略”中 ,您还可以禁用CDC策略。 所有操作均在线执行。

激活CDC策略后,有关更改记录的注释将根据原始数据库保存在
“ ReplCDCArea”存储区域中。 这些注释将由特殊的
CDCBatch进程处理,该过程将基于它们在
cdc(repl)数据库的Pro2复制队列中创建注释。
因此,我们有两个复制队列。 第一个阶段是CDCBatch:从原始数据库开始,数据首先进入中间CDC数据库。 第二阶段是何时将数据从CDC数据库倒入Oracle。 这是当前体系结构和产品本身的功能-到目前为止,开发人员还无法建立直接复制。
主要同步
在打开CDC机制并设置Pro2复制服务器之后,我们需要启动主同步。 主同步启动命令:
/pro2/bprepl/Script/replLoad.sh bisquit表名初始同步完成后,可以启动复制过程。
开始复制过程
要启动复制过程,您需要运行
replbatch.sh脚本。 在开始之前,请确保所有线程都有replbatch脚本-replbatch1,replbatch2等。 如果一切就绪,请打开命令行(例如
proenv) ,转到
/ bprepl / scripts目录并启动脚本。 在管理面板中,我们确认相应的进程已收到RUNNING状态。

结果

实施之后,我们大大加快了将信息上载到公司数据仓库的速度。 数据本身将在线传输到Oracle。 无需将时间花费在一些长时间运行的查询上即可从不同的系统收集数据。 此外,在此解决方案中,复制过程可以压缩数据,这也对速度产生积极影响。 现在,BISKVIT系统与其他系统的每日对帐开始需要15-20分钟而不是2-2.5小时,而完全对帐-几个小时而不是两天。