有時,我們會發現 replicat 進程的狀態顯示為 running,而 report 卻顯示未更新任何記錄。造成這種現象主要有 4 種原因:
1、replicat 進程正在讀取錯誤的 trail 記錄
2、replicat 進程正在讀取錯誤的 trail 檔案
3、指定的表名稱格式不正確
4、replicat 或 extract 進程 hang 住
發生上述四種情況時,進程的狀態會顯示為 running,但是查看 report 會發現沒有複製任何記錄。
如果是第一種情況:
執行 info extract,detail 或查看 extract 參數檔案中的 rmttrail 參數
執行 info replicat,detail 或查看 replicat report
replicat 進程正在讀取的 trail 檔案的名稱、主機、和路徑必須和 extract 進程參數中指定的一樣
如果是第二種情況:
執行 info replicat,detail 或者查看 replicat report
執行 ls- l 查看目標端的 trail 檔案,檢查正在讀取的 trail 檔案是否才能知道,replicat 進程正在
讀取的 trail 檔案的結尾未銜接到下一個可用的檔案
解決方案:執行 alter replicat rep_name,extseqno nnnnnn,extrba 0 師 replicat 切換至下啊一耳光檔案,然後重啟 replicat 進程。
此現象通常由源端執行 etrollover 操作引起。通常我們需要修改整個同步流程中的 extract、pump 和 replicat 進程的 extseqno 和
extrba 才能解決問題。
如果是指定的表名稱格式不正確:
則對 trail 檔案執行 logdump 檢查 trail 檔案中的表名稱是否與 replicat 進程參數中指定的 schema.table_name 一致
如果是進程 hang 起:
通常情況下 extract 進程 和 replicat 進程、mgr 進程都有可能出現 hang 的情況。
可以執行 ps -ef | grep proecess_name 進程查看是否運行著多個進程,或者在 ggsci 中執行 stop 操作,查看進程是否
能夠正常停起,如果不行,很多時候我們直接 kill process_name (可以在 ggsci ,也可以在 os 中) 重啟進程便可解決
問題。
轉載請註明作者出處及原文連結:
http://blog.csdn.net/xiangsir/article/details/8728747