使用OGG中的SQLEXEC参数,可以执行SQL语句或存储过程,再加上@GETVAL函数,可以在目标端获取源表没有的字段值。比如,源端有一个事实表和一个代码表COUNTRY_CODES,代码表中有两个字段:country_name 和 country_id,事实表即customers表,里面只有country_id字段。

我们希望在目标端的customers中,增加一列country_name字段,并在OGG同步的过程中,针对这个字段赋值,这样在目标端可以直接select customers查看数据,不用再关联COUNTRY_CODES表。

下面分别演示使用SQL语句和存储过程的实现方式。

方法一,使用SQL语句

以下使用SQL语句获取COUNTRY_NAME ,抽取进程参数:

EXTRACT gavinext

USERID idit_prd, PASSWORD idit_prd

RMTHOST indb02, MGRPORT 7809

RMTTRAIL ./dirdat/xx

TABLE idit_prd.customers;

以下是目标端参数:

REPLICAT gavinrep

SETENV (NLS_LANG=”AMERICAN_AMERICA.WE8ISO8859P1″)

SETENV (ORACLE_SID=GGDB2)

ASSUMETARGETDEFS

USERID idit_prd,PASSWORD idit_prd

MAP idit_prd.customers, TARGET idit_prd.customers, &

SQLEXEC (ID lookup, &

QUERY “select country_name cname from country_code where country_id =:v_country_id”,&

PARAMS (v_country_id = country_id)),&

COLMAP (USEDEFAULTS, country_name = @GETVAL (lookup.cname) );

方法二,使用存储过程

定义一个SP基于country_id获取country_name, 如下:

create or replace procedure get_country

(v_country_id IN number, v_country_name OUT varchar2 )

is

begin

select country_name into v_country_name from country_code where country_id= v_country_id;

end;

/

以下演示如何在replicat中调用SP获取额外的字段值。

REPLICAT gavinrep

SETENV (NLS_LANG=”AMERICAN_AMERICA.WE8ISO8859P1″)

SETENV (ORACLE_SID=GGDB2)

ASSUMETARGETDEFS

USERID idit_prd,PASSWORD idit_prd

MAP idit_prd.customers, TARGET idit_prd.customers, &

SQLEXEC (SPNAME GET_COUNTRY, &

PARAMS (v_country_id = country_id)),&

COLMAP (USEDEFAULTS, country_name = @getval (GET_COUNTRY.V_COUNTRY_NAME) );

除了上面的应用,还可以获取多个字段计算后的值到目标字段,从而实现简单的ETL转换。

GoldenGate使用SQLEXEC和GETVAL实现码表关联的更多相关文章

  1. Oracle GoldenGate常用参数

    OGG(Oracle GoldenGate)参数介绍 所有的GoldenGate进程均有参数文件 Manager Extract Replicat Utilities 所有参数均有缺省配置 实际应用只 ...

  2. GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令

    本文主要介绍OGG中一些过滤或计算函数的用法,以及sqlexec的基本用法 SQLPREDICATE 在使用OGG初始化时,可以添加此参数到extract中,用于选择符合条件的记录,下面是OGG官方文 ...

  3. Goldengate参数规范

    1.    文档综述 1.1.  文档说明 本文档规定了在实施Goldengate时,各个进程需要配置的参数. 该参数模板适合于Goldengate11.2.1.0版本: **注:本文档为Golden ...

  4. GOLDENGATE 配置文档,各类参数--转发

    1       GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一. GoldenGate软件是一种基于日志的 ...

  5. goldengate一些参数整理

    转自:http://blog.csdn.net/lemontree1123/article/details/46603549 manager参数: AUTOSTART:指定在mgr启动时自动启动那些进 ...

  6. java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式

    字符流 计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此, 从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符 层次的编码和解码.列如,在 ...

  7. Loadrunner手动编写包含事务、检查点、关联等元素的脚本实例

    一.前言: 本文适合初学者,包含很多细节,包括 二.准备: 1.以虚拟机中的Linux系统作为服务器,开启bugfree服务. 2.以fiddler作为抓包工具,辅助脚本开发. 3.脚本流程:bugf ...

  8. 使用GoldenGate EVENTACTIONS执行数据的实时触发和定制化

    Oracle GoldenGate不仅可以在线实时同步数据(包括增量和存量),也内置有一套事件触发流程,允许用户根据某张表某条记录的某个特殊字段值,触发相应的自定义执行流程,比如接收到某个银行账号的大 ...

  9. 将replicated数据与元数据关联

    本章介绍元数据的用法以及如何将replicated数据与元数据相关联. 12.1概述 将数据从一个表复制到另一个表时,重要的考虑因素是源表和目标表的列结构(元数据)是否相同. Oracle Golde ...

随机推荐

  1. 微信&支付宝 支付单文件操作

    https://github.com/dedemao/weixinPay https://github.com/dedemao/alipay https://www.dedemao.com/alipa ...

  2. Oracle密码过期问题 ORA-28001:the password has expired

    如果已经过期了,首先需要修改密码,然后设置密码为无限期.修改以sys用户登陆. 修改密码:alter user username identified by password  密码可以和之前的密码相 ...

  3. hibernate06--参数的绑定

    创建Dept实体类 以及 对应的 Dept.hbm.xml文件 /** * @author 小豆腐 * *部门的实体类 */ public class Dept { private Integer d ...

  4. laravel5.4将excel表格中的信息导入到数据库中

    本功能是借助 Maatwebsite\Excel 这个扩展包完成的,此扩展包的安装过程请参考上篇博文:http://www.cnblogs.com/zhuchenglin/p/7122946.html ...

  5. IkAnalyzer2012FF_u1.jar免费下载

    链接:https://pan.baidu.com/s/1P_0cdRLKJO4VIUTokvTS0g 提取码:qt3w

  6. windows服务安装 System.IO.FileLoadException

    报错如下: System.IO.FileLoadException: 未能加载文件或程序集“file:///D:\WindowsService\bin\Debug\WindowsService.exe ...

  7. 逆向工程之修改关键CALL返回值_破解视频转换专家

    1)注册软件随便输入注册名注册码 2)进入软件根目录,发送到PEID查壳 3)发现无壳 4)发送到OD 4.1)右键菜单选择智能搜索 4.2)找到关键信息点注册 4.3)找到关键信息点双击进入汇编,向 ...

  8. oracle索引分类

    参考文档:https://wenku.baidu.com/view/d4d6ee1ba76e58fafab00336.html https://blog.csdn.net/u010719917/art ...

  9. How to enable Linux-PAM on uClinux

    By default the uClinux  uses the tools provided by busybox firstly. So the init login and passwd are ...

  10. 转:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述

    原文地址:ArcGIS API For JavaScript官方文档(二十)之图形和要素图层——①Graphics概述 ArcGIS JavaScript API允许在地图上绘制graphic(图形) ...