點(diǎn)擊上方藍(lán)字關(guān)注我們
筆者環(huán)境中有多套o(hù)racle數(shù)據(jù)庫(kù)通過oggfor bigdata將數(shù)據(jù)投遞到kafka。簡(jiǎn)易架構(gòu)如下:
應(yīng)用端只需要增量數(shù)據(jù),故投遞的表均添加全字段附加日志,以確保投遞到kafka中每條消息均包含表記錄的所有字段內(nèi)容。話不多說,以下分享生產(chǎn)中實(shí)際問題及處理方法。
應(yīng)用要求表結(jié)構(gòu)變更時(shí)需要及時(shí)告知,故我們生產(chǎn)的復(fù)制進(jìn)程都是用了表結(jié)構(gòu)定義文件。當(dāng)出現(xiàn)表結(jié)構(gòu)變更時(shí),重新生產(chǎn)表結(jié)構(gòu)定義文件替換復(fù)制進(jìn)程原進(jìn)程表結(jié)構(gòu)定義文件即可,操作步驟如下:
#在源端數(shù)據(jù)庫(kù)操作,生成的表定義文件傳輸?shù)絆GGFOR BIGDATA端 visource.prm defsfile./dirdef/source.def,purge useridogg, PASSWORD ogg tableusername.tablename; tableusername.tablename; ……… defgenparamfile /ogg/dirprm/source.prm |
報(bào)錯(cuò)現(xiàn)象: ERROR OGG-03517 Conversion from character set zhs16gbk of source columnADDRESS to character set UTF-16 oftarget column ADDRESS fa iledbecause the source column contains a character that is not availablein the target character set. 解決方案: 1)錯(cuò)誤日志下方找到故障產(chǎn)生的隊(duì)列文件和RBA號(hào),為后天定位故障發(fā)生所在的事務(wù) Reading./dirdat/yd000003234, current RBA 189904087, 131 records,m_file_seqno = 3234, m_file_rba = 189904087 2)通過logdump工具,檢查這個(gè)SQL所在的事務(wù),用Logdump: ./logdump Logdump46 >open ./dirdat /yd000003234 <--上一步獲取 CurrentLogTrail is /home/oracle/OGG_Target/./dirdat/yd000003234 Logdump47 >ghdr on Logdump48 >detail data on Logdump49 >usertoken on Logdump50 >ggstoken detail Logdump51 >pos 189904087 <--上一步獲取 Logdump51 >n Logdump211 >pos 189904087 Readingforward from RBA 189904087 Logdump212 >n ___________________________________________________________________ Hdr-Ind : E (x45) Partition : . (x0c) UndoFlag : . (x00) BeforeAfter: A (x41) RecLength : 754 (x02f2) IO Time : 2019/02/03 07:56:41.139.230 IOType : 15 (x0f) OrigNode : 255 (xff) TransInd : . (x01) FormatType : R (x52) SyskeyLen : 0 (x00) Incomplete : . (x00) AuditRBA : 97069 AuditPos : 1030296448 Continued : N (x00) RecCount : 1 (x01) 2019/02/0307:56:41.139.230 FieldComp Len 754 RBA 189904087 Name:DBTEST.USERINFO (TDR Index: 13) After Image: Partition 12 G m 0000000a 0000 0000 15e4 434f 19dd 0001 000a 0000 | ..........CO........ 00000000 0000 0001 0002 000a 0000 0006 a3aa a3aa | .................... c3b70003 0007 0000 0003 3030 3100 0400 0400 0031 | ..........001......1 20000500 1f00 0000 1b33 3432 3532 33a3 aaa3 aaa3 | ........342523..... aaa3aaa3 aaa3 aaa3 aaa3 aa37 3632 a3aa 0006 0014 | ...........762...... 00000010 a3aa a3aa a3aa a3aa a3aa a3aa a3aa a3aa | .................... 00070015 0000 3230 3939 2d31 322d 3331 3a30 303a | ......2099-12-31:00: Column 0 (x0000), Len 10 (x000a) 00000000 15e4 434f 19dd | ......CO.. Column 1 (x0001), Len 10 (x000a) 00000000 0000 0000 0001 | .......... Column 2 (x0002), Len 10 (x000a) 00000006 a3aa a3aa c3b7 | .......... Column 3 (x0003), Len 7 (x0007) 00000003 3030 31 | ....001 Column 4 (x0004), Len 4 (x0004) 說明:這里已經(jīng)確定這個(gè)出問題的字段是DBTEST.USERINFO表。 3)通過配置文件中對(duì)應(yīng)的表進(jìn)行相關(guān)配置,重啟進(jìn)程即可 MAPDBTEST.USERINFO,TARGET DBTEST.USERINFO,COLCHARSET(PASSTHRU,ADDRESS); |
報(bào)錯(cuò)現(xiàn)象: OGG-03533 Conversion from character set zhs16gbk of source column ADDRESS tocharacter set UTF-8 of target column ADDRESS faile dbecause the source column contains a character 84 at offset 24 thatis not available in the target character set. 解決方案: 在參數(shù)文件中加入以下參數(shù),并重啟進(jìn)程 REPLACEBADCHARESCAPE |
報(bào)錯(cuò)現(xiàn)象: Theerror message:ERROR OGG-15051 Java or JNIexception:oracle.goldengate.util.GGException: Kafka Handler failed toformat and process operation: table=[DBTEST.USERINFO], oppos=00000054270047517956, tx pos=00000054270044951614, opts=2019-04-04 11:00 解決方案: 1)修改參數(shù)文件kafka.props 如果文件中有g(shù)g.handler.kafkahandler.format.pkUpdateHandling參數(shù),則修改為delete-insert;如果為沒有g(shù)g.handler.kafkahandler.format.pkUpdateHandling參數(shù)則新添加: gg.handler.kafkahandler.format.pkUpdateHandling=delete-insert 2)保存退出后重啟進(jìn)程 |
問題2和3主要是因?yàn)橹形淖侄我鸬膱?bào)錯(cuò),在很多場(chǎng)景中抽取的表未添加全字段附加日志,不涉及中文一般不會(huì)遇到這類報(bào)錯(cuò)。
問題4涉及業(yè)務(wù)邏輯問題,如不設(shè)置gg.handler.kafkahandler.format.pkUpdateHandling為delete-insert,默認(rèn)情況下進(jìn)程會(huì)abend。出現(xiàn)這種情況說明業(yè)務(wù)數(shù)據(jù)出現(xiàn)主鍵變更,需要轉(zhuǎn)成兩步操作。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/130008.html
摘要:選擇是因?yàn)榕笥压驹谑褂茫渴鹨约肮芾矶己芊奖悖詤⒖剂怂耐扑]選擇了。因?yàn)橐彩堑谝淮螄L試將服務(wù)遷到。原因容器并不認(rèn)為這個(gè)文件是它自己的,嚴(yán)格來說這個(gè)文件應(yīng)該是屬于宿主機(jī)的。 一、前言 我自己都對(duì)我自己博客記錄的次數(shù)太少感到無語了~... 目前公司是沒有使用docker的,因而自己希望對(duì)此作出改變,將服務(wù)都部署到docker容器中。 在這里是有幾個(gè)方面是要考慮的:1.怎么去部署doc...
摘要:選擇是因?yàn)榕笥压驹谑褂茫渴鹨约肮芾矶己芊奖悖詤⒖剂怂耐扑]選擇了。因?yàn)橐彩堑谝淮螄L試將服務(wù)遷到。原因容器并不認(rèn)為這個(gè)文件是它自己的,嚴(yán)格來說這個(gè)文件應(yīng)該是屬于宿主機(jī)的。 一、前言 我自己都對(duì)我自己博客記錄的次數(shù)太少感到無語了~... 目前公司是沒有使用docker的,因而自己希望對(duì)此作出改變,將服務(wù)都部署到docker容器中。 在這里是有幾個(gè)方面是要考慮的:1.怎么去部署doc...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20