GoldenGate如何修改抽取進程的讀取點?



     在GoldenGate的運維過程中,經常會因為某些原因,需要修改源端抽取進程的讀取點,比如從指定時間開始解析日志。 操作命令如下:
GGSCI>alter extract ex2, begin 2020-04-22 10:00:00
以上命令即可將抽取進程的讀取點改到2020.4.22 10點整,OGG會捕獲這個時間之后啟動的事務。
     當然,上面語句能否修改成功,需要確認生產源庫的日志文件是否存在,如果修改的讀取點是很早之間,有可能歸檔日志已經被刪除,則抽取進程會提示找不到日志文件而報錯。

    以上命令針對傳統抽取進程,在日志文件具備的情況下是可以走通的。那么從OGG 11.2之后開始出現的集成抽取,能否也可以按相同的方式執行呢?答案是肯定的,但有一些限制條件,而且操作命令比針對傳統抽取的修改更復雜。如果只是簡單采用上面的語句修改讀取時間點,事實上是不會生效,因為集成抽取的讀取時間點存儲在系統表里,只是修改抽取進程的檢查點文件是不行的。針對集成抽取的讀取時間點修改,正確的姿勢是:

  1. 先查證系統上最早的能讀取的SCN
  2. 根據SCN查證當時的時間點
  3. 根據SCN重新注冊抽取進程
  4. 根據當時時間點,修改抽取進程的begin時間

下面為詳細的操作過程
步驟1,系統允許的最早能讀取的SCN
SQL>col scn for 99999999999999999999
SQL>SELECT first_change# scn FROM gv$archived_log WHERE dictionary_begin = 'YES' AND standby_dest = 'NO' AND name IS NOT NULL AND status = 'A';


9084298460

步驟2,基於SCN查詢當時的時間點
SQL>SELECT SCN_TO_TIMESTAMP(89084298460) FROM DUAL;


2020-04-22 22.21.45

根據上述返回的結果,能修改的讀取時間,不能早於2020-04-22 22.21.45
否則修改讀取點時會提示如下錯誤:
2020-04-23 12:30:38  ERROR   OGG-02085  The logmining server failed to locate a dictionary at scn 89,079,565,000.

步驟3,重新注冊
register extract exora database container(pdb1) scn 89084298460

步驟4,修改begin時間
alter exora begin 2020-04-22 22.21.45

經過以上步驟,即可修改集成抽取的讀取點。

    需要注意的是,在生產環境上,在未確認能修改的最早讀取點之前,不要輕易stop抽取進程和unregister,除非已經做了讀取點和日志備份,否則在重新register時,可能會無法從停止點繼續解析日志,從而造成漏數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM