GoldenGate使用SQLEXEC和GETVAL实现码表关联
使用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实现码表关联的更多相关文章
- Oracle GoldenGate常用参数
OGG(Oracle GoldenGate)参数介绍 所有的GoldenGate进程均有参数文件 Manager Extract Replicat Utilities 所有参数均有缺省配置 实际应用只 ...
- GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令
本文主要介绍OGG中一些过滤或计算函数的用法,以及sqlexec的基本用法 SQLPREDICATE 在使用OGG初始化时,可以添加此参数到extract中,用于选择符合条件的记录,下面是OGG官方文 ...
- Goldengate参数规范
1. 文档综述 1.1. 文档说明 本文档规定了在实施Goldengate时,各个进程需要配置的参数. 该参数模板适合于Goldengate11.2.1.0版本: **注:本文档为Golden ...
- GOLDENGATE 配置文档,各类参数--转发
1 GoldenGate简要说明 GoldenGate现在是业内成熟的数据容灾与复制产品,经过多年的发展与完善,现在已经成为业内事实上的标准之一. GoldenGate软件是一种基于日志的 ...
- goldengate一些参数整理
转自:http://blog.csdn.net/lemontree1123/article/details/46603549 manager参数: AUTOSTART:指定在mgr启动时自动启动那些进 ...
- java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式
字符流 计算机并不区分二进制文件与文本文件.所有的文件都是以二进制形式来存储的,因此, 从本质上说,所有的文件都是二进制文件.所以字符流是建立在字节流之上的,它能够提供字符 层次的编码和解码.列如,在 ...
- Loadrunner手动编写包含事务、检查点、关联等元素的脚本实例
一.前言: 本文适合初学者,包含很多细节,包括 二.准备: 1.以虚拟机中的Linux系统作为服务器,开启bugfree服务. 2.以fiddler作为抓包工具,辅助脚本开发. 3.脚本流程:bugf ...
- 使用GoldenGate EVENTACTIONS执行数据的实时触发和定制化
Oracle GoldenGate不仅可以在线实时同步数据(包括增量和存量),也内置有一套事件触发流程,允许用户根据某张表某条记录的某个特殊字段值,触发相应的自定义执行流程,比如接收到某个银行账号的大 ...
- 将replicated数据与元数据关联
本章介绍元数据的用法以及如何将replicated数据与元数据相关联. 12.1概述 将数据从一个表复制到另一个表时,重要的考虑因素是源表和目标表的列结构(元数据)是否相同. Oracle Golde ...
随机推荐
- 常见机试题分析Java版
1. 操作系统任务分为系统任务和用户任务两种.其中,系统任务的优先级<50,用户任务的优先级>=50且<=255.优先级大于255的为非法任务,应予以剔除.现有一任务队列task[] ...
- Thread类的join()方法
public class Demo { /** * Thread类的join()方法 * -------------------------------- * 1)join() * 2)join(lo ...
- Kafka consumer poll(long)与poll(Duration)的区别
最近在StackOverflow碰到的一个问题,即在consumer.poll之后assignment()返回为空的问题,如下面这段代码所示: consumer.subscribe(Arrays.as ...
- echarts网络拓扑图
option = { title: { text: '' }, tooltip: {}, animationDurationUpdate: 1500, animationEasingUpdate: ' ...
- IntelliJ IDEA 2018.3.2无法正常输入字符问题解决方案
昨天升级IDEA的版本到2018.3.2,今天打开项目发现只要在代码编辑器输入字符(英文.符号或中文等)都会立刻被强制删除,造成一个无法正常输入的现象(回车换行可以).仔细观察这种想象后发有可能是代码 ...
- Tensorflow中神经网络的激活函数
激励函数的目的是为了调节权重和误差. relu max(0,x) relu6 min(max(0,x),6) sigmoid 1/(1+exp(-x)) tanh ((exp(x)-exp(-x))/ ...
- linux部署的flask项目配置static
环境: Python2.7 flask nginx linux的系统是Ubantu Python:我的是linux已经有的. flask:pip install flask nginx:sudo ap ...
- hibernate11--Criteria查询
public class EmpTest { Session session =null; Transaction transaction=null; @Before public void befo ...
- postgresql数据库安装及简单操作
自从MySQL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选. 本文介绍PostgreSQL的安装和基本用法,供初次使用者上手.以下内容基于Debian操作系统,其他操作系 ...
- 关于vue-cli创建项目(小白)(2)mock数据
mock数据,好处,前后端分离,不用等后端的真实接口,就可以用axios(ek sju s 好像这么读,原谅本人总是根据读音写单词)请求数据了. 一,安装所需插件 根据不同需求选择安装环境,mockj ...