之前在安裝OGG總是遇到字符集問題,尤其是多源端對一個目標端時,源端字符集不同,導致出現字符集問題
無法同步數據,查閱了大量的園子資料,都說要設置復制或抽取進程中SETENV (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK),設置為和源端或者目標端一致即可,經過大量測出一對一的復制沒有問題,但是多對一的復制仍存在問題,后經大量閱讀資料,完成鏈路的設計。
最近剛好項目需要,剛好整理出來。
字符集轉換分為兩種
(ps:圖片有誤,方案二是,在oracle服務器新建操作系統用戶安裝OGG)
方案一是將字符集的轉換交給目標端復制進程解析隊列寫入數據庫時進行轉換。即目標端復制進程解析的隊列文件中的數據字符集還是源端的字符集。
方案二是將字符集的轉換交給源端抽取進程抽取時進行轉換。即源端傳遞到目標端的隊列文件中數據的字符集已經是目標端字符集。
具體過程如下:整個過程完全遵照oracle數據庫服務端-客戶端的字符集轉換過程。
方案一:紅色箭頭為字符集轉換過程
方案二:紅色箭頭為字符集轉換過程
我做的一個實際例子如下:當時因為源端無法設置環境變量NLS_LANG的字符集,因此兩個源端庫的數據都選擇在目標端進行字符集轉換。