暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何使用DISCARDFILE和Logdump工具解决OGG复制中断问题

数据库驾驶舱 2024-05-09
242

背景:

Oracle GoldenGate (OGG) 是一种广泛使用的数据复制解决方案,能够在异构数据库平台之间实现实时数据集成和复制。然而,在日常运维中,可能因为各种原因导致OGG复制过程中断,如数据格式问题、网络问题或源数据库和目标数据库之间的不一致等。当复制中断发生时,快速定位并解决问题是恢复数据同步的关键。本文介绍如何使用GoldenGate提供的DISCARDFILE和Logdump工具找到并分析导致复制失败的原始数据。

DISCARDFILE方法

通过discard文件找到具体的sql(如果有的话,没有的话进行第二步)
通过prm文件找到discard文件
DISCARDFILE /oggbase/dirrpt/KIN_R01.dsc,append,megabytes 100

Aborting transaction on /oggbase/dirdat/K0 beginning at seqno 59 rba 13561791

                         error at seqno 59 rba 13561791

Problem replicating SCOTT.EMP to SCOTT.EMP

Mapping problem with delete record (target format)...

*

ID = 2222  # 找到唯一键ID

00000054 54 54 54 54 54 54 32 30 30 30                |2222     |

*

Process Abending : 2024-05-08 09:11:32

Logdump方法:

Logdump是GoldenGate提供的一个强大工具,用于分析和查看Trail文件中的记录。如果DISCARDFILE未能提供足够信息,可以使用Logdump进一步分析

通过日志找到具体的file S1000002925和 报错  RBA 377293536

2024-05-08 13:24:09  ERROR   OGG-03533  Conversion from character set zhs16gbk of source column POST to character set UTF-8 of target column POST failed because the source column contains a character '84' at offset 72 that is n
ot available in the target character set.

*
*                    Run Time Statistics                          *
*

Reading /oggbase/dirdat/S1000002925, current RBA 37729353663 records, m_file_seqno = 2925, m_file_rba = 377293536

OGG目录 执行logdump

Logdump 40 >open /oggbase/dirdat/S1000002925
Current LogTrail is /oggbase/dirdat/S1000002925
Logdump 41 >detail on
Logdump 42 >ghdr on
Logdump 43 >detail data     -- 显示每个字段对应具体数据
Logdump 44 >pos 377293536
Reading forward from RBA 377293536
Logdump 45 >n

___________________________________________________________________ 
Hdr-Ind    :     E  (x45)     Partition  :     .  (x0c)  
UndoFlag   :     .  (x00)     BeforeAfter:     A  (x41)  
RecLength  :  1438  (x059e)   IO Time    : 2022/02/08 13:19:58.091.213   
IOType     :     5  (x05)     OrigNode   :   255  (xff) 
TransInd   :     .  (x01)     FormatType :     R  (x52) 
SyskeyLen  :     0  (x00)     Incomplete :     .  (x00) 
AuditRBA   :     313394       AuditPos   : 264303556 
Continued  :     N  (x00)     RecCount   :     1  (x01) 

2024/05/08 13:19:58.091.213 Insert               Len  1438 RBA 377293536 
Name: SCOTT.EMP01  (TDR Index: 3
After  Image:                                             Partition 12   GU m   
 0000 0000000 3030 3831 3537 3334 3039 0001 000c | ......0081573409....  
 0000 0008 3230 3232 3032 3038 0002 0010000 3230 | ....20240508......20  
 3232 2d30 3223038 3a31 3333139 3a33 3223538 | 24-05-08:13:19:32.58  
 3234 3535 3030 3000 0300 1000 0000 0c33 3231 3930 | 2455000........32190  
 3030 3030 3531 3900 0400 0500 0000 0120 0005 0004 | 0000519........ ....  
 ffff 0000 0006 0004 ffff 0000 0007 0004 ffff 0000 | ....................  
 0008 0004 ffff 0000 0009 0007 0000 0003 3638 3200 | ................682.  
Column     0 (x0000), Len    12 (x000c)  
 0000 3030 3831 3537 3334 3039                     | ..0081573409   -- 第一列的值
Column     1 (x0001), Len    12 (x000c)  
 0000 0008 3230 3232 3032 3038                     | ....20240508   -- 第二列的值
Column     2 (x0002), Len    31 (x001f)  
 0000 3230 3232 2d30 3223038 3a31 3333139 3a33 | ..2024-05-08:13:19:3  
 322e 3538 3234 3535 3030 30                       | 2.582455000  
Column     3 (x0003), Len    16 (x0010)  
 0000 0003332 3139 3030 3030 3035 3139           | ....321900000519  
 

select * from SCOTT.EMP01 w where w.sno='0081573409'

根据表结构对比字段数据,可以通过唯一键去上游找原始数据,找到乱码字符

修复问题并恢复复制:
一旦确定了问题原因(例如数据格式错误、缺失数据等),进行相应的修复。

解决办法1
复制进行添加参数
REPLACEBADCHAR SUBSTITUTE '?'  -- 将无法转换字符修改成问号
MAP SCOTT.EMP01, TARGET SCOTT.EMP01;

解决办法2
将目标端varchar2修改为nvarchar2:
alter table SCOTT.EMP01 modify (POST nvarchar2(2000))

总结:

及时有效地处理OGG复制中断问题对于保持数据一致性和业务连续性至关重要。通过合理配置DISCARDFILE并有效利用Logdump工具,我们可以快速定位问题源头,进行针对性的问题解决。维持OGG复制的稳定性不仅需要技术手段的支持,还需要运维人员对GoldenGate工具的熟练掌握和经验积累。通过实时监控和及时响应,确保数据复制的高效和准确,是每一个数据库管理员的重要职责。

「欢迎关注我们的公众号,获取更多技术分享与经验交流。」


文章转载自数据库驾驶舱,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论