您当前的位置:首页 > 互联网教程

如何让GoldenGate在trail文件中记录数据库的SCN信息

发布时间:2025-05-22 06:28:28    发布人:远客网络

如何让GoldenGate在trail文件中记录数据库的SCN信息

一、如何让GoldenGate在trail文件中记录数据库的SCN信息

如何让 GoldenGate在 trail文件中记录数据库的 SCN信息通常情况下,Oracle GoldenGate的 trail文件中是不会包含数据库的 SCN信息的,要在 trail文件中记录此信息,必须在 Extract进程参数中设置 TOKENS示例如下:--Normal extract mapping-- TABL

如何让 GoldenGate在 trail文件中记录数据库的 SCN信息

通常情况下,Oracle GoldenGate的 trail文件中是不会包含数据库的 SCN信息的,要在 trail文件中记录此信息,必须在 Extract进程参数中设置 TOKENS

TABLE scott.*, tokens(tk-scn=@getenv("ORATRANSACTION","SCN"));

设置 tokens后 Extract进程会在 trail文件中写入一个 token,其中包含 SCN的详细信息。下面我们通过实验来详细了解一下设置 tokens和不设置的区别。

GGSCI(prod.oracle.com) 1> view params ESCOTT

SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

TABLE scott.EMP_GGS, tokens(tk-scn=@getenv("ORATRANSACTION","SCN"));

TABLE scott.DEPT_GGS, tokens(tk-scn=@getenv("ORATRANSACTION","SCN"));

Logdump 15>open./dirdat/aa000016

Current LogTrail is/home/oracle/ggs/dirdat/aa000016

___________________________________________________________________

Hdr-Ind: E(x45) Partition:.(x04)

UndoFlag:.(x00) BeforeAfter: A(x41)

RecLength: 120(x0078) IO Time: 2013/03/21 23:31:55.000.000

IOType: 5(x05) OrigNode: 255(xff)

TransInd:.(x03) FormatType: R(x52)

SyskeyLen: 0(x00) Incomplete:.(x00)

AuditRBA: 131 AuditPos: 6994960

Continued: N(x00) RecCount: 1(x01)

2013/03/21 23:31:55.000.000 Insert Len 120 RBA 1079

0000 000a 0000 0000 0000 0000 1cd4 0001 0008 0000|....................

0004 4d49 4d49 0002 0009 0000 0005 434c 4552 4b00|..MIMI........CLERK.

0300 0a00 0000 0000 0000 001e de00 0400 1500 0031|...................1

3938 372d 3132 2d31 373a 3030 3a30 303a 3030 0005| 987-12-17:00:00:00..

000a 0000 0000 0000 0001 3880 0006 000a ffff 0000|..........8.........

0000 0000 0000 0007 000a 0000 0000 0000 0000 0014|....................

Column 0(x0000), Len 10(x000a)

0000 0000 0000 0000 1cd4|..........

0000 0005 434c 4552 4b|....CLERK

Column 3(x0003), Len 10(x000a)

0000 0000 0000 0000 1ede|..........

Column 4(x0004), Len 21(x0015)

0000 3139 3837 2d31 322d 3137 3a30 303a 3030 3a30|..1987-12-17:00:00:0

Column 5(x0005), Len 10(x000a)

0000 0000 0000 0001 3880|........8.

Column 6(x0006), Len 10(x000a)

ffff 0000 0000 0000 0000|..........

Column 7(x0007), Len 10(x000a)

0000 0000 0000 0000 0014|..........

下面我们来看看在 Extract进程参数中加入 tokens设置后,插入一条记录在 trail文件中的记录

GGSCI(prod.oracle.com) 3> view params escott

