Oracle 8i更新相關(guān)類型中出現(xiàn)亂碼問題的解決
Oracle 8i在更新中包含varchar2和date類型的相關(guān)記錄時(shí)varchar2會(huì)出現(xiàn)亂碼問題,雖然Oracle 8i以前就被人使用,現(xiàn)在用的人并不占多數(shù),但是畢竟還是有一部分的人在用的,比如遇到亂碼等相關(guān)問題的介紹。
問題描述:
環(huán)境:windows XP,Oracle 8i 8.1.6.0.0
問題:使用JDBC連接數(shù)據(jù)庫,在同時(shí)更新一個(gè)包含varchar2和date類型的記錄時(shí),某個(gè)varchar2會(huì)出現(xiàn)亂碼,無論英文還是中文,并且還有可能同一個(gè)字段前半部分亂碼后半部分不亂碼。同樣的sql語句,使用sqlplus執(zhí)行就沒有問題。
問題解決:
首先,用DBA的權(quán)限執(zhí)行下面的語句:
select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,(select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,(select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3
在Oracle 8i運(yùn)行中要更新復(fù)制上面語句的執(zhí)行結(jié)果,在我的機(jī)器上執(zhí)行的結(jié)果是:AMERICAN_AMERICA.ZHS16GBK打開注冊(cè)表,找到HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0,找到NLS_LANG,雙擊,將數(shù)值數(shù)據(jù)改為剛復(fù)制的那個(gè)
修改完注冊(cè)表,重啟機(jī)器。在這里可能有一些問題,首先如果你的ORACLE不是一次安裝成功的,那么可能有HOME0,HOME1等,在我的經(jīng)歷中,首先將HOME1中的NLS_LANG改了,但是問題依舊,然后將HOME0中改了,問題才解決,所以改的時(shí)候把所有的HOMEX中NLS_LANG的都改了吧,如果沒有就新建一個(gè)。
其次,單改注冊(cè)表可能還會(huì)出現(xiàn)問題,這時(shí)候就要改jdbc驅(qū)動(dòng)了,不要用那些10g,9i,8i通吃的驅(qū)動(dòng),去oracle安裝目錄中的jdbc目錄找,用這里的驅(qū)動(dòng)問題解決。
以上就是對(duì)Oracle 8i更新包含varchar2和date類型的記錄時(shí)varchar2亂碼的相關(guān)內(nèi)容的介紹,望你會(huì)有所收獲。
【編輯推薦】
- Oracle EXP的實(shí)際應(yīng)用方案詳解
- Oracle exp備份的實(shí)際操作描述
- Oracle exp備份使用sysdba進(jìn)行導(dǎo)出和導(dǎo)入的操作
- Oracle exp備份機(jī)上安裝oracle10.1都需添加的內(nèi)容
- Oracle創(chuàng)建臨時(shí)表空間用到的代碼的示例