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