Administering a Coordinated Replicat Configuration
本節包含協調執行緒的指示,以及在新的或不同的執行緒之間重新分割工作負載。在修改 THREAD 或 MAP 敘述句的 THREADRANGE 子句中的分割區規格之前,應先使用 STOP REPLICAT 命令完全停止協調式 Replicat。乾淨的停止會確保所有執行緒 (這些執行緒可能位於任何指定時間點的軌跡不同位置) 都完成其工作並到達共同的軌跡位置。
啟動時,Replicat 會發出錯誤並異常中止,如果偵測到上次關閉未清理,且 MAP 敘述句中的分割已變更為包含不同數目的繫線 (已新增或移除繫線)。不過,如果將相同的繫線保留在參數檔中,但只是在不同的 MAP 敘述句之間重新排列,Replicat 會發出警告但不會異常中止。這可能會導致記錄遺失或重複,因為無法確保前次執行之執行緒至工作負載配置的連續性。
以下為此條件的範例。
以下是原始的分割配置:
MAP source, target, THREADRANGE(1-5);
MAP source1, target1, THREADRANGE(6-10);
下列原始配置的重新分割只會產生警告:
MAP source, target, THREADRANGE(1-4);
MAP source1, target1, THREADRANGE(5-10);
本節提供在執行重新分割之前完全關閉 Replicat 的指示,以及在不正常關閉後執行重新分割時嘗試復原 Replicat 連續性的指示。
可在協調模式下對 Replicat 群組執行下列作業。
執行工作負載的計畫重新分割
計畫性重新分割是指允許 Replicat 以包含已更新之繫線分割的新參數檔再次啟動之前,先將其完全關閉。正常關閉可讓所有繫線到達歷程檔中的通用檢查點位置。此時,可以在下一次執行時套用新的分割配置。
-
執行管理用戶端。
-
停止 Replicat。
STOP REPLICAT *group*
- 開啟參數檔以進行編輯。
EDIT PARAMS *group*
-
對
MAP敘述句中的THREAD或THREADRANGE規格進行必要的變更。 -
儲存並關閉參數檔。
-
啟動 Replicat。
START REPLICAT *group*
在非計畫性重新分割之後復原 Replicat
非計畫性重新分割是當 Replicat 不被允許在再次使用包含已更新之繫線分割的新參數檔啟動之前完全關閉時。在此案例中,部分或所有舊繫線都無法完成其工作並到達通用檢查點。重新啟動時,協調器繫線會嘗試套用舊的分割配置,而 Replicat 則因發生錯誤而異常中止。您可以使用下列其中一種方式,從此條件復原協調式 Replicat 群組:
-
使用自動儲存的參數檔複本
-
使用
HANDLECOLLISIONS從低浮水印重新處理
使用 HANDLECOLLISIONS 從低浮水印重新處理
在此程序中,您將所有繫線重新定位至低浮水印位置。這是所有執行緒之間執行的最早檢查點位置。為了以另一種方式說明,低浮水印位置是由最慢的執行緒在取消清除停止之前所處理的最後一個記錄。當您啟動 Replicat 時,執行緒會在 Replicat 停止之前重新處理正在處理的作業,而 HANDLECOLLISIONS 參數會處理任何重複記錄和遺漏記錄的錯誤,因為執行緒在取消清除停止之前重新處理所套用的作業速度較快。
-
將
HANDLECOLLISIONS參數新增至 Replicat 參數檔。不需要使用任何THREADS選項。 -
針對整個 Replicat 群組 (協調器繫線) 發出
INFO REPLICAT命令。記錄檢查點的 RBA。這是低浮水印值。此輸出也會顯示Group Name資料欄底下的作用中繫線 ID。也要記錄這些內容。
INFO REPLICAT *group*
For example:
<pre class="copy"><code>OGG(slc03jgo) 3> info ra detail REPLICAT RA Last Started 2013-05-01 14:15 Status ABENDEDCOORDINATED Coordinator MAXTHREADS 15Checkpoint Lag 00:00:00 (updated 00:00:07 ago)Process ID 11445Log Read Checkpoint File ./dirdat/withMaxTransOp/bg000000001 2013-05-02 07:49:45.975662 RBA 44704Lowest Log BSN value: (requires database login)Active Threads: ID Group Name PID Status Lag at Chkpt Time Since Chkpt1 RA001 11454 ABENDED 00:00:00 00:00:01 2 RA002 11455 ABENDED 00:00:00 00:00:04 3 RA003 11456 ABENDED 00:00:00 00:00:01 5 RA005 11457 ABENDED 00:00:00 00:00:02 6 RA006 11458 ABENDED 00:00:00 00:00:04 7 RA007 11459 ABENDED 00:00:00 00:00:04</code></pre>
- 針對每個處理繫線 ID 發出
INFO REPLICAT命令,並記錄每個繫線的 RBA 位置。請記下最高的 RBA。這是 Replicat 群組的上限標準。
INFO REPLICAT *threadID*
For example:
<pre class="copy"><code>info ra002 REPLICAT RA002 Last Started 2013-05-01 14:15 Status ABENDEDCOORDINATED Replicat Thread Thread 2Checkpoint Lag 00:00:00 (updated 00:00:06 ago)Process ID 11455 Log Read Checkpoint File ./dirdat/withMaxTransOp/bg000000001 2013-05-02 07:49:15.837271 RBA 45603</code></pre>
- 發出協調器繫線的
ALTER REPLICAT命令 (Replicat 整體,不含任何繫線 ID),並定位至您記錄的低浮水印 RBA。
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
- 啟動 Replicat。
START REPLICAT *group*
- 發出基本的
INFO REPLICAT命令,直到顯示高於您記錄之高浮水印的 RBA 為止。HANDLECOLLISIONS會處理因先前套用的交易而發生的任何衝突。
INFO REPLICAT *group*
- 停止 Replicat。
STOP REPLICAT *group*
-
移除或註解
HANDLECOLLISIONS參數。 -
啟動 Replicat。
START REPLICAT *group*
使用自動儲存的參數檔
每當在完全關閉 Replicat 之前編輯參數檔時,就會儲存原始參數檔的複本。您可以回復至此參數檔,然後重新同步繫線,讓它們全部擷取至具有最近檢查點位置的繫線。同步執行緒之後,您可以切換至新參數檔,然後啟動 Replicat。
-
將新參數檔儲存為其他名稱,然後將儲存的原始參數檔重新命名為正確的名稱 (與群組名稱相同)。儲存的參數檔具有
.backup字尾,並儲存在 Oracle GoldenGate 安裝目錄的dirprm子目錄中。 -
發出下列命令,將 Replicat 繫線同步至檢查點位置上限。此命令會自動啟動 Replicat 並執行繫線,直到達到檢查點位置上限為止。
SYNCHRONIZE REPLICAT *group*
- 發出
STATUS REPLICAT命令,直到顯示 Replicat 完全停止為止。
STATUS REPLICAT *group*
-
將原始參數檔儲存為其他名稱,然後將新參數檔重新命名為群組名稱。
-
啟動 Replicat。
START REPLICAT *group*