defgen
官网介绍链接:link.
要在目标端执行列映射和转换,请使用在源上生成的source-definitions文件将源定义提供给Replicat。
默认情况下,DEFGEN将定义文件本身写入本地操作系统的字符集中。如果满足以下条件,则可以在本地系统上创建定义文件并将其传输到远程系统,而不会出现与编码有关的任何问题:
这里我使用的时候就是采用该种方式,在源端生成defgen文件,然后将该文件scp到目标端。
这是生成def文件所需的参数文件 defgen.prm
1.创建参数文件
在ggsci下,输入edit param def.prm
DEFSFILE /ogg/dirdef/dbus.def purge
USERID ogg_admin, PASSWORD ogg_admin
table DBUS.DBUS_COPY; //如果有多个table 需要另起一行
//table DBUS.DBUS_CP;
参数解释
DEFSFILE FILE_NAME [APPEND | PURGE] , 指定生成的defgen文件的路径和名称 purge代表每次写入文件前,先删除该文件的内容,再写入。 如果是想要追加相同的内容,就改为append 但是一般不怎么用append
如果不加purge或者append, 那么当你之前的文件存在时,你执行命令去生成def文件时 是会报错的。
ERROR OGG-00037 DEFSFILE file /ogg/dirdef/gp25.def already exists.
所以一般建议加上purge
2.执行命令生成
退出命令行,/ogg/目录下执行命令:./defgen paramfile dirprm/defgen.prm
./defgen paramfile dirprm/gp25.prm
***********************************************************************
Oracle GoldenGate Table Definition Generator for Oracle
Version 12.3.0.1.4 OGGCORE_12.3.0.1.0_PLATFORMS_180415.0359
Linux, x64, 64bit (optimized), Oracle 11g on Apr 15 2018 10:11:00
Copyright (C) 1995, 2018, Oracle and/or its affiliates. All rights reserved.
Starting at 2020-04-21 14:32:38
***********************************************************************
Operating System Version:
Linux
Version #1 SMP Wed Apr 13 00:51:26 EDT 2016, Release 2.6.32-642.el6.x86_64
Node: zetamdw
Machine: x86_64
soft limit hard limit
Address Space Size : unlimited unlimited
Heap Size : unlimited unlimited
File Size : unlimited unlimited
CPU Time : unlimited unlimited
Process id: 40468
***********************************************************************
** Running with the following parameters **
***********************************************************************
DEFSFILE /ogg/dirdef/gp25.def purge
USERID ogg_admin, PASSWORD ***
TABLE DBUS.DBUS_GP5;
Retrieving definition for DBUS.DBUS_GP5.
Definitions generated for 1 table in /ogg/dirdef/gp25.def.
可以看到输出信息中以及成功生成了 def文件
3.查看生成文件的内容
cat /ogg/dirdef/gp25.def
*+- Defgen version 5.0, Encoding UTF-8
*
* Definitions created/modified 2020-04-21 14:32
*
* Field descriptions for each column entry:
*
* 1 Name
* 2 Data Type
* 3 External Length
* 4 Fetch Offset
* 5 Scale
* 6 Level
* 7 Null
* 8 Bump if Odd
* 9 Internal Length
* 10 Binary Length
* 11 Table Length
* 12 Most Significant DT
* 13 Least Significant DT
* 14 High Precision
* 15 Low Precision
* 16 Elementary Item
* 17 Occurs
* 18 Key Column
* 19 Sub Data Type
* 20 Native Data Type
* 21 Character Set
* 22 Character Length
* 23 LOB Type
* 24 Partial Type
*
Database type: ORACLE
Character set ID: UTF-8
National character set ID: CESU-8
Locale: neutral
Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14
TimeZone: GMT
*
Definition for table DBUS.DBUS_GP5
Record length: 442
Syskey: 0
Columns: 7
ID 64 50 0 0 0 1 0 50 50 50 0 0 0 0 1 0 1 2 2 -1 0 0 0
NAME 64 100 56 0 0 1 0 100 100 0 0 0 0 0 1 0 0 0 1 -1 0 0 0
AGE 64 50 162 0 0 1 0 50 50 50 0 0 0 0 1 0 0 2 2 -1 0 0 0
EMAIL 64 50 218 0 0 1 0 50 50 50 0 0 0 0 1 0 0 2 2 -1 0 0 0
ADDRESS 64 50 274 0 0 1 0 50 50 50 0 0 0 0 1 0 0 2 2 -1 0 0 0
TEST 64 50 330 0 0 1 0 50 50 50 0 0 0 0 1 0 0 2 2 -1 0 0 0
TEST1 64 50 386 0 0 1 0 50 50 50 0 0 0 0 1 0 0 2 2 -1 0 0 0
End of definition
可以看到,源表的所有字段都已经存在在这个文件中。
总结
基本用法就是这样 在OGG使用过程中,如果源端是oracle,目标端是不一样的数据库 可以用到defgen工具进行数据类型定义和数据类型转换