17、Oracle GoldenGate:数据集成与实用工具全解析

Oracle GoldenGate:数据集成与实用工具全解析

在数据管理领域,高效的数据集成和处理至关重要。Oracle GoldenGate 作为一款强大的工具,在数据集成和复制方面表现出色。下面我们将深入探讨其功能以及相关实用工具。

一、Oracle GoldenGate 在数据集成中的卓越表现

Oracle GoldenGate 拥有众多可使用的功能,这些功能大致可分为六个不同类别。每个类别都有助于识别数据的状态和变化。凭借这些丰富的功能,Oracle GoldenGate 成为实施小型数据集成以及数据复制的理想工具。

它在数据集成过程中展现出诸多实用特性,这些特性分布在工具的各个方面,使得 Oracle GoldenGate 能够灵活、可靠地跨平台移动和处理数据。在数据集成场景中,其应用范围似乎没有边界,堪称最佳的数据集成工具之一。

二、GoldenGate 实用工具概览

除了基本的环境配置和运行功能外,Oracle GoldenGate 还附带了许多实用工具,这些工具可帮助我们在其环境中处理数据。常见的实用工具如下:
- Oracle GoldenGate Error (OGGERR)
- Logdump
- Definition Generator (Defgen)
- Check Parameters (checkprm)
- ConvChk
- Key Generation (keygen)

下面我们将详细介绍其中几个重要的工具。

三、Oracle GoldenGate 错误查询工具 - OGGERR

在使用 Oracle GoldenGate 时,偶尔会遇到错误,这些错误被称为 Oracle GoldenGate 错误(OGG 错误)。在早期,用户面对这些错误时往往不知所措,不知道错误的含义以及如何查询。不过,现在我们可以使用 oggerr 工具来查询错误信息。

oggerr 工具位于 Oracle GoldenGate Home 目录中,可以通过命令行调用。以下是其使用示例:

$ ./oggerr 
Usage: ./oggerr (-v | [OGG-code...])

从上述用法可以看出, oggerr 工具只有一个标志选项,之后需要提供 OGG 错误代码。例如,查询错误代码 OGG - 00001 的详细信息:

$ ./oggerr -v OGG-00001 
00001, 00000, "Execution cannot continue - Program Terminating" 
// *Cause:  This is a generic message that indicates a process failure. 
// *Action: Look for other messages in the process report and error log that 
//          provide more context for this failure. If you cannot determine and 
//          resolve the problem, contact Oracle Support.

使用 -v 标志可以获取错误的详细解释。虽然有些错误通过这种方式查询可能无法提供足够的信息,但在需要快速了解错误时,它仍然是一个非常有用的工具。

