最近在客戶現(xiàn)場,客戶表示有使用OGG的一些需求,在此之前也使用OGG11g相比較老的一些版本,其中的原理也是懂一些。官網(wǎng)ogg版本已經(jīng)更新至19.1、20.3,按照數(shù)據(jù)庫在生產(chǎn)中版本使用的思想,這里選擇了使用19.1次新版本進行驗證測試。在此次使用的過程中碰到的事務(wù)的一些問題,及處理方法進行簡單分享。
環(huán)境介紹
源端:RHEL 6.8+Oracle 11.2.0.4+OGG 19.1
目標(biāo)端:RHEL 7.6+Oracle 19.10.0.0+OGG 19.1
同步模式:schema級別DDL同步
異常分析
目標(biāo)端REPLICAT進程ABENDED,檢查日志發(fā)現(xiàn)在ORA-00942: table or view does not exist的錯誤之后REPLICAT進程ABENDED。manager配置文件中已配置autorestart er *,進行重啟多次無法解決此問題。
根據(jù)錯誤提示在目標(biāo)庫查詢此表已不存在,ogg復(fù)制執(zhí)行sql失敗,導(dǎo)致進程ABENDED。
GGSCI (os-app02) 1> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT ABENDED REP1 02:11:40 00:02:25
2021-12-09T14:15:59.955+0000 ERROR OGG-00516 Oracle GoldenGate Delivery for Oracle, rep1.prm: Fatal error
executing DDL replication: error [Error code [942], Error
code [942], Error code [942], Error code [942], ORA-00942:
table or view does not exist], due to explicit ABEND error
handling and filter [include all (default)].
2021-12-09T14:16:05.072+0000 INFO OGG-02333 Oracle
GoldenGate Delivery for Oracle, rep1.prm: Reading
/u01/app/ogg/dirdat/rt000000011, current RBA 2,903, 0
records, m_file_seqno = 11, m_file_rba = 4,191.
2021-12-09T14:16:05.074+0000 ERROR OGG-01668 Oracle
GoldenGate Delivery for Oracle, rep1.prm: PROCESS ABENDING.
處理方法
方法一:
使用logdump分析trail文件,獲取事務(wù)NEXT RBA,跳過異常事務(wù)。目標(biāo)庫對象已不存在,此sql已不必須,跳過執(zhí)行sql事務(wù)即可恢復(fù)。
1)查看復(fù)制進程當(dāng)前處理的文件和處理到的RBA地址:
GGSCI (os-app02) 15> info rep1
REPLICAT REP1 Last Started 2021-12-09 14:52 Status RUNNING
INTEGRATED
Checkpoint Lag 02:08:38 (updated 00:00:07 ago)
Process ID 22906
Log Read Checkpoint File /u01/app/ogg/dirdat/rt000000011
2021-12-09 12:44:08.040185 RBA 2903
2)由于RBA不是簡單+1的關(guān)系,需要使用ogg提供的logdump定位下一個事務(wù)的RBA:
[oracle@os-app02 ogg]$ ./logdump
Logdump 18 >open /u01/app/ogg/dirdat/rt000000011 --打開trail文件
Current LogTrail is /u01/app/ogg/dirdat/rt000000011
Logdump 19 >pos 2903 --定位當(dāng)前RBA
Reading forward from RBA 2903
Logdump 20 >n --NEXT
2021/12/09 12:44:08.040.185 DDLOP Len 1179 RBA 2903
Name:
After Image: Partition x04 G s
2c43 3137 2827 3127 293d 274e 4c53 5f4e 554d 4552 | ,C17(1)=NLS_NUMER
4943 5f43 4841 5241 4354 4552 5327 2c2c 4331 3828 | IC_CHARACTERS,,C18(
2731 2729 3d27 2e5c 2c27 2c2c 4331 3728 2732 2729 | 1)=.,,,C17(2)
3d27 4e4c 535f 4441 5445 5f46 4f52 4d41 5427 2c2c | =NLS_DATE_FORMAT,,
4331 3828 2732 2729 3d27 4444 2d4d 4f4e 2d52 5227 | C18(2)=DD-MON-RR
2c2c 4331 3728 2733 2729 3d27 4e4c 535f 5449 4d45 | ,,C17(3)=NLS_TIME
5354 414d 505f 464f 524d 4154 272c 2c43 3138 2827 | STAMP_FORMAT,,C18(
Logdump 21 >n --NEXT
2021/12/09 06:24:49.484.843 Metadata Len 83 RBA 4191
Database Name:
3000 4f00 0100 0200 0100 0200 3a00 0100 0400 ea27 | 0.O.........:......
0000 0200 0400 0100 0000 0300 0200 0000 0400 0800 | ....................
0600 2b30 383a 3030 0500 1400 1000 0000 1414 1414 | ..+08:00............
1414 1414 1414 1414 1114 1414 0300 0700 0500 4150 | ..................AP
5030 31 | P01
3)重新指定REPLICAT進程的當(dāng)前RBA以跳過當(dāng)前事務(wù),重啟REPLICAT進程。
GGSCI (os-app02) 1> alter replicat rep1,extrba 4191
2021-12-09 15:02:19 INFO OGG-06594 Replicat REP1 has been altered. Even the start up position might be updated, duplicate suppression remains active in next startup. To override duplicate suppression, start REP1 with NOFILTERDUPTRANSACTIONS option.
REPLICAT (Integrated) altered.
GGSCI (os-app02) 2> start rep1
Sending START request to MANAGER ...
REPLICAT REP1 starting
GGSCI (os-app02) 3> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:35
可以看到REPLICAT進程已恢復(fù)正常。
方法二:
目標(biāo)端處理異常,滿足sql執(zhí)行條件。
分析異常sql為drop table xxxx;刪除表操作,在目標(biāo)庫創(chuàng)建一對象名為xxxx的空表,成功執(zhí)行drop即可恢復(fù)。本文示例表明emp_222。
1)在目標(biāo)庫對應(yīng)用戶下創(chuàng)建一表,表名與異常sql中表名一致:
15:13:09 SCOTT@app02> create table emp_222(name varchar2(10));
Table created.
Elapsed: 00:00:00.00
2)重啟REPLICAT進程:
GGSCI (os-app02) 7> start rep1
Sending START request to MANAGER ...
REPLICAT REP1 starting
GGSCI (os-app02) 8> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:01
REPLICAT進程已恢復(fù)正常。
方法三:
OGG提供錯誤忽略機制,可以根據(jù)錯誤代碼跳過錯誤。
1)異常的錯誤代碼為942,確認(rèn)所有此類異常均可跳過,在REPLICAT參數(shù)文件中添加DDLERROR配置信息:
GGSCI (os-app02) 2> edit params rep1
DDLERROR 942 IGNORE
2)重啟REPLICAT進程:
GGSCI (os-app02) 3> start rep1
Sending START request to MANAGER ...
REPLICAT REP1 starting
GGSCI (os-app02) 4> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:03
REPLICAT進程已恢復(fù)正常。
注:以上處理方法,可以根據(jù)不同的場景結(jié)合使用,無論那種方式,均需要以保證數(shù)據(jù)完整性、一致性為前提。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/129616.html
Goldengate目標(biāo)端11g升級至19c img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%; ...
摘要:不同于個人面經(jīng),這份面經(jīng)具有普適性。我在前面的文章中也提到了應(yīng)該怎么做自我介紹與項目介紹,詳情可以查看這篇文章備戰(zhàn)春招秋招系列初出茅廬的程序員該如何準(zhǔn)備面試。是建立連接時使用的握手信號。它表示確認(rèn)發(fā)來的數(shù)據(jù)已經(jīng)接受無誤。 showImg(https://segmentfault.com/img/remote/1460000016972448?w=921&h=532); 該文已加入開源文...
摘要:以下為大家整理了阿里巴巴史上最全的面試題,涉及大量面試知識點和相關(guān)試題。的內(nèi)存結(jié)構(gòu),和比例。多線程多線程的幾種實現(xiàn)方式,什么是線程安全。點擊這里有一套答案版的多線程試題。線上系統(tǒng)突然變得異常緩慢,你如何查找問題。 以下為大家整理了阿里巴巴史上最全的 Java 面試題,涉及大量 Java 面試知識點和相關(guān)試題。 JAVA基礎(chǔ) JAVA中的幾種基本數(shù)據(jù)類型是什么,各自占用多少字節(jié)。 S...
摘要:我的是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)。因為我心理很清楚,我的目標(biāo)是阿里。所以在收到阿里之后的那晚,我重新規(guī)劃了接下來的學(xué)習(xí)計劃,將我的短期目標(biāo)更新成拿下阿里轉(zhuǎn)正。 我的2017是忙碌的一年,從年初備戰(zhàn)實習(xí)春招,年三十都在死磕JDK源碼,三月份經(jīng)歷了阿里五次面試,四月順利收到實習(xí)offer。然后五月懷著忐忑的心情開始了螞蟻金...
摘要:的內(nèi)置鎖是一種互斥鎖,意味著最多只有一個線程能持有這種鎖。使用方式如下使用顯示鎖之前,解決多線程共享對象訪問的機制只有和。后面會陸續(xù)的補充并發(fā)編程系列的文章。 早期的計算機不包含操作系統(tǒng),它們從頭到尾執(zhí)行一個程序,這個程序可以訪問計算機中的所有資源。在這種情況下,每次都只能運行一個程序,對于昂貴的計算機資源來說是一種嚴(yán)重的浪費。 操作系統(tǒng)出現(xiàn)后,計算機可以運行多個程序,不同的程序在單獨...
閱讀 1493·2023-01-11 13:20
閱讀 1851·2023-01-11 13:20
閱讀 1289·2023-01-11 13:20
閱讀 2041·2023-01-11 13:20
閱讀 4241·2023-01-11 13:20
閱讀 2948·2023-01-11 13:20
閱讀 1580·2023-01-11 13:20
閱讀 3852·2023-01-11 13:20