4.5 發行參數

下表概述發行者層級參數及其內容:

Table 4-44 發行者層級參數和內容

顯示名稱

標籤名稱

範例值

預設值

必要

停用發行者?

disable

1 (是)

0 (否)

停用陳述式層級鎖定?

disable-locking

1 (是)

0 (否)

發行模式

publication-mode

2 (無觸發)

1 (已觸發)

事件記錄表格名稱

log-table

indirect_process

(無)

1

刪除已處理的列?

delete-from-log

0 (否)

1 (是)

允許迴路?

allow-loopback

1 (是)

0 (否)

啟用未來事件處理?

handle-future-events

1 (是)

0 (否)

啟動選項

startup-option

 

 

輪詢間隔 (以秒為單位)

polling-interval

60

10

2

每日發行時間

time-of-day

15:30:00

(無)

2

輪詢後陳述式

post-poll-stmt

DELETE FROM direct.direct_process

(無)

批次大小

batch-size

16

1

活動訊號間隔 (以分鐘為單位)

pub-heartbeat-interval

10

0

1已觸發發行模式的必要項目。 2這些參數互斥。

發行參數分為四個主要子類別:

4.5.1 未分類參數

停用發行者?

「停用發行者?」參數可指定是否停用「發行者」通道。 停用時,「發行者」通道不會查詢資料庫事件。 與停用訂閱者?參數不同,您仍然可以在「發行者」通道上發出資料庫查詢,以促進不同的發行演算法進行。

此參數設為布林值 True 時,「發行者」通道會停用。 此參數設為布林值 False 時,「發行者」通道會啟用。

Table 4-45 停用發行者?:內容

內容

標籤名稱

disable

必要?

no

預設值

0 (否)

正確的值

1、yes、true (是) 0、no、false (否)

與綱要相依

True

停用陳述式層級鎖定?

「停用陳述式層級鎖定?」參數可指定在執行每個 SQL 陳述式之前,是否在此通道上明確地鎖定資料庫資源。 此參數僅在啟用陳述式層級鎖定?參數設為布林值 True 時才處於使用中。

此參數設為布林值 True 時,資料庫資源會明確鎖定。 此參數設為布林值 False 時,資料庫資源則不會明確地鎖定。

Table 4-46 停用陳述式層級鎖定?:內容

內容

標籤名稱

disable-locking

必要?

no

預設值

0 (否)

正確的值

1、yes、true (是) 0、no、false (否)

與綱要相依

True

發行模式

「發行模式」參數可指定所使用的發行演算法。

設為 1 (已觸發) 時,「發行者」通道會輪詢事件的事件記錄表格。 設為 2 (無觸發) 時,「發行者」通道會攫取同步化綱要中的所有表格/檢視窗的變更,並會合成事件。

下表列出此參數的內容:

Table 4-47 發行模式:內容

內容

標籤名稱

publication-mode

必要?

no

預設值

1 (已觸發)

正確的值

1 (已觸發) 2 (無觸發)

與綱要相依

True

啟用未來事件處理?

針對已觸發發行,「啟用未來事件處理?」可指定事件記錄表格中的列是依插入順序 (record_id 欄) 還是依時間 (event_time 欄) 排序和處理的。

此參數設為布林值 True 時,事件記錄表格中的列會依插入順序發行。 此參數設為布林值 False 時,事件記錄表格中的列會依時間順序發行。

針對無觸發的發行,「啟用未來事件處理」可指定是否每個事件都發行資料庫本地時間。 此額外資訊可以用於強制重試未來日期的事件。 若要使其正常運作,在每個使用此功能的邏輯資料庫類別中都必須包含指定事件處理時間的欄,並要將此欄做為僅通知屬性置於「發行者」過濾器中。 請參閱Section H.0, 資料庫描述元 DTD

資料庫本地時間會做為每個 XDS 事件 (例如新增、修改、刪除) 的屬性發行。 屬性名稱是 jdbc:database-local-time,其中 jdbc 名稱空間字首會與 urn:dirxml:jdbc 結合。此格式是 java.sql.Timestamp 的 Java 字串表示: yyyy-mm-dd hh:mm:ss.fffffffff。根據「時間語法」參數的值,指出事件處理時間的值可以做為整數、標準字串或 Java 字串來發行。 請參閱時間語法