需要注意的是,你可以在 docs.oracle.com (http://docs.oracle.com/goldengate/c1221/gg - winux/GMESG/toc.htm)的参考指南中找到所有 Oracle GoldenGate 错误代码的列表。

四、强大的日志查看工具 - Logdump

在所有实用工具中, logdump 是最常用的工具之一。它允许我们查看在数据捕获时生成的跟踪文件,或者在数据应用到目标端之前的相关文件。该工具可能是 Oracle 为 GoldenGate 提供的最常用且功能最强大的工具。

logdump 工具直接位于 Oracle GoldenGate Home 目录的根目录下,方便查找和使用。要使用 logdump ,只需导航到 GoldenGate 的 Home 目录并执行该工具,示例如下:

oracle@wilma.acme.com:/home/oracle >cd $OGG_HOME 
oracle@wilma.acme.com:/opt/app/oracle/product/12.2.0.0/oggcore_1 >./logdump 
Oracle GoldenGate Log File Dump Utility for Oracle 
Version 12.2.0.1.0 OGGCORE_12.2.0.1.0_PLATFORMS_151101.1925.2 
Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved. 
Logdump 4 > 

打开 logdump 工具后,在开始读取跟踪文件之前,需要进行一些设置。该工具提供了许多选项,可以在 logdump 提示符下输入 help 命令查看,以下是部分命令列表:

FC [<num> | <string>]     - Edit previous command 
HISTORY                   - List previous commands 
OPEN | FROM  <filename>   - Open a Log file 
RECORD | REC              - Display audit record 
NEXT [ <count> ]          - Display next data record 
SKIP [ <count> ] [FILTER] - Skip down <count> records 
    FILTER               - Apply filter during skip 
COUNT                     - Count the records in the file 
    [START[time] <timestr>,] 
    [END[time] <timestr>,] 
    [INT[erval] <minutes>,] 
    [LOG[trail] <wildcard-template>,] 
    [FILE <wildcard-template>,] 
    [DETAIL ] 
    <timestr> format is 
        [[yy]yy-mm-dd] [hh[:mm][:ss]] 
POSITION [ <rba> | FIRST | LAST | EOF ] - Set position in file 
        REVerse | FORward              - Set read direction 
RECLEN [ <size> ]  - Sets max output length 
EXIT | QUIT        - Exit the program 
FILES | FI | DIR   - Display filenames 
ENV                - Show current settings 
VOLUME | VOL | V   - Change default volume 
DEBUG              - Enter the debugger 
GHDR  ON | OFF     - Toggle GHDR display 
DETAIL ON | OFF | DATA - Toggle detailed data display 
DECRYPT OFF | ON [KEYNAME key_name]. - Decrypt data encrypted with GoldenGate trail encryption. 
五、访问跟踪文件数据

要使用 logdump 工具访问跟踪文件,需要明确指定要打开的跟踪文件。可以通过 open 命令实现,示例如下:

Logdump 5 >open ./dirdat/rt000000000 
Current LogTrail is /opt/app/oracle/product/12.2.0.0/oggcore_1/dirdat/rt000000000 

需要注意的是,我们可以使用通配符打开一系列跟踪文件。

打开跟踪文件后,若要查看数据,需要设置环境以显示所需内容。有几个常用的 logdump 命令可以帮助我们进行设置:
- GHDR ON | OFF - 切换 GHDR 显示
- DETAIL ON | OFF | DATA - 切换详细数据显示
- USERTOKEN on | OFF | detail - 显示用户令牌信息
- HEADERTOKEN on | OFF | detail - 显示头令牌信息
- GGSTOKEN on | OFF | detail - 显示 GGS 令牌信息

以下是这些命令的使用示例:

Logdump 6 >ghdr on 
Logdump 7 >detail on 
Logdump 8 >detail data 
Logdump 9 >ggstoken on 
Logdump 10 >usertoken on 

执行这些命令后,就完成了查看跟踪文件的基本设置。默认情况下,我们位于跟踪文件的起始位置(相对字节地址 RBA 为 0)。此时,可以使用 next (n)命令在文件中向前移动。例如:

Logdump 11 >n 
2016/03/14 19:34:21.383.380 FileHeader           Len  1497 RBA 0 
Name: *FileHeader* 
3000 0366 3000 0008 4747 0d0a 544c 0a0d 3100 0002 | 0..f0...GG..TL..1... 
0005 3200 0004 2000 0000 3300 0008 02f2 543e 2d1c | ..2... ...3.....T>-. 
82d4 3400 0043 0041 7572 693a 6672 6564 3a61 636d | ..4..C.Auri:fred:acm 
653a 636f 6d3a 3a75 3031 3a61 7070 3a6f 7261 636c | e:com::u01:app:oracl 
653a 7072 6f64 7563 743a 3132 2e32 2e30 3a6f 6767 | e:product:12.2.0:ogg 
636f 7265 5f31 3a50 4747 3132 4335 0000 4735 0000 | core_1:PGG12C5..G5.. 
4300 4175 7269 3a66 7265 643a 6163 6d65 3a63 6f6d | C.Auri:fred:acme:com 

在 RBA 为 0 时,看到的是跟踪文件的头部信息,该信息包含了文件的来源、使用的 GoldenGate 版本以及创建该跟踪文件的数据泵进程等。要查看实际的记录,需要继续使用 next 命令在文件中向前移动。

从 Oracle GoldenGate 12c(12.2.0.1.0)开始,跟踪文件中会包含表的元数据。这些元数据有助于在源和目标元数据之间进行映射,特别是在表定义不同或在异构环境中进行复制时。例如,查看 SOE.LOGON 表的元数据和事务信息:

Logdump 14 >n 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x00) 
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41) 
RecLength  :   281  (x0119)   IO Time    : 2016/03/14 20:27:28.773.265 
IOType     :   170  (xaa)     OrigNode   :     2  (x02) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
DDR/TDR Idx:   (001, 001)     AuditPos   : 25851148 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2016/03/14 20:27:28.773.265 Metadata             Len 281 RBA 1707 
Name: SOE.LOGON 
* 
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 Sig DT     13)Least Sig DT     14)High Precision  15)Low Precision
16)Elementary Item  17)Occurs      18)Key Column       19)Sub DataType    20)Native DataType 
21)Character Set    22)Character Length 23)LOB Type    24)Partial Type 
* 
TDR version: 1 
Definition for table SOE.LOGON 
Record Length: 134 
Columns: 3 
LOGON_ID      64     50        0  0  0 1 0     50     50     50 0 0 0 0 1    0 
1   2    2       -1      0 0 0 
CUSTOMER_ID   64     50       56  0  0 1 0     50     50     50 0 0 0 0 1    0 
1   2    2       -1      0 0 0 
LOGON_DATE   192     19      112  0  0 1 0     19     19     19 0 5 0 0 1    0 
1   0   12       -1      0 0 0 
End of definition 

