OGG目标端复制Sequence时Hang住的问题
昨天遇到一個問題一個OGG的復制進程在復制序列(Sequence)時Hang住不動,進程狀態一直是Running狀態但是不往前進行復制,導致進程延遲6個多小時
操作復制進程時,stats和stop顯示操作超時,只能kill進程,重啟復制進程問題依就。問題從下午一直持續到晚上7點多,實在沒有辦法把所有數據都全部初始化了,還是不行,好在數據量不大。最后把goldengate用戶賦予dba權限問題就解決了,但是GOLDENGATE用戶的權限分配問題依然還是一個問題。下面記錄了問題的處理過程,有興趣的朋友可以看看。
使用view report usim查看日志,日志停在一個復制Sequence的語句上
Wildcard?MAP?resolved?(entry?USIM.*):map?"USIM"."SEQ_PROCESSSTEP",?target?USIM."SEQ_PROCESSSTEP"; Resolving?target?sequence?USIM.SEQ_PROCESSSTEP.查看ggserr.log也沒有報錯信息。
于是查看數據庫里的會話
SYS@ctm>?select?sid,serial#,LOGON_TIME,MODULE,sql_id,prev_sql_id,event,blocking_session?from?v$session?where?MODULE?like?'%USIM%';SID????SERIAL#?LOGON_TIME???MODULE?????????????????????????SQL_ID????????PREV_SQL_ID???EVENT??????????????????????????BLOCKING_SESSION ----------?----------?------------?------------------------------?-------------?-------------?------------------------------?----------------764???????8229?20-JAN-17????OGG-USIM-OPEN_DATA_SOURCE??????awjuqsu6bk5d4?b6zg67dtg1q14?row?cache?lockSYS@ctm>?select?sql_text?from?v$sql?where?sql_id='awjuqsu6bk5d4';SQL_TEXT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SELECT?"SEQ_PROCESSSTEP".NEXTVAL?FROM?DUALSYS@ctm>?select?sql_text?from?v$sql?where?sql_id='b6zg67dtg1q14';SQL_TEXT -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SELECT?HIGHWATER?FROM?SYS.SEQ$?WHERE?OBJ#=:B1看到當前ogg的復制進程在執行SELECT "SEQ_PROCESSSTEP".NEXTVAL FROM DUAL的語句,進程是在等待row cache lock。上面貼出來的是晚上查詢時的情況,其實下午在查這條sql時是不同的一個序列名字,但是動作一樣都是select nextval from dual,但是等待事件有library cache: mutex X、cursor: pin S wait on X、latch free、latch: shared pool。
看到這些等待事件頭都大了,先到百度上去搜索,看到有帖子說有可能是BUG,然后又到MOS上去搜等待事件的組合,看到很多BUG的文章,但是描述跟現在遇到的情況不一致。于是又轉到搜goldengate和序列hang的關鍵字,搜到一篇http://m.blog.csdn.net/article/details?id=48544207,在MOS上搜到1331998.1和1535322.1,但都是跟現在的情況不符。
于是又無奈的去查官方文檔,在Oracle GoldenGate Oracle Installation and Setup Guide中查到下面的幾句話:
看到紅框中的那句后恍然想到,由于系統交維,要求不允許用戶有DBA角色,GOLDENGATE也不可以,于是查看GOLDENGATE用戶的角色
SYS@ctm>?select?granted_role?from?dba_role_privs?where?grantee='GOLDENGATE';GRANTED_ROLE ------------------------------ RESOURCE CONNECT SELECT_CATALOG_ROLE果然沒有DBA角色,那問題是不是出在這里呢,于是嘗試給GOLDENGATE用戶DBA角色
grant dba to goldengate;
kill掉hang住的會話,重啟復制進程usim,終于問題解決了。復制進程開始往下復制了,而且序列復制的很快
GGSCI?(ctrm-r3)?20>?stats?usim?hourlySending?STATS?request?to?REPLICAT?USIM?...Start?of?Statistics?at?2017-01-20?21:47:22.DDL?replication?statistics:***?Total?statistics?since?replicat?started?????***Operations?????????????????????????????????????????0.00Mapped?operations??????????????????????????????????0.00Unmapped?operations????????????????????????????????0.00Other?operations???????????????????????????????????0.00Excluded?operations????????????????????????????????0.00Errors?????????????????????????????????????????????0.00Retried?errors?????????????????????????????????????0.00Discarded?errors???????????????????????????????????0.00Ignored?errors?????????????????????????????????????0.00Replicating?from?USIM.SEQ_PROCESSSTEP?to?USIM.SEQ_PROCESSSTEP:***?Hourly?statistics?since?2017-01-20?21:46:06?***Total?updates?????????????????????????????????????16.00Total?discards?????????????????????????????????????0.00Total?operations??????????????????????????????????16.00End?of?Statistics.最后再回想,難道就真的是因為DBA角色的關系么?于是把GOLDENGATE用戶的DBA角色收回:revoke dba from goldengate;
再次觀察復制進程情況,竟然正常在復制,沒有受到影響。而且從昨晚10點多回收dba角色,到今天發博客,復制進程也沒有hang住,還在正常復制。這就回到了上面疑問,真的是因為DBA角色導致的么?現在還不清楚。如果哪位大神知道問題的原因可以在博客中回復,感激不盡。
轉載于:https://blog.51cto.com/hbxztc/1893514
總結
以上是生活随笔為你收集整理的OGG目标端复制Sequence时Hang住的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: logging总结 - log4j2使用
- 下一篇: linux:ls -l详解