無論發行語法為何,此值都可以加以剖析,並與資料庫本地時間值相比較。 下表將時間語法映射至適當的剖析方法。

Table 4-48 將時間語法映射至剖析方法

時間語法

剖析方法

整數

java.sql.Timestamp.valueOf(java.lang.String):java.sql.Timestamp

標準字串

com.novell.nds.dirxml.driver.jdbc.db.DSTime(java.lang.String, java.lang.String, java.lang.String, java.lang.String)

java 字串

java.sql.Timestamp.valueOf(java.lang.String):java.sql.Timestamp

兩種時間值都是以一般 Timstamp 物件表示時,可以使用下列方法比較它們:

  • com.novell.nds.dirxml.driver.jdbc.db.TimestampUtil.before(java.sql.Timestamp, java.sql.Timestamp):boolean
  • com.novell.nds.dirxml.driver.jdbc.db.TimestampUtil.after(java.sql.Timestamp, java.sql.Timestamp):boolean

Section H.0, 資料庫描述元 DTD 中提供範例規則。

此參數設為布林值 True 時,每個事件都會發行本地資料庫時間。 此參數設為布林值 False 時,會省略此資訊。

下表列出此參數的內容:

Table 4-49 啟用未來事件處理?:內容

內容

標籤名稱

handle-future-events

必要?

no

預設值

0 (否)

正確的值

1、yes、true (是) 0、no、false (否)

與綱要相依

True

4.5.2 已觸發發行參數

Driver for JDBC 可以使用四種已觸發發行參數中的任何一種。

事件記錄表格名稱

「事件記錄表格名稱」參數指定儲存發行事件的事件記錄表格名稱。

此處指定的表格必須符合事件記錄表格的定義。

使用表格/檢視窗名稱 時,您很可能需要對此表格名稱進行明確的綱要限定。使用綱要名稱時,會使用該綱要名稱對此表格名稱進行隱含的綱要限定。如果此表格位於非隱含綱要的綱要中,則必須對其進行綱要限定。

下表列出此參數的內容:

Table 4-50 事件記錄表格名稱:內容

內容

標籤名稱

log-table

必要?

no1

區分大小寫?

請參閱未分隔的識別碼區分大小寫

範例值

eventlog

預設值

(無)

與綱要相依

True

1如果發行模式設為 1 (已觸發發行),則此參數是必要項目。

刪除已處理的列?

「刪除已處理的列?」參數指定是否從事件記錄表格刪除已處理的列。

此參數設為布林值 True 時,會刪除已處理的列。 此參數設為布林值 False 時,會更新已處理列的 status 欄位值。

若要減輕已處理列留存在事件記錄表格中對於效能所造成的影響,建議您定期將這些列移入歷程表格。 請進行下列其中一項操作:

  • 透過輪詢後陳述式參數呼叫清理預存程序。
  • 將刪除之前觸發置於事件記錄表格中,以攔截針對事件記錄表格執行的刪除事件,並在已刪除列從事件記錄表格中刪除之前,將其移至歷程表格中。

下表列出此參數的內容:

Table 4-51 刪除已處理的列?:內容

內容

標籤名稱

delete-from-log

必要?

no

預設值

0 (否)

正確的值

1、yes、true (是) 0、no、false (否)

與綱要相依

True

NOTE:除非定期從事件記錄表格移除已處理的列,否則將此參數設為布林值 False 會降低發行效能。

允許迴路?

「允許迴路?」參數指定是否應該發行由驅動程式資料庫使用者帳戶導致的事件。

此參數設為布林值 True 時,會發行迴路事件。 此參數設為布林值 False 時,會忽略迴路事件。

下表列出此參數的內容:

Table 4-52 允許迴路?:內容

內容

標籤名稱

allow-loopback

必要?

no

預設值

0 (否)

正確的值

1、yes、true (是) 0、no、false (否)

與綱要相依

True

NOTE:將此參數設為布林值 True 可能會降低效能,因為可能會發行無關的事件。

4.5.3 無觸發發行參數

Driver for JDBC 可以使用一個無觸發發行參數。 然而,狀態目錄參數也會影響無觸發發行。

啟動選項

「啟動選項」參數指定在啟動無觸發發行者時發生的事件。

Table 4-53 啟動選項:設定和結果

設定

結果

1

假設已變更和重新發行所有物件。

2

忽略過去和目前的變更。

3