这个跟踪文件头部信息对于不熟悉的人来说可能比较复杂,但它包含了很多有用的信息。例如,它提供了事务的相关信息(如记录长度、是否为前后事务、事务发生的日期等),以及表的元数据(如列名、数据类型、长度等)。这些信息有助于解决源和目标元数据之间的映射问题。

继续使用 next 命令,我们可以看到事务的具体信息:

Logdump 15 >n 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x0c) 
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41) 
RecLength  :    54  (x0036)   IO Time    : 2016/03/14 20:27:20.008.002 
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x03)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :       4814       AuditPos   : 25851148 
Continued  :     N  (x00)     RecCount   :     1  (x01) 
2016/03/14 20:27:20.008.002 Insert               Len    54 RBA 2048 
Name: SOE.LOGON  (TDR Index: 1) 
After  Image:                                             Partition 12   G  s 
0000 000b 0000 0007 3239 3832 3938 3600 0100 0a00 | ........2982986..... 
0000 0637 3034 3737 3000 0200 1500 0032 3031 362d | ...704770......2016- 
3033 2d31 343a 3230 3a32 373a 3139                | 03-14:20:27:19 
Column     0 (x0000), Len    11 (x000b) 
0000 0007 3239 3832 3938 36                       | ....2982986 
Column     1 (x0001), Len    10 (x000a) 
0000 0006 3730 3437 3730                          | ....704770 
Column     2 (x0002), Len    21 (x0015) 
0000 3230 3136 2d30 332d 3134 3a32 303a 3237 3a31 | ..2016-03-14:20:27:1 
39                                                | 9 
GGS tokens: 
5200 0014 4141 415a 324a 4141 4841 4141 674d 2b41 | R...AAAZ2JAAHAAAgM+A 
4345 0001 7401 0000 4c00 0008 3235 3835 3835 3430 | CE..t...L...25858540 
3600 000a 322e 3235 2e32 3032 3137 6901 0002 0001 | 6...2.25.20217i..... 

事务头部信息与元数据部分提供的信息类似,包括记录长度、前后图像信息、事务发生的日期等。此外,还会显示事务的类型(如插入、更新等)、事务的长度以及相对字节地址。在这个例子中,是一个长度为 54 字节的插入事务,位于 2048 字节地址处。

需要注意的是,RBA 可以用于大致估算事务之间的大小,同时,我们可以使用 count 命令了解在复制环境中应用的事务数量。

事务头部之后是事务的具体数据,以二进制和 ASCII 格式显示。二进制部分位于 ASCII 信息的左侧,它提供了数据的列映射,但列名并不明确。这时,头部的元数据就发挥了重要作用,将两者结合起来,我们可以快速确定事务中映射的列。

六、定义生成器 - Defgen

从 Oracle GoldenGate 12c(12.2.0.1.0)开始,Oracle 在跟踪文件中提供了表的元数据,这使得源和目标之间的数据映射更加容易。然而,由于 Oracle GoldenGate 具有灵活性,不同版本之间仍然可以进行数据复制(如 Oracle GoldenGate 11g 复制到 Oracle GoldenGate 12c 环境,反之亦然)。在这种情况下,如果表定义不同或在异构环境中进行复制,就需要使用定义文件。

定义文件由 Oracle GoldenGate 的 defgen 工具生成,它是定义生成器(Definition Generator)的缩写,随核心产品一起提供。该工具的主要目的是在数据复制过程中提供表结构的映射方式。 defgen 允许创建定义文件,用于定义复制过程中源端或目标端的表元数据结构。

七、配置 Defgen

在使用 defgen 工具之前,需要进行配置。以下是配置源端映射的步骤,将创建一个名为 defgen.prm 的参数文件:
1. 从 GGSCI 中编辑一个名为 defgen 的参数文件:

edit params defgen 
  1. 编辑参数文件,添加所需的参数。以下是一个示例:
DEFSFILE ./dirdef/defgen.def 
USERID ggate, PASSWORD ggate 
TABLE sfi.clients; 

