如何让 GoldenGate 在 trail 文件中记录数据库的 SCN 信息
通常情况下,Oracle GoldenGate 的 trail 文件中是不会包含数据库的 SCN 信息的,要在 trail 文件中记录此信息,必须在 Extract 进程参数中设置 TOKENS
示例如下:
--Normal extract mapping--
TABLE scott.* ;
--To use tokens--
TABLE scott.*, tokens (tk-scn = @getenv("ORATRANSACTION", "SCN"));
设置 tokens 后 Extract 进程会在 trail 文件中写入一个 token ,其中包含 SCN 的详细信息。下面我们通过实验来详细了解一下设置 tokens 和不设置的区别。
设置 tokens 前:
GGSCI (prod.oracle.com) 1> view params ESCOTT
EXTRACT escott
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ggs, PASSWORD register
EXTTRAIL ./dirdat/aa
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
Logdump 16 >ghdr on
Logdump 17 >detail data
Logdump 18 >usertoken detail
Logdump 51 >n
___________________________________________________________________
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
Name: SCOTT.EMP_GGS
After Image: Partition 4 G s
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 | ..........
Column 1 (x0001), Len 8 (x0008)
0000 0004 4d49 4d49 | ....MIMI
Column 2 (x0002), Len 9 (x0009)
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
30 | 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
TABLE scott.EMP_GGS;
EXTRACT escott
SETENV (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)
USERID ggs, PASSWORD register
EXTTRAIL ./dirdat/aa
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
SCN 0.1364750 (1364750)
Target Extract Trails:
Remote Trail Name Seqno RBA Max MB
./dirdat/aa 17 1333 5
Logdump 54 >open ./dirdat/aa000017
Current LogTrail is /home/oracle/ggs/dirdat/aa000017
Logdump 55 >ghdr on
Logdump 56 >detail data
Logdump 57 >usertoken on
Logdump 58 >usertoken detail
Logdump 59 >n
Logdump 61 >n
___________________________________________________________________
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
Name: SCOTT.EMP_GGS
After Image: Partition 4 GU s
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 | ..........
Column 1 (x0001), Len 8 (x0008)
0000 0004 4d49 4e49 | ....MINI
Column 2 (x0002), Len 9 (x0009)
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
30 | 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 | ..........
User tokens: 15 bytes
tk-scn : 1364750
这里显示的 tk-scn : 1364750 正是我们要显示的数据库 SCN 号。
下面我们来做一个更精确的测试,我们更新一条记录,并记录插入记录前后的 SCN 号,然后
到 trail 文件中查看是否确实如此。
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1365152
SQL> update scott.emp_ggs set ename = 'DANIEL' where empno = 7381;
1 row updated
SQL> commit;
Commit complete
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
1365155
修改记录前的数据库 SCN 为 1365152,修改后的为 1365155,那么修改记录时的 SCN 应该在二者之间:
Logdump 62 >n
___________________________________________________________________
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
Name: SCOTT.EMP_GGS
After Image: Partition 4 GU s
0000 000a 0000 0000 0000 0000 1cd5 0001 000a 0000 | ....................
0006 4441 4e49 454c | ..DANIEL
Column 0 (x0000), Len 10 (x000a)
0000 0000 0000 0000 1cd5 | ..........
Column 1 (x0001), Len 10 (x000a)
0000 0006 4441 4e49 454c | ....DANIEL
User tokens: 15 bytes
tk-scn : 1365154
通过 logdump 看到的是 SCN 1365154 确实介于 1365152 和 1365155 之间
转载请注明作者出处及原文链接:
http://blog.csdn.net/xiangsir/article/details/8708626
分享到:
相关推荐
交付进程在目标数据库中读取trail文件,应用到目标数据库;收集进程则在目标端接收和处理数据变更。 数据同步的基本原理是捕获进程解析源数据库的redo log或archivelog,提取DML(数据操纵语言)和DDL(数据定义...
Logdump作为GoldenGate自带的一款强大且实用的trail文件分析工具,在Oracle GoldenGate环境中扮演着至关重要的角色。通过Logdump工具,不仅可以深入理解GoldenGate的工作机制,还能够帮助解决实际运行中遇到的各种...
"Extracting Data in Oracle GoldenGate Integrated Capture Mode"这部分文档主要关注的是GoldenGate的集成捕获模式,这是一种在数据库内部直接获取更改数据的方法。 集成捕获模式(Integrated Capture)是Oracle ...
Replicat进程作为数据复制的最后一站,运行在目标端,它读取目标端Trail文件中的内容,并将事务信息解析为DML或DDL语句,然后应用到目标数据库中。Replicat进程也具备内部的checkpoint机制,确保在进程重新启动后...
Oracle GoldenGate是一种在数据库间实施实时数据同步的高级复制技术。它的核心功能是通过解析源数据库的日志文件(包括在线日志和归档日志),捕获数据的增删改变化,并将这些变化传输到目标数据库,以此实现数据的...
在本篇中,我们将深入探讨在HP-UX ia64操作系统环境下,如何安装和配置Oracle GoldenGate以支持Oracle 10g数据库。 一、系统环境准备 HP-UX ia64是HP公司开发的一种高性能的64位操作系统,广泛应用于企业级服务器。...
4. **数据重播**:在目标数据库上,Replicat进程读取Trail文件并重播事务,更新目标数据库。 5. **数据验证**:在目标数据库上执行验证,确保数据一致性。 ## 4. GoldenGate应用场景 - **实时数据同步**:实时更新...
9.4 discardfile记录进程错误信息 9.5 goldengate常见错误分析 9.6 中文表/中文字段处理 9.7 logdump分析工具 第10章 goldengate的安全特性 10.1 加密trail文件 10.2 加密数据库密码 10.3 网络传输...
2. **传输(Trail)**:Trail文件是Goldengate数据复制的核心,它存储了由Extract生成的数据库操作记录。这些Trail文件可以安全地在源和目标数据库之间传输,确保数据的一致性。 3. **泵入(Replicat)**:在目标...
在这个一对多同步案例中,我们将会探讨如何利用GoldenGate来实现一个源数据库到多个目标数据库的数据同步,这对于分布式系统、数据仓库或者灾难恢复场景尤为关键。 首先,GoldenGate由几个主要组件构成:Extract...
1. **数据捕获**:GoldenGate通过逻辑日志读取器(Extract)实时地从源数据库的redo logs或archivelogs中提取更改数据,记录到Trail文件中,这是一个二进制格式的数据流文件。 2. **数据传输**:Trail文件中的更改...
3. **Trail Files**:这是GoldenGate存储变化数据的临时文件,包含源数据库的改变记录。数据泵产生的Trail Files可以通过网络传输到目标端,然后由Replicat进程应用到目标数据库。 4. **配置过程**:配置GoldenGate...
此外,Oracle还宣布将不再对内置在其数据库中的Streams产品进行重大改进,而是将Streams的一些特性整合到GoldenGate中。这意味着,对于仍在使用Streams的客户,Oracle将继续提供技术支持。 ##### 1.4 支持的平台与...
综上所述,Oracle GoldenGate在数据库复制领域具有高效率、高可用性和高灵活性的特点,能够实现亚秒级的实时数据复制,确保数据的一致性和完整性,同时支持多样化的应用场景和容灾策略。这使得它成为企业级数据库高...
- Pump (REP): 数据传输组件,将Extract生成的Trail文件(记录数据库变化的文件)从源系统推送到目标系统。 - Replicat:运行在目标数据库服务器上,接收Pump传输过来的Trail文件,并应用这些变更到目标数据库。 - ...
- **作用**:负责从源数据库的日志中读取数据变化信息,并将这些信息转换成GoldenGate的格式,存储在trail文件中。 - **特性**: - 提取日志中的数据变化 - 将数据变化转换为GoldenGate格式 - 记录检查点信息,...
4. **数据传输**:书中会详细阐述GoldenGate的Trail文件和数据传输机制,包括本地和远程Trail文件的管理,以及数据在不同数据库间的高效传输。 5. **数据应用**:讨论如何配置和管理Replicat进程,将捕获的变化数据...
1. **抽取进程 (Extract, EX):** 从源数据库中抽取更改数据,记录在日志文件中。 2. **传输服务 (Trail Files):** 存储由EX抽取的日志文件,是数据复制的核心载体。 3. **数据泵进程 (Replicat, RE):** 在目标数据库...