您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關如何進行ogg的字符分析,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
我們所熟知oracle的字符集一旦創建完畢后最好不要修改,關于oracle goldengate的字符集問題還是需要注意的,因為如果目標端和源端字符集不一致,而有些字符無法在目標端表示ogg可能無法保證數據一致性。
源庫字符集:
SQL> select value from v$nls_parameters where parameter='NLS_CHARACTERSET';
VALUE
----------------------------------------------------------------
AL32UTF8
如果這里小魚在源端設置SETENV(NLS_LANG=“AMERICAN_AMERICA.ZHS16GBK”)去指定源端客戶端的字符集
GGSCI (dg01) 21> view params exiaoyu
extract exiaoyu
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
SETENV (ORACLE_SID="xiaoyu")
userid ogg,password ogg
dynamicresolution
gettruncates
report at 2:00
reportrollover at 3:00
warnlongtrans 3h,checkinterval 10m
exttrail ./dirdat/dd
table xiaoyu.*;
table xiaoyugg.*;
來看看對應的extract進程的報告,發現此時ogg發覺源端客戶端的NLS_LANG變量和源端數據庫字符集不一致,從而選擇源端數據庫字符集,并沒有根據extract進程參數中的SETENV指定。
GGSCI (dg01) 52> view report exiaoyu
** Running with the following parameters **
***********************************************************************
2013-06-04 04:50:27 INFO OGG-03035 Operating system character set identified as UTF-8. Locale: en_US, LC_ALL:.
extract exiaoyu
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
Set environment variable (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
SETENV (ORACLE_SID="xiaoyu")
Set environment variable (ORACLE_SID=xiaoyu)
userid ogg,password ***
2013-06-04 04:50:28 INFO OGG-03500 WARNING: NLS_LANG environment variable does not match database character set, or not set. Using database character set value of AL32UTF8.
[oracle@ogg 11.2]$ oggerr 3500
03500, 00000, "WARNING: NLS_LANG environment variable does not match database character set, or not set. Using database character set value of {0}"
// *{0}: nls_charset (String)
// *Cause: The NLS_LANG environment variable is not set to the same as the
// database character set. Oracle GoldenGate is using the database
// character set.
// *Action: None
看來源端設置NLS_LANG跟oracle database的字符集不一致時,ogg還是會選擇oracle database的字符集,而忽略掉extract的進程參數SETEVN NLS_LANG
接下來測試目標端:
這里也指定SETENV(NLS_LANG=”AMERICAN_AMERICA.ZHS16GBK”)
GGSCI (ogg.single) 15> view params rxiaoyu
replicat rxiaoyu
SETENV (NLS_LANG="AMERICAN_AMERICA.ZHS16GBK")
SETENV (ORACLE_SID="xiaoyu")
userid ogg,password ogg
assumetargetdefs
gettruncates
report at 2:00
reportrollover at 3:00
discardfile ./dirrpt/discard_rxiaoyu.dsc,append,megabytes 100
map xiaoyu.xiaoyu10,target xiaoyu.xiaoyu10,filter(@getenv("transaction","csn")>1074454806);
map xiaoyu.*,target xiaoyu.*;
map xiaoyugg.*,target ogg.*;
觀察目標端的replicat進程,發現ogg選擇了進程參數中SETENV(NLS_LANG=“AMERICAN_AMERICA.ZHS16GBK”)
GGSCI (ogg.single) 17> view report rxiaoyu
。。。
2013-06-05 03:14:14 WARNING OGG-03504 NLS_LANG character set ZHS16GBK on the target is different from the source database character set AL32UTF8. Replication may not be valid if the source data has an incompatible character for the target NLS_LANG character set
此時ogg給出的提示需要在replicat進程中正確設置SETENV NLS_LANG變量,這里源端傳遞的是AL32UTF8字符集,目標端通過replicat進程參數SETENV NLS_LANG指定的是ZHS16GBK,而ogg也采用了replicat進程的參數,并沒有選擇源端的字符集。
[oracle@ogg 11.2]$ oggerr 3504
03504, 00000, "NLS_LANG character set {0} on the target is different from the source database character set {1}. Replication may not be valid if the source data has an incompatible character for the target NLS_LANG character set."
// *{0}: nls_lang_charset (String)
// *{1}: src_db_charset (String)
// *Cause: The NLS_LANG environment variable on the target is set to a
// different character set than the character set of the source
// database.
// *Action: Set the NLS_LANG environment variable on the target to the
// character set of the source database that is shown in the message.
// You can use the SETENV parameter in the Replicat parameter file to
// set it for the Replicat session.
而ogg報出的3504警告是為了提醒目標端字符集和源端不一致,可能會引起replicat進程異常,這里ogg也推薦在replicat進程中設置NLS_LANG使目標端和源端一致。
那么對于字符集對ogg的影響就是源端和目標端,如果源端和目標端database字符集一直,這里在進程中直接采用一致的SETENV NLS_LANG都等于缺省的數據庫字符集即可,而對于源端和目標端字符集不一致的,則需要在目標端手動指定replicat進程參數SETENV NLS_LANG等于源端字符集,當然對于最后在數據庫中數據行小魚認為還是需要再次轉化成目標端oracle database的字符集。(ogg也是一個同步復制產品,其技術原理依然不能脫離oracle database)
看完上述內容,你們對如何進行ogg的字符分析有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。