SETENV(NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

TABLE scott.EMP_GGS, tokens(tk-scn=@getenv("ORATRANSACTION","SCN"));

TABLE scott.DEPT_GGS, tokens(tk-scn=@getenv("ORATRANSACTION","SCN"));

插入一条记录后,trail文件切到下一队列

GGSCI(prod.oracle.com) 8> info ESCOTT,detail

EXTRACT ESCOTT Last Started 2013-03-21 23:42 Status RUNNING

Checkpoint Lag 00:00:00(updated 00:00:09 ago)

Log Read Checkpoint Oracle Redo Logs

2013-03-21 23:43:34 Seqno 132, RBA 290816

Remote Trail Name Seqno RBA Max MB

Logdump 54>open./dirdat/aa000017

Current LogTrail is/home/oracle/ggs/dirdat/aa000017

___________________________________________________________________

Hdr-Ind: E(x45) Partition:.(x04)

UndoFlag:.(x00) BeforeAfter: A(x41)

RecLength: 120(x0078) IO Time: 2013/03/21 23:43:34.000.000

IOType: 5(x05) OrigNode: 255(xff)

TransInd:.(x03) FormatType: R(x52)

SyskeyLen: 0(x00) Incomplete:.(x00)

AuditRBA: 132 AuditPos: 289296

Continued: N(x00) RecCount: 1(x01)

2013/03/21 23:43:34.000.000 Insert Len 120 RBA 1079

0000 000a 0000 0000 0000 0000 1cd5 0001 0008 0000|....................

0004 4d49 4e49 0002 0009 0000 0005 434c 4552 4b00|..MINI........CLERK.

0300 0a00 0000 0000 0000 001e de00 0400 1500 0031|...................1

3938 372d 3132 2d31 373a 3030 3a30 303a 3030 0005| 987-12-17:00:00:00..

000a 0000 0000 0000 0001 3880 0006 000a ffff 0000|..........8.........

0000 0000 0000 0007 000a 0000 0000 0000 0000 0014|....................

Column 0(x0000), Len 10(x000a)

0000 0000 0000 0000 1cd5|..........

0000 0005 434c 4552 4b|....CLERK

Column 3(x0003), Len 10(x000a)

0000 0000 0000 0000 1ede|..........

Column 4(x0004), Len 21(x0015)

0000 3139 3837 2d31 322d 3137 3a30 303a 3030 3a30|..1987-12-17:00:00:0

Column 5(x0005), Len 10(x000a)

0000 0000 0000 0001 3880|........8.

Column 6(x0006), Len 10(x000a)

ffff 0000 0000 0000 0000|..........

Column 7(x0007), Len 10(x000a)

0000 0000 0000 0000 0014|..........

这里显示的 tk-scn: 1364750正是我们要显示的数据库 SCN号。

下面我们来做一个更精确的测试,我们更新一条记录,并记录插入记录前后的 SCN号,然后

到 trail文件中查看是否确实如此。

SQL> select dbms_flashback.get_system_change_number from dual;

SQL> update scott.emp_ggs set ename='DANIEL' where empno= 7381;

SQL> select dbms_flashback.get_system_change_number from dual;

修改记录前的数据库 SCN为 1365152,修改后的为 1365155,那么修改记录时的 SCN应该在二者之间:

___________________________________________________________________

Hdr-Ind: E(x45) Partition:.(x04)

UndoFlag:.(x00) BeforeAfter: A(x41)

RecLength: 28(x001c) IO Time: 2013/03/21 23:53:03.000.000

IOType: 15(x0f) OrigNode: 255(xff)

TransInd:.(x03) FormatType: R(x52)

SyskeyLen: 0(x00) Incomplete:.(x00)

AuditRBA: 132 AuditPos: 526352

Continued: N(x00) RecCount: 1(x01)

2013/03/21 23:53:03.000.000 FieldComp Len 28 RBA 1333

0000 000a 0000 0000 0000 0000 1cd5 0001 000a 0000|....................

Column 0(x0000), Len 10(x000a)

0000 0000 0000 0000 1cd5|..........

Column 1(x0001), Len 10(x000a)

0000 0006 4441 4e49 454c|....DANIEL

通过 logdump看到的是 SCN 1365154确实介于 1365152和 1365155之间

二、oracleogg如何建立目标库

1、在Oracle数据库中,创建一个用于接收源数据库数据的目标数据库,在目标数据库服务器上安装并配置GoldenGate软件,确保目标端软件版本与源端一致,使用GoldenGate命令行工具创建并启动一个抽取进程,该进程从源数据库提取数据并传递到目标数据库。

2、使用GoldenGate命令行工具创建并启动一个应用进程,该进程将从抽取进程接收到的数据应用到目标数据库,确保数据从源数据库到目标数据库的同步正常工作,使用GoldenGate提供的工具和命令来验证同步的完整性和准确性。

三、主流实时数据库有哪些

1、主流实时数据库有:Apache Kafka、Amazon Kinesis、RDB实时数据同步解决方案、Apache Druid以及实时NoSQL数据库如Apache Cassandra等。其中后三者具有强大的实时数据分析处理功能。它们可以根据实际需求为各类应用程序提供快速的数据访问和响应能力。接下来详细介绍这些实时数据库的特点:

2、Apache Kafka:是一个开源流处理平台,用于构建实时数据管道和应用。它允许发布和订阅记录流,类似于消息队列系统,具有容错性、持久性和可靠性等特点,能够处理大规模的数据流并支持分布式处理。Kafka广泛应用于实时日志收集、消息推送等场景。

3、Amazon Kinesis:是亚马逊提供的一项实时数据流处理服务。它能够摄取大规模数据流并进行实时分析,适用于构建微服务应用或实时大数据分析系统。它提供了可扩展的分布式数据存储和处理能力,可以无缝集成其他AWS服务。

4、RDB实时数据同步解决方案:包括Oracle GoldenGate和Informatica等商业产品。这些解决方案主要用于数据库之间的实时数据同步,支持多种数据源和目标数据库,提供了强大的数据复制和集成功能,适用于企业级的数据同步需求。

5、Apache Druid:是一个高性能、实时的分析型数据存储和查询引擎。它能够进行大规模数据集的分析处理,适用于多种实时应用需求。Druid能够快速执行聚合查询、数据挖掘和分析等任务,因此常用于数据分析领域的场景。

6、实时NoSQL数据库如Apache Cassandra:作为高度可扩展的NoSQL数据库解决方案,适合处理实时数据分析需求大的场景。Cassandra以其高性能和可扩展性而著称,能够在分布式系统中实现数据的快速读取和写入操作,广泛应用于各种需要快速响应的实时应用环境。

7、这些主流实时数据库在不同的应用场景和需求下都有其独特的优势和应用价值。选择合适的实时数据库取决于具体的业务需求和技术架构要求。