因sequence導致的replicat卡頓,顯示正常運行但沒有真寫數據

1、問題症狀

  1. replicat進程正常運行
  2. ggserr.log無錯誤輸出,卡在啓動階段
    日誌一直停在這裏
2020-06-02 01:48:50  INFO    OGG-01815  Oracle GoldenGate Delivery for Oracle, rept01.prm:  Virtual Memory Facilities for: COM
    anon alloc: mmap(MAP_ANON)  anon free: munmap
    file alloc: mmap(MAP_SHARED)  file free: munmap
    target directories:
    /home/oracle/ggate/dirtmp.
  1. send rept01,status 無響應
    我的replicat進程叫rept01

2、先說問題結論

因爲應用用了oracle的sequence作爲主鍵,但OGG沒有配置sequence同步。

3、排查過程

1."天啓"階段:重啓

因爲,ggserr.log沒有日誌輸出;replicat.dsc也沒有輸出,基本沒有思路。
以爲是OGG的bug,因爲特定的事務觸發了,嘗試n次重啓,問題照舊。

2.跳過當前事務

還是考慮特定事務有關,想着跳過這個特殊事務就好了。
方法1:跳過當前事務
start replicat rept01 skiptransaction
我都案例中,這個方法無效。啓動後,直接還是有問題的樣子。
方法2:按事務號跳過
查詢當前事務號
info rept01
通過logdump工具查看下一事務號

ALTER REPLICAT rept01, EXTRBA 0
方法點作用,會正常running一會,很快問題重現。

3.探查導致卡住的事務

在第2階段時,就有端倪,當時卡住的事務,不是普通的insert、update、delete,是sequence,看不出具體內容。

Logdump 7 >n

2020/06/01 01:54:16.229.190 Sequence OP          Len    61 RBA 21026675
Name: TRAN.SEQ_TRANMATERIAL
After  Image:                                             Partition 4   G  s
 0000 0008 0000 0004 5452 414e 0001 0014 0000 0010 | ........TRAN........
 5345 515f 5452 414e 4d41 5445 5249 414c 0002 000c | SEQ_TRANMATERIAL....
 0000 0008 3338 3137 3436 3932 0003 0005 0000 0001 | ....38174692........
 30                                                | 0

跳過卡頓事務後,再次卡住後,查看事務,依然是sequence有關。
這個時候,線索指向比較明顯了,可能與sequence有關。

4、解決方法

1.解決方法

先在備機

  1. 執行OGG的工具包
    用sqlplus執行sequence.sql,該文件在OGG根目錄下
    期間,需要輸入OGG軟件使用的schema

  2. OGG全局文件增加GGSCHEMA
    GGSCI 25> view param ./GLOBALS
    checkpointtable ggate.ckpt
    GGSCHEMA GGATE

  3. OGG執行flush sequence
    GGSCI > dblogin userid ggate password ggate
    GGSCI > FLUSH SEQUENCE scott.seq*
    注意:這個只是OGG同步需要,不會充值oracle的序列的值。

  4. 在主機同樣執行

  5. 重啓全部進程。

2.問題覆盤

OGG支持sequence同步,但需要單獨設置和額外工具包支持。一開始的環境是不具備的。
跳過卡頓事務,正常運行一段時間,可能期間剛好是delete、update操作,所以不卡頓。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章