通过以上步骤,我们就完成了 defgen 工具的配置,可以使用它来解决源和目标元数据不匹配的问题,确保数据复制的成功。

综上所述,Oracle GoldenGate 及其附带的实用工具为我们提供了强大的数据集成和处理能力。通过合理使用这些工具,我们可以更好地管理和处理数据,提高数据处理的效率和准确性。

Oracle GoldenGate:数据集成与实用工具全解析

八、使用 Defgen 进行数据映射的优势

在异构环境或不同版本的 GoldenGate 之间进行数据复制时,使用 defgen 生成的定义文件能带来显著优势,具体如下:
|优势|说明|
|----|----|
|解决结构不匹配问题|当源表和目标表的结构不同时,定义文件可以明确指定如何将源表的列映射到目标表的列,避免因结构差异导致的复制错误。|
|支持异构环境|在不同数据库系统之间进行数据复制时,不同数据库的表结构和数据类型可能存在差异, defgen 可以帮助处理这些差异,确保数据准确复制。|
|提高复制灵活性|通过定义文件,可以灵活调整数据映射规则,例如选择复制部分列、对数据进行转换等,以满足不同的业务需求。|

九、其他实用工具简介

除了前面详细介绍的 oggerr logdump defgen 工具外,Oracle GoldenGate 还提供了其他一些实用工具,下面为大家简单介绍:
- Check Parameters (checkprm) :用于检查参数文件的有效性。在配置 GoldenGate 过程中,参数文件的正确性至关重要。使用 checkprm 工具可以提前发现参数文件中的错误,避免在运行过程中出现问题。例如,在编辑完参数文件后,运行 checkprm 工具进行检查:

$ ./checkprm <参数文件名>
  • ConvChk :该工具用于检查字符集转换的正确性。在不同字符集的数据库之间进行数据复制时,可能会出现字符集转换问题。 ConvChk 可以帮助检测这些问题,确保数据在复制过程中字符集转换正确。
  • Key Generation (keygen) :用于生成加密密钥。在需要对数据进行加密传输或存储时,使用 keygen 工具生成密钥,提高数据的安全性。例如,生成一个加密密钥:
$ ./keygen
十、GoldenGate 实用工具的使用流程总结

为了更清晰地展示 GoldenGate 实用工具的使用流程,下面使用 mermaid 绘制流程图:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;

    A([开始]):::startend --> B{遇到问题?}:::decision
    B -->|是| C{错误查询?}:::decision
    B -->|否| D(正常数据处理):::process
    C -->|是| E(使用 oggerr 工具查询错误):::process
    C -->|否| F{查看跟踪文件?}:::decision
    F -->|是| G(使用 logdump 工具打开跟踪文件):::process
    F -->|否| H{处理表结构映射?}:::decision
    H -->|是| I(使用 defgen 工具生成定义文件):::process
    H -->|否| J(使用其他工具):::process
    E --> K(根据错误信息解决问题):::process
    G --> L(设置环境并查看数据):::process
    I --> M(使用定义文件进行数据复制):::process
    K --> N([结束]):::startend
    L --> N
    M --> N
    D --> N
    J --> N

从流程图可以看出,在使用 GoldenGate 过程中,根据遇到的不同问题,可以选择相应的实用工具进行处理。如果遇到错误,可以使用 oggerr 工具查询错误信息;如果需要查看跟踪文件,可以使用 logdump 工具;如果需要处理表结构映射问题,可以使用 defgen 工具。

十一、总结与建议

Oracle GoldenGate 及其附带的实用工具为数据集成和复制提供了强大的支持。通过合理使用这些工具,可以提高数据处理的效率和准确性,解决各种复杂的数据集成问题。以下是一些使用建议:
- 熟悉工具功能 :在使用 GoldenGate 之前,建议详细了解各个实用工具的功能和使用方法,以便在遇到问题时能够快速选择合适的工具进行处理。
- 定期检查参数文件 :使用 checkprm 工具定期检查参数文件的有效性,避免因参数错误导致的问题。
- 备份关键数据 :在使用 logdump 工具查看跟踪文件时,可以使用 save 命令将重要的数据保存到文件中,以便后续分析和恢复。例如:

Logdump > save <保存文件名> <选项>
  • 注意数据安全 :在使用 keygen 工具生成加密密钥时,要妥善保管密钥,确保数据在传输和存储过程中的安全性。

总之,充分利用 Oracle GoldenGate 的实用工具,可以帮助我们更好地管理和处理数据,应对各种复杂的数据集成场景。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值