如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

自1999年以来,为了服务后台,我行在Progress OpenEdge平台上使用了综合银行系统BISKVIT,该系统在全球范围内广泛使用,包括在金融领域。 该 DBMS 的性能允许您在一个数据库 (DB) 中每秒读取多达一百万条或更多记录。 我们的 Progress OpenEdge 为约 1,5 万笔个人存款和约 22,2 万份活跃产品合同(汽车贷款和抵押贷款)提供服务,并负责与监管机构(央行)和 SWIFT 的所有结算。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

使用 Progress OpenEdge,我们需要使其与 Oracle DBMS 配合使用。 最初,这个捆绑包是我们基础设施的瓶颈 - 直到我们安装并配置了 Pro2 CDC - 这是一个 Progress 产品,允许您直接在线将数据从 Progress DBMS 发送到 Oracle DBMS。 在这篇文章中,我们将详细告诉您如何在 OpenEdge 和 Oracle 之间有效地交朋友,尽管存在所有陷阱。

发生过程:通过文件共享将数据上传到 QCD

首先,关于我们的基础设施的一些事实。 该数据库的活跃用户数量约为15。 所有生产数据库(包括副本和备用数据库)的容量为 600 TB,最大数据库为 16,5 TB。 与此同时,数据库也在不断补充:仅去年一年,就增加了约 120 TB 的生产数据。 该系统由 x150 平台上的 86 个前端服务器提供支持。 这些数据库托管在 21 台 IBM 平台服务器上。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊
前端系统、各种核心银行系统和银行服务通过 Sonic ESB 总线与 OpenEdge Progress (BISCUIT IBS) 集成。 通过文件交换将数据上传到 QCD。 直到某个时间点,这个解决方案同时存在两个大问题——将信息上传到企业数据仓库(CDW)的性能低下,以及与其他系统进行数据协调(reconciliation)的时间长。
如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊
因此,我们开始寻找一种可以加速这些过程的工具。 这两个问题的解决方案是新的 Progress OpenEdge 产品 – Pro2 CDC(变更数据捕获)。 那么,让我们开始吧。

OpenEdge 和 Pro2Oracle 安装进度

要在管理员的 Windows 计算机上运行 Pro2 Oracle,只需安装 Progress OpenEdge Developer Kit Classroom Edition,即可 下载 免费。 默认 OpenEdge 安装目录:

DLC:C:ProgressOpenEdge
WRK: C:OpenEdgeWRK

ETL 流程需要 Progress OpenEdge 许可证版本 11.7+ - 即适用于 Oracle 的 OE DataServer 和 4GL 开发系统。 这些许可证包含在 Pro2 中。 为了通过远程 Oracle 数据库完整操作 DataServer for Oracle,需要安装完整 Oracle 客户端。

在Oracle服务器上,您需要安装Oracle数据库12+,创建一个空数据库并添加一个用户(我们称他为 疾病预防控制中心).

要安装 Pro2Oracle,请从下载中心下载最新发行版 进步软件。 将存档解压到目录中 C:Pro2 (要在 Unix 上配置 Pro2,使用相同的发行版并应用相同的配置原则)。

创建 cdc 复制数据库

复制数据库 疾病预防控制中心 (repl) Pro2用于存储配置信息,包括复制映射、复制数据库及其表的名称。 它还包含一个复制队列,其中包含有关源数据库中的表行已更改这一事实的注释。 ETL 进程使用复制队列中的数据来识别需要从源数据库复制到 Oracle 的行。

我们正在创建一个单独的 cdc 数据库。

创建数据库的过程

  1. 在数据库服务器上我们为cdc数据库创建一个目录——例如在服务器上 /数据库/疾控中心/.
  2. 为 cdc 数据库创建一个虚拟对象: procopy $DLC/空 cdc
  3. 启用对大文件的支持: proutil cdc -C 启用大文件
  4. 我们准备一个用于启动 cdc 数据库的脚本。 启动参数必须与复制数据库的启动参数类似。
  5. 我们启动 cdc 数据库。
  6. 连接到 cdc 数据库并从文件加载 Pro2 架构 CDC.df,包含在 Pro2 中。
  7. 我们在cdc数据库中创建以下用户:

pro2adm – 用于从 Pro2 管理面板进行连接;
pro2etl – 用于连接 ETL 流程 (ReplBatch);
pro2cdc – 用于连接 CDC 进程 (CDCBatch);

激活 OpenEdge 变更数据捕获

现在让我们打开 CDC 机制本身,借助该机制将数据复制到其他技术领域。 对于每个 Progress OpenEdge 源数据库,您需要添加单独的存储区域来将源数据复制到其中,并使用以下命令激活该机制本身 普罗蒂尔.