發行所有過去和目前的變更。

下表列出此參數的內容:

Table 4-54 啟動選項:內容

內容

標籤名稱

startup-option

必要?

no

預設值

1 (處理所有變更)

正確的值

1 (重新同步化所有物件) 2 (僅處理未來變更) 3 (處理所有變更)

與綱要相依

True

IMPORTANT:無觸發發行中的下列變更可以強制進行重新同步化:

  • 使用無觸發發行時,變更驗證網路位置參數中非 URL 內容的任何項目都會強制重新同步化所有物件。
  • 使用無觸發發行時,變更驗證網路位置參數的值會強制重新同步化所有物件。
  • 變更「狀態目錄」參數值。

4.5.4 輪詢參數

輪詢間隔 (以秒為單位)

「輪詢間隔 (以秒為單位)」參數指定輪詢週期間無活動的秒數。

下表列出此參數的內容:

Table 4-55 輪詢間隔 (以秒為單位):內容

內容

標籤名稱

polling-interval

必要?

no

預設值

10 (秒)

正確的值

1-604800 (1 週)

與綱要相依

True

NOTE:建議您將此值設為至少 10 秒。

每日發行時間

「每日發行時間」參數指定在每天發行開始的時間。 時間視為表示伺服器本地時間 (執行驅動程式之伺服器上的時間)。

下表列出此參數的內容:

Table 4-56 每日發行時間:內容

內容

標籤名稱

time-of-day

必要?

no

範例值

13:00:00 (1PM)

預設值

(無)

正確的值

hh:mm:ss (h = 小時、m = 分鐘、s = 秒)

與綱要相依

True

NOTE:此參數會置換「輪詢間隔 (以秒為單位)」參數。 請參閱輪詢間隔 (以秒為單位)

輪詢後陳述式

「輪詢後陳述式」參數指定在每個使用中輪詢週期結束時執行的 SQL 陳述式。 使用中輪詢週期是發生部份發行活動的週期。

此參數的主要目的是允許清理發行活動之後的事件記錄表格。

您很可能需要對這些陳述式中參考的所有資料庫物件 (例如,表格、預存程序和函數) 進行明確的綱要限定。

下表列出此參數的內容:

Table 4-57 輪詢後陳述式:內容

內容

標籤名稱

post-poll-stmt

必要?

no

區分大小寫?

請參閱未分隔的識別碼區分大小寫

分隔符

分號 (;)

範例值

DELETE FROM direct.direct_process

預設值

(無)

正確的值

(任何正確的 SQL 陳述式集)

與綱要相依

True

批次大小

「批次大小」參數指定單一發行文件中傳送的事件數目。

基本上,批次越大,效能越佳。

  • 較大的批次需要較少的網路間往返。
  • 單一文件中的事件越多,所需的「發行者」通道與 Identity Manager 引擎間的往返越少 (假設沒有使用查詢回覆事件)。
  • 較大的批次會使「發行者」通道與資料庫間的往返數減至最少 (假設協力廠商 JDBC 驅動程式和資料庫支援批次處理)。
  • 批次越大,需要對本端檔案系統中狀態文件的認可越少。

    認可的成本也會很高。

此參數會定義上限。 「發行者」通道可能會在某些條件下置換指定的值。 選擇上限 128,可以將 Java 堆積溢位的可能性降至最低,且會減少驅動程式關閉時「發行者」線串的終止延遲。

下表列出此參數的內容:

Table 4-58 批次大小:內容

內容

標籤名稱

batch-size

必要?

no

預設值

1

正確的值

1 到 128

與綱要相依

True

活動訊號間隔 (以分鐘為單位)

「活動訊號間隔 (以分鐘為單位)」參數指定「發行者」通道在傳送活動訊號文件之前可以處於非使用中的分鐘數。 實際上,經過的時間會超過指定的分鐘數。 也就是說,此參數是定義下限。 只有當「發行者」通道處於非使用中的時間已達指定的分鐘數後,才會傳送活動訊號文件。 實際上,傳送的任何發行文件都是活動訊號文件。

下表列出此參數的內容:

Table 4-59 活動訊號間隔 (以分鐘為單位):內容

內容

標籤名稱

pub-heartbeat-interval

必要?

no

預設值

0

正確的值

0 到 2,147,483,647 (java.lang.Integer.MAX_VALUE)

與綱要相依

False