GoldenGate更新丟失問題
最近,在GoldenGate(11.2.1.0.1 for 10g)的目標庫上發現一個很有趣但又很擾人的問題。事情是這樣的,有使用者反映說在目標庫上的一張表上有兩個欄位(DZFAILFLAG,REMARK)的值與源庫的不一致。
也就是說複製程式是在工作的,而且工作的很正常!嘗試對源庫上的某條記錄的DZFAILFLAG,REMARK進行更新,結果很讓人失望,在目標庫的這兩個欄位的值死活都不更新!考慮到這張表的記錄還不算多,於是就對這張表重新進行了初始化。經過一番折騰,表終於重新初始化完成了,滿懷著希望重新嘗試對源庫上的欄位進行更新,結果讓人抓狂,還是不更新!沒辦法,只能去分析一下trail檔案,看看到底發生了什麼事,用logdump開啟相應的trail檔案,定位到相應的位置:
檢查了一下源庫與目標庫的GoldenGate程式,兩邊都執行的很好,也沒有報任何錯誤。檢視了一下源庫和目標庫上那張表的記錄數,兩邊的記錄數是一樣的,但確實有些記錄的值是不一致的!而且當源庫的記錄數增加時,目標庫的記錄數也跟著相應增加:
點選(此處)摺疊或開啟
-
源庫:
-
11:17:37 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
-
-
COUNT(*)
-
----------
-
980489
-
-
11:18:07 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
-
-
COUNT(*)
-
----------
-
980490
-
-
11:18:43 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
-
-
COUNT(*)
-
----------
-
980493
-
-
11:19:44 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
-
-
COUNT(*)
-
----------
-
980498
-
-
-
目標庫:
-
11:17:43 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
-
-
COUNT(*)
-
----------
-
980490
-
-
11:18:53 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
-
-
COUNT(*)
-
----------
-
980493
-
-
11:19:38 SQL> SELECT COUNT(*) FROM LISDATA.LDCONTINVOICEMAP;
-
-
COUNT(*)
-
----------
- 980498
也就是說複製程式是在工作的,而且工作的很正常!嘗試對源庫上的某條記錄的DZFAILFLAG,REMARK進行更新,結果很讓人失望,在目標庫的這兩個欄位的值死活都不更新!考慮到這張表的記錄還不算多,於是就對這張表重新進行了初始化。經過一番折騰,表終於重新初始化完成了,滿懷著希望重新嘗試對源庫上的欄位進行更新,結果讓人抓狂,還是不更新!沒辦法,只能去分析一下trail檔案,看看到底發生了什麼事,用logdump開啟相應的trail檔案,定位到相應的位置:
點選(此處)摺疊或開啟
- 2013/08/20 12:50:55.000.000 FieldComp Len 48 RBA 17500895
- Name: LISDATA.LDCONTINVOICEMAP
- After Image: Partition 4 G s
- 0000 0010 0000 000c 3330 3030 3030 3030 3130 3335 | ........300000001035
- 0001 0005 0000 0001 3100 0200 0f00 0000 0b38 3330 | ........1........830
- 3130 3030 3030 3032 | 10000002
- Column 0 (x0000), Len 16 (x0010)
- Column 1 (x0001), Len 5 (x0005)
- Column 2 (x0002), Len 15 (x000f)
從trail的記錄裡可以看到,EXTRACT只抓取到了主鍵列(列0,1,2是這張表的主鍵),而要更新的那兩列沒有抓取到!試著重啟了一下EXTRACT程式,結果更新就一切正常了!
瞭解到欄位DZFAILFLAG,REMARK是前兩天剛剛新增加的,而更新丟失恰恰就發生在這兩個新增欄位上。也就是說當對錶增加新欄位,如果不重啟EXTRACT程式,就無法抓取到新的欄位資訊!這樣的話,那如果使用GoldenGate的DDL複製功能,即使DDL複製工作正常,是不是應該也會碰到這樣的問題?那GoldenGate的DDL的複製功能豈不成了擺設?已經開了SR給ORACLE,不知道是不是GoldenGate的BUG。在這之前,各位在做DDL前,還是先把EXTRACT先停掉。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/13885898/viewspace-1651405/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 更新丟失Oracle
- js浮點數丟失問題JS
- iframe跨域session丟失問題跨域Session
- 關於Session值丟失問題Session
- 資料庫併發寫入問題-丟失更新與寫入偏差資料庫
- RocketMq訊息丟失問題解決MQ
- git server“丟失”commit問題探究GitServerMIT
- Sqlserver表統計資訊丟失問題SQLServer
- dfm檔案資料丟失問題
- 請教tomcat session丟失問題TomcatSession
- Django資料庫連線丟失問題Django資料庫
- Nginx session丟失問題處理解決方法NginxSession
- 一次inmemory丟失引起的問題分析
- Oracle_dg歸檔丟失問題處理Oracle
- session定義使用和丟失問題小結Session
- Web-請求資料+號丟失問題Web
- 如何檢測 Web 服務請求丟失問題Web
- JavaScript中解決計算精度丟失的問題JavaScript
- oracle 小數點前零丟失的問題<轉>Oracle
- SpringCloud解決feign呼叫token丟失問題SpringGCCloud
- 解決Nessus外掛更新失敗問題
- thinkphp5丟失日誌問題,該如何解決?PHP
- webpack-dev-server 代理解決cookie丟失問題--cookiePathRewriteWebdevServerCookie
- js window.location.href之後,session丟失的問題JSSession
- Oracle全部索引丟失導致的效率問題處理Oracle索引
- crontab定時任務環境變數丟失問題變數
- 使用impdp不當導致的資料丟失問題
- 高併發下丟失更新的解決方案
- 關於 5月10號 資料丟失問題反饋
- JS大坑之19位數的Number型精度丟失問題JS
- 微信H5支付 - Referer丟失問題總結H5
- 前後端分離解決session跨域丟失問題後端Session跨域
- vue傳參頁面重新整理資料丟失問題Vue
- 解決RabbitMQ訊息丟失與重複消費問題MQ
- 關於建立Android工程R檔案丟失的問題Android
- cassandra tombstone導致寫資料丟失問題徵解
- [Web開發] IE Cookie丟失問題的常見原因薦WebCookie
- OpenSearch 2.x 版本文件部署 CSS 丟失的問題CSS