Goldengate常用命令
1.Goldengate的起停
啟動goldengate
a> 啟動goldengate時最好先從target節點開始,然后是source節點.否則data pump進程可能會由于沒有收到target端的響應而異常退出。
b> manager進程是其他進程的管理程序,需要先啟動。如果manager配置參數中設置了AUTOSTART參數,則可由manager進程自動啟動其他進程。
例如:
log in target server:
cd <$GG_HOME>
ggsci
GGSCI> start mgr
GGSCI> start <replicat>
log in source server:
cd <$GG_HOME>
ggsci
GGSCI> start mgr
GGSCI> start <extract>
GGSCI> start <pump>
關閉goldengate
a> 關閉goldengate時最好先從source節點開始,然后是target節點.否則data pump進程可能會由于沒有收到target端的響應而異常退出。
b> manager進程通常最后關閉,并且manager進程沒有自動關閉其他進程的選項.
例如:
log in source server:
cd <$GG_HOME>
ggsci
GGSCI> stop <pump>
GGSCI> stop <extract>
GGSCI> stop manager
log in target server:
cd <$GG_HOME>
ggsci
GGSCI> stop <replicat>
GGSCI> stop manager
2.監控goldengate復制延遲
goldengate分為多個組件(extract,lag,replicat),所以在說延遲的時候也應該具體到是說哪個組件.作為一個復制解決方案來說,我們通常關心復制延遲,也就是消息在source數據庫的生成,到被apply到target數據庫的這段時間.
a> GGSCI的lag命令可以查詢復制延遲, 如:
GGSCI> lag <replicat>
b> 實際應用中,我們通常采用heartbeat表的方式來監控復制延遲,其優點是不僅可以監控適時復制延遲,還可以監控歷史延遲情況.
該機制的缺點是當goldengate本身發生異常停止了,heartbeat數據也不能更新,則表中的延遲數據不能反映真實的延遲情況. 規避該問題的方式是用當前系統時間減去heartbeat表中的源消息生成時間,則可以更準確的反映此時的真實延遲.
但若heartbeat job出現異常停止更新heartbeat表,則heartbeat表中的源消息生成時間也不再及時,計算得來的延遲數據也不準確,所以采用heartbeat監控延遲還要注意對heartbeat表本身的監控.
3.監控goldengate復制錯誤
默認情況下,當goldengate遇到復制錯誤時,goldengate是會異常終止的,處于abended狀態.但在實際使用中,通常會修改這種默認設置,以讓goldengate在遇到復制錯誤后能繼續工作,避免造成過大的復制延遲.
這種情況下一般會將錯誤信息寫到discard文件中.要監控discard文件中有多少錯誤,可使用以下命令:
GGSCI> STATS <replicat> latest,totalsonly *.*
*** Latest statistics since 2013-08-14 07:17:33 ***
Total inserts 18840062.00
Total updates 26221878.00
Total deletes 6471532.00
Total discards 0.00
Total operations 51533472.00
這里的Total discards統計值就是出錯的消息數.錯誤的詳細信息記錄在discard文件中,當然,也可能存在于某個表中,取決于你的goldengate配置中對錯誤信息的處理機制.
當我們對錯誤信息作了處理后,比如手工fix了這些問題,我們就不希望上述檢查命令再重復報告這些錯誤記錄,這時可以運行以下命令來重置goldengate對錯誤信息的統計:
GGSCI> STATS <replicat> latest,reset,totalsonly *.*
4.監控goldengate消息處理量
a> 監控goldengate自啟動以來總的消息處理量,可用以下命令:
GGSCI> STATS <replicat>,totalsonly *.*
這里查的是replicat進程,同樣,也可以查詢extract和pump進程
b> 按表來統計消息處理量,使用以下命令:
GGSCI> STATS <replicat>
或者制定某個表作統計:
GGSCI> STATS <replicat>,table <schema>.<table>
c> 實際使用中,我們通常關心一定時間單位內的處理能力,比如每秒處理多少消息。這時我們可以借助heartbeat表的統計信息來監控,heartbeat表中的RDMLDELTASTATS列記錄了總的DML數,除以時間就可以得到goldengate處理能力統計數據。
d> 除了以上方法之外,還可以設置REPORTCOUNT參數來讓goldengate每隔一定時間將處理的消息統計寫入goldengate report文件中,比如:
ReportCount Every 30 Minutes, Rate
5.goldengate的事務處理命令
對于常用的復制解決方案,無論是高級復制,stream還是goldengate,大事務或者長事務都是影響復制性能的重要因素之一。goldengate中有一些事務操作命令,可以幫助我們更好的監控或者人工干預這些大/長事務。
a> 查看extract進程當前打開的事務:
GGSCI> send <extract>,showtrans
b> 當我們意識到某個事務可能存在問題,我們可能希望看看該事務中的具體信息,可采用以下命令:
GGSCI> send extract <extract name>,showtrans <XID> file <file_name> detail
上述命令會將事務的詳細信息寫到文件中。
c> 當我們看到某個事務運行了很長時間,同時認為該事務可以提交或直接忽略時,可使用以下命令:
GGSCI> send extract <extract name>,skiptrans <xid> --跳過某個事務
GGSCI> send extract <extract name>,forcetrans <xid> --強制提交某個事務