利用GoldenGate,能夠獲取到變動記錄在源端對應的redo日誌序號,redo中的地址RBA,若是源端是RAC,還能夠拿到源端節點的編號,經過這3個值,能夠定位該變動記錄的惟一性。
這些信息,在GoldenGate抽取時,能夠經過內置函數獲取獲得,而後寫入到trail中,從而在目標端經過token函數從trail獲得相關數據,而後插入到目標表中造成惟一鍵。
以下示例:
源端抽取的配置
TABLE src.table, TOKENS (
redoseq = @GETENV('RECORD','FILESEQNO'),
redorba = @GETENV('RECORD', 'FILERBA'),
redothread = @GETENV('TRANSACTION', 'REDOTHREAD'));java
這樣,在trail中的table表,就會附加上對應的這3條信息。而後在目標端的表,新增3個字段,保存這3條信息,能夠經過 TOKEN 獲取獲得。oracle
目標端配置ide
map src.table, target tgt.table2, colmap(useDefaults,
redoseq=@TOKEN('redoseq'), redoseq=@TOKEN('redoseq'), redoseq=@TOKEN('redoseq'));函數
針對java adapter接口或big data定製開發平臺,可以使用 op.getToken(userTokenName) 獲得token值。日誌
ref: https://blogs.oracle.com/dataintegration/ogg-custom-adapters%3a-how-to-include-a-unique-identifier-for-every-record-in-custom-adapter
Refer to documentation: https://docs.oracle.com/goldengate/1212/gg-winux/GWUAD/wu_datainteg.htm#GWUAD468,htm