OGG:ALLOWNOOPUPDATES,NOALLOWNOOPUPDATES 引數概念

huzhichengforce發表於2014-06-24
ALLOWNOOPUPDATES | NOALLOWNOOPUPDATES
Valid for Replicat
複製程式引數
Use ALLOWNOOPUPDATES and NOALLOWNOOPUPDATES to control how Replicat responds to a “noop” operation. A no-op operation is one in which there is no effect on the target table. The 
ALLOWNOOPUPDATES 和 NOALLOWNOOPUPDATES 用來處理 “沒有操作的操作”    “沒有操作的操作”  例如  源表 set x=a where x=a
following are some examples of how this can occur.
● The source table has a column that does not exist in the target table, or has a column 
that was excluded from replication (with a COLSEXCEPT clause). In either case, if that 
source column is updated, there will be no target column name to use in the SET clause 
within the Replicat SQL statement.
當源表有某些列但是目標表卻沒有,或者複製程式中配置了COLSEXCEPT 引數 在這些情況下,當源表對那些列進行更新,目標表將不發生任何變化
● An update is made that sets a column to the same value as the current one. The 
database does not log the new value, because it did not really change. However, Oracle 
GoldenGate extracts the operation as a change record because the primary key was 
logged — but there is no column value for the SET clause in the Replicat SQL statement.
By default (NOALLOWNOOPUPDATES), Replicat abends with an error because these types of 
operations do not update the database. With ALLOWNOOPUPDATES, Replicat ignores the 
operation instead of abending. The statistics reported by Replicat will show that an update 
was made, but the database will not be updated. 
另外更新一個欄位的值更新的值為原來的值,資料庫不會記錄這個新值,因為它沒有發生改變, 然後OGG 抽取程式將這個作為一個操作記錄下來了,這是因為主鍵的存在但是列沒有任何值的變化,根據系統預設的NOALLOWNOOPUPDATES引數設定複製程式將abends 並報錯,因為那些更改沒有在目標庫上做更新。如果使用了ALLOWNOOPUPDATES 引數OGG 將忽略這樣的情況並且不會abend程式統計資訊會記錄update 操作,但是資料庫卻不會發生改變。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26764973/viewspace-1192402/,如需轉載,請註明出處,否則將追究法律責任。

相關文章