1、問題症狀
- replicat進程正常運行
- 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.
- 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.解決方法
先在備機
-
執行OGG的工具包
用sqlplus執行sequence.sql,該文件在OGG根目錄下
期間,需要輸入OGG軟件使用的schema -
OGG全局文件增加GGSCHEMA
GGSCI 25> view param ./GLOBALS
checkpointtable ggate.ckpt
GGSCHEMA GGATE -
OGG執行flush sequence
GGSCI > dblogin userid ggate password ggate
GGSCI > FLUSH SEQUENCE scott.seq*
注意:這個只是OGG同步需要,不會充值oracle的序列的值。 -
在主機同樣執行
-
重啓全部進程。
2.問題覆盤
OGG支持sequence同步,但需要單獨設置和額外工具包支持。一開始的環境是不具備的。
跳過卡頓事務,正常運行一段時間,可能期間剛好是delete、update操作,所以不卡頓。