bisquit 数据库的示例过程

  1. 从目录复制 C:Pro2db 文件 cdadd.st 到 bisquit 源数据库目录。
  2. 我们描述在 cdadd.st 区域的固定大小范围 “ReplCDCArea” и “ReplCDCArea_IDX”。 您可以在线添加新的存储区域: prostrct addonline bisquit cdcadd.st
  3. 激活 OpenEdge CDC:
    proutil bisquit -C启用cdc区域“ReplCDCArea”indexarea“ReplCDCArea_IDX”
  4. 必须在源数据库中创建以下用户以识别正在运行的进程:
    A。 pro2adm – 用于从 Pro2 管理面板进行连接。
    b. pro2etl – 用于连接 ETL 流程 (ReplBatch)。
    C。 pro2cdc – 用于连接 CDC 进程 (CDCBatch)。

为 DataServer for Oracle 创建架构持有者

接下来,我们需要在服务器上创建一个 Schema Holder 数据库,其中来自 Progress DBMS 的数据将被复制到 Oracle DBMS。 DataServer Schema Holder 是一个空的 Progress OpenEdge 数据库,没有用户或应用程序数据,包含源表和外部 Oracle 表之间的对应关系图。

Pro2 的 Progress OpenEdge DataServer for Oracle 的架构持有者数据库必须位于 ETL 流程服务器上;它是为每个分支单独创建的。

如何创建架构持有者

  1. 将 Pro2 发行版解压到目录中 /pro2
  2. 创建并进入目录 /pro2/dbsh
  3. 使用命令创建 Schema Holder 数据库 复制 $DLC/空 bisquitsh
  4. 执行转换 比斯基什 转换为所需的编码 - 例如,如果 Oracle 数据库具有 UTF-8 编码,则采用 UTF-8: proutil bisquitsh -C convchar 转换 UTF-8
  5. 创建空数据库后 比斯基什 以单用户模式连接到它: 亲比斯基什
  6. 让我们进入数据字典: 工具 -> 数据字典 -> 数据服务器 -> ORACLE 实用程序 -> 创建数据服务器架构
  7. 启动架构持有者
  8. 设置 Oracle DataServer 代理:
    A。 启动管理服务器。
    proadsv-启动
    b. 启动 Oracle DataServer 代理
    oraman-名称 orabroker1-start

设置管理面板和复制方案

使用 Pro2 管理面板,配置 Pro2 参数,包括设置复制方案和生成 ETL 进程(处理器库)、主同步程序(批量复制处理器)、复制触发器和 OpenEdge CDC 策略。 还有用于监视和管理 ETL 和 CDC 流程的主要工具。 首先,我们设置参数文件。

如何配置参数文件

  1. 前往目录 C:Pro2bpreplScripts
  2. 打开文件进行编辑 复制程序.pf
  3. 添加cdc复制数据库的连接参数:
    # 复制数据库
    -db cdc -ld repl -H <主数据库主机名> -S <数据库代理端口 cdc>
    -U pro2admin -P <密码>
  4. 添加 复制程序.pf 以参数文件的形式连接到源数据库和Schema Holder的连接参数。 参数文件的名称必须与所连接的源数据库的名称匹配。
    # 连接到所有复制源 BISQUIT
    -pf bpreplscriptsbisquit.pf
  5. 添加 复制程序.pf 用于连接到架构持有者的参数。
    #Target Pro DB 架构持有者
    -db bisquitsh -ld bisquitsh
    -H <ETL 进程主机名>
    -S <biskuitsh 代理端口>
    -db bisquitsql
    -ld bisquitsql
    -dt ORACLE
    -S 5162 -H <Oracle 代理主机名>
    -DataService orabroker1
  6. 保存参数文件 复制程序.pf
  7. 接下来,您需要为目录中的每个连接的源数据库创建并打开用于编辑参数文件 C:Pro2bprepl脚本:bisquit.pf。 每个pf文件都包含连接对应数据库的参数,例如:
    -db bisquit -ld bisquit -H <主机名> -S <代理端口>
    -U pro2admin -P <密码>

要配置Windows快捷方式,您需要进入该目录 C:Pro2bpreplScripts 并编辑“Pro2 – 管理”快捷方式。 为此,请打开快捷方式的属性并在行中 开始于 表示Pro2的安装目录。 必须对“Pro2 – Editor”和“RunBulkLoader”快捷方式执行类似的操作。

Pro2 管理设置:加载初始配置

让我们启动控制台。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

转到“数据库地图”。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

要在 Pro2 – Administration 中链接数据库,请转到选项卡 数据库地图。 添加源数据库的映射 - 架构持有者 - Oracle.

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

转到选项卡 地图绘制. 上市 源数据库 默认情况下,选择第一个连接的源数据库。 列表的右侧应该有一个铭文 所有数据库已连接 — 所选数据库已连接。 在左下方,您应该会看到 bisquit 的进度表列表。 右侧是 Oracle 数据库中的表列表。

在 Oracle 中创建 SQL 模式和数据库

