天天看點

GoldenGate 傳統抽取程序的 ADG 模式下,RAC切換單機,ogg的轉換GoldenGate 傳統抽取程序的 ADG 模式

GoldenGate 傳統抽取程序的 ADG 模式

GoldenGate 傳統抽取程序的 ADG 模式簡介:

GoldenGate 傳統抽取程序的 ADG 模式可實作對 DataGuard 備庫的抽取。與傳統方式不同,其不再由聯機線上 Redo 日志抽取,而抽取由主庫投遞而來的日志(歸檔日志及 standby redo logs)。   GoldenGate 傳統抽取程序的 ADG 模式原理: 1.抽取的日志類型 由主庫投遞至備庫的日志,具體表現為備庫的歸檔日志(archived logs)以及 standby redo logs。 2.DDL 複制的限制 Oracle GoldenGate 的 DDL 複制的本質是基于資料庫全局 Trigger 的複制。Trigger 将會捕捉 DDL 操作至中間表,随後抽取程序将讀取中間表的 DDL 語句,并與 DML 語句根據 csn(Change Sequence Number)排序。投遞程序将采集到的操作傳遞至目标端,最終複制程序重制以上 DDL 語句。 但是由于 ADG 模式抽取的是備庫,是以 Trigger 至中間表的操作無法實作。是以 ADG 模式下隻能實作 DML 的複制,而如欲實作 DDL 複制則需要在主庫上抽取。 3.DataGuard 角色切換的抽取過程 當執行資料庫切換時,Redo 日志的頭部将插入标記,用于指明日志流的結束。屆時抽取程序将根據 Redo 日志頭部插入的标記,判斷角色轉換時點,進而以新的模式(由于角色切換,抽取模式也應在正常及 ADG 模式間轉換)進行抽取。 4.主備庫執行個體數的限制 抽取程序的建立需要指定抽取資料庫的執行個體數,當資料庫角色轉換時,原本采用正常模式的抽取程序此時需轉換為 ADG 模式,反之亦然。是以倘若主備庫執行個體數不一緻,将可能引發抽取程序的錯誤。 例如:主庫為 2 節點的 RAC,備庫為單執行個體資料庫,雖然可以通過在主庫上額外建立存放備庫第二執行個體的 Standby Redo Log(由此騙過抽取程序,令其認為備庫擁有 2 個節點),結構如下圖所示。

GoldenGate 傳統抽取程式的 ADG 模式下,RAC切換單機,ogg的轉換GoldenGate 傳統抽取程式的 ADG 模式

但是當執行角色切換後,抽取程序在 ADG 模式下需要通過原主庫的歸檔日志确定角色切換點。确定切換點後,抽取程序從 Standby Redo Log 中繼續抽取資料。但是由于原備庫為單執行個體資料庫,是以原主庫上程序号為 2 的 Standby Redo Log 并無資料,也就造成了原主庫上以 ADG 模式對 2 号 Redo 程序的抽取點停留在原主庫的歸檔日志上。過程如下圖所示。

GoldenGate 傳統抽取程式的 ADG 模式下,RAC切換單機,ogg的轉換GoldenGate 傳統抽取程式的 ADG 模式

注意:是以删除歸檔執行個體時,原主庫上包含切換點的第二執行個體歸檔日志将報錯 "ASM file not dropped; currently being accessed"。抑或當第二執行個體歸檔日志丢失時,抽取程序将失效,且無論如果重置抽取點都會報錯 "OGG-00446  Could not find archived log for sequence"。屆時,隻能通過角色回切後重置抽取點,或重建 ADG 模式抽取程序的執行個體數為 1 以解決故障。其中,重建語句類似如下。 GGSCI>  DROP EXTRACT ext1 ADD EXTRACT ext1 THREADS t BEGIN SCN s START EXTRACT ext1   參考文檔: (1).《GoldenGate  Installing and Configuring Oracle GoldenGate for Oracle Database 》        11.6 Configuring Classic Capture in Oracle Active Data Guard Only Mode

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

繼續閱讀