大家應(yīng)該還記得上次本大濕分享過(guò)一遍文章《OceanBase數(shù)據(jù)同步挖掘日志慢解決方案》該方案引入OracleGoldenGate(以下簡(jiǎn)稱OGG)進(jìn)行數(shù)據(jù)同步。完美地解決了因OB挖掘日志慢影響整個(gè)項(xiàng)目割接進(jìn)度問(wèn)題。本以為該事件可以告一段落了,誰(shuí)知在后面的一次OGG數(shù)據(jù)初始化過(guò)程中問(wèn)題頻頻爆發(fā)。本大濕也是一路披荊斬棘,節(jié)節(jié)擊破。下面就帶大家一起體驗(yàn)下叢林探險(xiǎn)的整個(gè)心酸歷程。
踩坑之前先給大家介紹下業(yè)務(wù)流程:XXX系統(tǒng)XXX張配置表數(shù)據(jù)從Oracle端通過(guò)阿里OMS工具實(shí)時(shí)同步到OB端,其它約XXX張業(yè)務(wù)數(shù)據(jù)表需要通過(guò)阿里OMS工具從OB端實(shí)時(shí)同步到Oracle端。
坑位1:業(yè)務(wù)日志表從ORACLEADG端導(dǎo)出數(shù)據(jù)失敗
某晚因集團(tuán)版本需求生產(chǎn)端變更了表結(jié)構(gòu),因該方案中OGG部署于ADG環(huán)境無(wú)法自動(dòng)同步DDL操作到目標(biāo)端導(dǎo)致OGG同步失敗,需要對(duì)OGG同步中的表進(jìn)行數(shù)據(jù)初始化操作。目標(biāo)庫(kù)到源端ADG庫(kù)創(chuàng)建DBLINK,通過(guò)IMPDP工具參數(shù)network_link方式不落地遷移數(shù)據(jù)。
Impdprating/******** directory=dumpdir network_link=lnk_orayjjf1flashback_scn=16827177429142 cluster=no schemas=ratinginclude=table:"in (select tname from rating.rating430 )"TABLE_EXISTS_ACTION=REPLACE logfile=rating430_imp.log
報(bào)錯(cuò)如下:
Connectedto: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bitProduction
Withthe Partitioning, Real Application Clusters, Automatic StorageManagement, OLAP,
DataMining and Real Application Testing options
FLASHBACKautomatically enabled to preserve database integrity.
Starting"RATING"."SYS_IMPORT_SCHEMA_02": rating/********directory=dumpdir network_link=lnk_orayjjf1flashback_scn=16827177429142 cluster=no schemas=ratinginclude=table:"in (select tname from rating.rating430 )"TABLE_EXISTS_ACTION=REPLACE logfile=rating430_imp.log
Estimatein progress using BLOCKS method...
Processingobject type SCHEMA_EXPORT/TABLE/TABLE_DATA
Totalestimation using BLOCKS method: 57.07 GB
Processingobject type SCHEMA_EXPORT/TABLE/PROCACT_INSTANCE
Processingobject type SCHEMA_EXPORT/TABLE/TABLE
.. imported "RATING"."SET_XXX" 328795472 rows
ORA-39014:One or more workers have prematurely exited.
ORA-39029:worker 1 with process name "DW00" prematurely terminated
ORA-31671:Worker process DW00 had an unhandled exception.
ORA-00600:internal error code, arguments: [ORA-00600: internal error code,arguments: [kksgaGetNoAlloc_Int0], [58], [5], [], [], [], [], [], [],[], [], []
],[], [], [], [], [], [], [], [], [], [], []
ORA-02063:preceding line from LNK_ORAYJJF1
ORA-06512:at "SYS.KUPW$WORKER", line 1887
ORA-06512:at line 2
處理方案:
查詢MOS相關(guān)資料分析為觸發(fā)OracleBug需要更新補(bǔ)丁,考慮到更新補(bǔ)丁時(shí)間較長(zhǎng),并且Oracle11g已不再提供補(bǔ)丁下載服務(wù),因此決定從生產(chǎn)進(jìn)行數(shù)據(jù)初始化操作,問(wèn)題得以解決。
坑位2:OGG數(shù)據(jù)同步初始化完成后,出現(xiàn)抽取進(jìn)程異常終止。
OGG運(yùn)行日志ggserr.og出現(xiàn)如下錯(cuò)誤:
2020-10-28T01:35:46.953BEIST WARNING OGG-01431 Oracle GoldenGate Delivery for Oracle,rrating.prm: Aborted grouped transaction on RATXXX.SET_XXX, Mappingerror.
2020-10-28T01:35:46.953BEIST WARNING OGG-01003 Oracle GoldenGate Delivery for Oracle,rrating.prm: Repositioning to rba 63598507 in seqno 27.
2020-10-28T01:35:46.953BEIST WARNING OGG-01151 Oracle GoldenGate Delivery for Oracle,rrating.prm: Errormapping from RATXXX.SET_XXX to RATXXX.SET_XXX.
2020-10-28T01:35:46.955BEIST ERROR OGG-01296 Oracle GoldenGate Delivery for Oracle,rrating.prm: Errormapping from RATXXX.SET_XXX to RATXXX.SET_XXX.
2020-10-28T01:35:46.955BEIST INFO OGG-02333 Oracle GoldenGate Delivery for Oracle,rrating.prm: Reading /oracle_log/ogg/dirdat/rrating/re000000027,current RBA 63,598,507, 0 records, m_file_seqno = 27, m_file_rba =63,598,806.
2020-10-28T01:35:46.955BEIST ERROR OGG-01668 Oracle GoldenGate Delivery for Oracle,rrating.prm: PROCESSABENDING.
處理過(guò)程:
檢查OGG同步表配置信息,Oracle源端對(duì)象結(jié)構(gòu)
檢查OGG同步表配置信息,Oracle目標(biāo)端對(duì)象結(jié)構(gòu)
發(fā)現(xiàn)目標(biāo)端的表NOTNULL非空約束被DISABLE了,將表上的DISABLE非空約束改為ENABLE后,重啟OGG抽取進(jìn)程表同步恢復(fù)正常。
坑位2:OGG同步過(guò)程中長(zhǎng)事務(wù)造成“Lagat Chkpt”延遲。
OGG是基于事務(wù)級(jí)的實(shí)時(shí)復(fù)制工具,也就是說(shuō)OGG只復(fù)制已提交的事務(wù),在遇到事務(wù)的commit或rollback之前,它會(huì)將每個(gè)事務(wù)的操作存儲(chǔ)在稱為cache的托管虛擬內(nèi)存池中。內(nèi)存再大也有不夠用的時(shí)候,當(dāng)事務(wù)數(shù)據(jù)超過(guò)一定的閾值或者當(dāng)前空閑內(nèi)存無(wú)法滿足分配請(qǐng)求時(shí),OGG進(jìn)程會(huì)將最少使用的oldbuffer swap 到磁盤上的dirtmp中
監(jiān)控ggserr.log 中的長(zhǎng)事務(wù)警告,可以通過(guò)配置extract 進(jìn)程參數(shù)warnlongtrans 調(diào)整警告頻率 或者在抽取進(jìn)程中配置參數(shù):
edit params exta
warnlongtrans5h,checkintervals 1h
備注:此參數(shù)的含義是每隔1h檢查一下長(zhǎng)交易,如果超過(guò)5h的長(zhǎng)交易就會(huì)記錄在根目錄的ggserr.log中
2、監(jiān)控?cái)?shù)據(jù)庫(kù)中的長(zhǎng)事務(wù)
---判斷是否有大事務(wù)sql
selecta.sid,
a.serial#,
a.user#,
a.username,
b.addr,
b.USED_UBLK,
b.USED_UREC,
b.START_TIME,
b.xidusn,
b.XIDSLOT,
b.xidsqn
fromv$transaction b, v$session a
where /*b.addr in (select a.taddrfrom v$session a where a.sid = ) and*/ b.addr=a.taddr order bystart_time
3、ggsci提供了如下命令來(lái)處理長(zhǎng)事務(wù)
Ggsci> sendextract ,showtrans查看正在處理的未提交事務(wù)。
語(yǔ)法:sendextract <進(jìn)程名>, showtrans [thread n] [count n]
備注:<進(jìn)程名>為所要察看的進(jìn)程名,如extsz/extxm/extjx等;Threadn是可選的,表示只查看其中一個(gè)節(jié)點(diǎn)上的未提交交易;Countn也是可選的,表示只顯示n條記錄。
跳過(guò)事務(wù)(不建議)
Ggsci>sendextract ,skiptrans
語(yǔ)法:SENDEXTRACT <進(jìn)程名>,SKIPTRANS <5.17.27634> THREAD <2> //跳過(guò)交易
強(qiáng)制認(rèn)為事務(wù)已經(jīng)提交(不建議)
Ggsci>send extract ,forcetrans
語(yǔ)法:SENDEXTRACT <進(jìn)程名>,FORCETRANS <5.17.27634> THREAD <1> //強(qiáng)制認(rèn)為該交易已經(jīng)提交
建議所有的事務(wù)提交或回滾操作都在數(shù)據(jù)庫(kù)中進(jìn)行。
樣例:檢查OGG同步日志ggserr.log發(fā)現(xiàn)存在長(zhǎng)事務(wù)
2020-10-30T18:10:08.469BEIST WARNING OGG-01027 Oracle GoldenGate Capture for Oracle,erating.prm: Long Running Transaction: XID 993.6.69598, Items 1,Extract ERATING, Redo Thread 1, SCN 3918.1906392113 (16829588257841),Redo Seq #631053, Redo RBA 506349584.
處理過(guò)程:
在抽取進(jìn)程中添加參數(shù)BR參數(shù):BRBrInterval 1H, BRDir ./dirtmp
說(shuō)明:將OGG抽取進(jìn)程每次做檢查點(diǎn)時(shí)間有默認(rèn)的4小時(shí)改為1小時(shí),這樣OGG將長(zhǎng)事務(wù)狀態(tài)及時(shí)寫(xiě)入到磁盤,確保抽取進(jìn)程的捕獲性能,減少Lagat Chkpt 延遲。
基于OracleGoldenGate部署簡(jiǎn)單、運(yùn)維比較方便并且可以靈活地在同類和異類系統(tǒng)(包括不同版本的OracleDatabase、不同的硬件平臺(tái))之間以及Oracle數(shù)據(jù)庫(kù)和非Oracle數(shù)據(jù)庫(kù)(包括MicrosoftSQL Server、用于開(kāi)放系統(tǒng)和z/OS的IBMDB2、Sybase等等)之間移動(dòng)數(shù)據(jù)。因此被廣泛應(yīng)用在日常運(yùn)維中。今天的OGG故障分享到此結(jié)束,使用能夠幫助大家在日常運(yùn)維OGG的過(guò)程中少走一些彎路。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130087.html
OGG Integrated Native DDL簡(jiǎn)單測(cè)試 img{ display:block; margin:0 auto !important; width:100%; } body{ width:75%;...
摘要:?jiǎn)栴}九庫(kù)控制文件擴(kuò)展報(bào)錯(cuò)庫(kù)的擴(kuò)展報(bào)錯(cuò),用的是裸設(shè)備,和還是原來(lái)大小,主庫(kù)的沒(méi)有報(bào)錯(cuò),并且大小沒(méi)有變,求解釋。專家解答從報(bào)錯(cuò)可以看出,控制文件從個(gè)塊擴(kuò)展到個(gè)塊時(shí)報(bào)錯(cuò),而裸設(shè)備最大只支持個(gè)塊,無(wú)法擴(kuò)展,可以嘗試將參數(shù)改小,避免控制文件報(bào)錯(cuò)。 鏈接描述引言 近期我們?cè)贒BASK小程序新關(guān)聯(lián)了運(yùn)維之美、高端存儲(chǔ)知識(shí)、一森咖記、運(yùn)維咖啡吧等數(shù)據(jù)領(lǐng)域的公眾號(hào),歡迎大家閱讀分享。 問(wèn)答集萃 接下來(lái),...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20