要创建复制映射,您必须首先生成 SQL 架构 在甲骨文中。 在 Pro2 Administration 中我们执行菜单项 工具 -> 生成代码 -> 目标架构,然后在对话框中 选择数据库 选择一个或多个源数据库并将它们移至右侧。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

单击“确定”并选择保存 SQL 架构的目录。

接下来我们创建基础。 例如,这可以通过 Oracle SQL开发人员。 为此,我们连接到 Oracle 数据库并加载用于添加表的架构。 更改 Oracle 表的组成后,您需要更新 Schema Holder 中的 SQL 架构。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

下载成功完成后,退出bisquitsh数据库并打开Pro2管理面板。 Oracle 数据库中的表应显示在右侧的“映射”选项卡上。

表映射

要创建复制映射,请在 Pro2 管理面板中转至映射选项卡并选择源数据库。 单击“映射表”,选择应在 Oracle 中复制的表左侧的“选择更改”,将其移至右侧并确认选择。 将为所选表自动创建地图。 我们重复该操作来为其他源数据库创建复制映射。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

生成 Pro2 复制处理器库和批量复制处理器程序

复制处理器库专为处理 Pro2 复制队列并将更改推送到 Oracle 数据库的自定义复制进程 (ETL) 而设计。 复制处理器库程序生成后自动保存到目录中 bprepl/repl_proc(PROC_DIRECTORY 参数)。 要生成复制处理器库,请转至 工具 -> 生成代码 -> 处理器库。 生成完成后,程序会出现在目录中 bprepl/repl_proc.

Bulk Load Processor 程序用于基于 Progress ABL (4GL) 编程语言将源 Progress 数据库与目标 Oracle 数据库同步。 要生成它们,请转到菜单项 工具 -> 生成代码 -> 批量复制处理器。 在“选择数据库”对话框中,选择源数据库,将其移至窗口右侧,然后单击 OK。 生成完成后,程序会出现在目录中 bpreplrepl_mproc.

在 Pro2 中设置复制过程

将表拆分为由单独的复制线程提供服务的集合可提高 Pro2 Oracle 的性能和效率。 默认情况下,在复制映射中为新复制表创建的所有连接都与线程号 1 关联。建议将表分成不同的线程。

有关复制线程状态的信息显示在 Pro2 管理屏幕的“监视”选项卡的“复制状态”部分中。 参数值的详细说明可以在Pro2文档(目录C:Pro2Docs)中找到。

创建并激活 CDC 策略

策略是 OpenEdge CDC 引擎监控表更改的一组规则。 截至撰写本文时,Pro2 仅支持级别 0 的 CDC 策略,即仅监控事实 记录变化.

要创建 CDC 策略,请在管理面板上转至“映射”选项卡,选择源数据库,然后单击“添加/删除策略”按钮。 在打开的“选择更改”窗口中,选择左侧并移动到右侧需要创建或删除 CDC 策略的表。

要激活,请再次打开“映射”选项卡,选择源数据库并单击按钮 (中)激活策略。 选择需要激活的策略并将其移至表格右侧,单击“确定”。 此后它们被标记为绿色。 通过使用 (中)激活策略 您还可以停用 CDC 策略。 所有交易均在线进行。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

CDC策略激活后,修改记录的备注会保存到存储区 “ReplCDCArea” 根据源数据库。 这些笔记将通过特殊流程进行处理 CDB批次,基于它们将在数据库的 Pro2 复制队列中创建注释 疾病预防控制中心 (repl).

因此,我们有两个用于复制的队列。 第一阶段是CDCBatch:数据从源数据库首先进入中间CDC数据库。 第二阶段是将数据从CDC数据库传输到Oracle。 这是当前架构和产品本身的一个特性——到目前为止开发人员还无法建立直接复制。

主同步

启用CDC机制并设置Pro2复制服务器后,我们需要开始初始同步。 初始同步命令:

/pro2/bprepl/Script/replLoad.sh bisquit 表名

初始同步完成后,即可开始复制过程。

复制过程开始

要启动复制过程,您需要运行脚本 replbatch.sh。 在开始之前,请确保所有线程都有 replbatch 脚本 - replbatch1、replbatch2 等。 如果一切就绪,请打开命令行(例如, 普罗恩),进入目录 /bprepl/脚本 并启动脚本。 在管理面板中,我们检查相应的进程是否已收到“正在运行”状态。

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊

结果

如何在 Progress OpenEdge 银行系统和 Oracle DBMS 之间建立友谊
实施后,我们大大加快了信息上传到企业数据仓库的速度。 数据自动在线进入Oracle。 无需浪费时间运行一些长时间运行的查询来从不同系统收集数据。 此外,在此解决方案中,复制过程可以压缩数据,这对速度也有积极的影响。 现在,BISKVIT 系统与其他系统的每日对账开始需要 15-20 分钟,而不是 2-2,5 小时,完整的对账需要几个小时,而不是两天。

来源: habr.com

添加评论