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 以包含已更新之繫線分割的新參數檔再次啟動之前,先將其完全關閉。正常關閉可讓所有繫線到達歷程檔中的通用檢查點位置。此時,可以在下一次執行時套用新的分割配置。

  1. 執行管理用戶端。

  2. 停止 Replicat。

STOP REPLICAT *group*
  1. 開啟參數檔以進行編輯。
EDIT PARAMS *group*
  1. 對 MAP 敘述句中的 THREAD 或 THREADRANGE 規格進行必要的變更。

  2. 儲存並關閉參數檔。

  3. 啟動 Replicat。

START REPLICAT *group*

在非計畫性重新分割之後復原 Replicat

非計畫性重新分割是當 Replicat 不被允許在再次使用包含已更新之繫線分割的新參數檔啟動之前完全關閉時。在此案例中,部分或所有舊繫線都無法完成其工作並到達通用檢查點。重新啟動時,協調器繫線會嘗試套用舊的分割配置,而 Replicat 則因發生錯誤而異常中止。您可以使用下列其中一種方式,從此條件復原協調式 Replicat 群組:

使用 HANDLECOLLISIONS 從低浮水印重新處理

在此程序中,您將所有繫線重新定位至低浮水印位置。這是所有執行緒之間執行的最早檢查點位置。為了以另一種方式說明,低浮水印位置是由最慢的執行緒在取消清除停止之前所處理的最後一個記錄。當您啟動 Replicat 時,執行緒會在 Replicat 停止之前重新處理正在處理的作業,而 HANDLECOLLISIONS 參數會處理任何重複記錄和遺漏記錄的錯誤,因為執行緒在取消清除停止之前重新處理所套用的作業速度較快。

  1. 將 HANDLECOLLISIONS 參數新增至 Replicat 參數檔。不需要使用任何 THREADS 選項。

  2. 針對整個 Replicat 群組 (協調器繫線) 發出 INFO REPLICAT 命令。記錄檢查點的 RBA。這是低浮水印值。此輸出也會顯示 Group Name 資料欄底下的作用中繫線 ID。也要記錄這些內容。

INFO REPLICAT *group*
For example:

<pre class="copy"><code>OGG(slc03jgo) 3&gt; 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>
  1. 針對每個處理繫線 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>
  1. 發出協調器繫線的 ALTER REPLICAT 命令 (Replicat 整體,不含任何繫線 ID),並定位至您記錄的低浮水印 RBA。
ALTER REPLICAT *group* EXTRBA *low_watermark_rba*
  1. 啟動 Replicat。
START REPLICAT *group*
  1. 發出基本的 INFO REPLICAT 命令,直到顯示高於您記錄之高浮水印的 RBA 為止。HANDLECOLLISIONS 會處理因先前套用的交易而發生的任何衝突。
INFO REPLICAT *group*
  1. 停止 Replicat。
STOP REPLICAT *group*
  1. 移除或註解 HANDLECOLLISIONS 參數。

  2. 啟動 Replicat。

START REPLICAT *group*

使用自動儲存的參數檔

每當在完全關閉 Replicat 之前編輯參數檔時,就會儲存原始參數檔的複本。您可以回復至此參數檔,然後重新同步繫線,讓它們全部擷取至具有最近檢查點位置的繫線。同步執行緒之後,您可以切換至新參數檔,然後啟動 Replicat。

  1. 將新參數檔儲存為其他名稱,然後將儲存的原始參數檔重新命名為正確的名稱 (與群組名稱相同)。儲存的參數檔具有 .backup 字尾,並儲存在 Oracle GoldenGate 安裝目錄的 dirprm 子目錄中。

  2. 發出下列命令,將 Replicat 繫線同步至檢查點位置上限。此命令會自動啟動 Replicat 並執行繫線,直到達到檢查點位置上限為止。

SYNCHRONIZE REPLICAT *group*
  1. 發出 STATUS REPLICAT 命令,直到顯示 Replicat 完全停止為止。
STATUS REPLICAT *group*
  1. 將原始參數檔儲存為其他名稱,然後將新參數檔重新命名為群組名稱。

  2. 啟動 Replicat。

START REPLICAT *group*