解決PL/SQL Developer下ORA-01843 not a valid month錯誤

lnwxzyp發表於2011-07-28
        由於前一段時間犯了一個錯誤,對一個達到99%的表空間沒有提出預警,造成生產事務一度中斷,因此受到口頭警告,後來想了一下還是決定把所有表空間的資訊記錄到一個表裡面,然後對錶進行檢查,監控超過90%以上佔用率並且日增長環比較高的表空間,這個指令碼完成之後,一直是在fedora下進行記錄,然後這段時間據說要改用外掛認證的方式來訪問內網,而外掛認證必須得要windows的系統,不得已,為了保證在換成windows後不至於手足無措決定提前適應windows的環境,於是就把指令碼都遷移到了win7,在win7上用virtualbox建立了一個 虛擬機器OEL5.5然後安裝oracle10g打了10205的補丁,可是在實際操作過程當中,由於虛擬機器裡面的oracle日期格式 nls_date_format是 DD-MON-RR,而win7的oracle client由於是中文環境,同時使用PL/SQL Developer來作為編輯、執行語句的工具,一執行插入語句就會報無效的月份
INSERT INTO TABLESPACE_MONITOR VALUES ('192.168.1.139','ibss','27-JUL-11','TBS_IDX_B3',0,0,'0.00%','Permanent','OFFLINE');
27-JUL-11
重點就是這裡,這個當然還是日期格式的問題造成的,於是在PL/SQL Developer裡面修改了NLS Options,修改date選項為 DD-MON-RR可以執行語句還是報無效的月份,於是執行語句檢視結果
SQL> select sysdate from dual; 
SYSDATE
-----------
28-7O2-RR 4:03:12 PM
發現結果還是有問題,繼續修改,改為DD-MMM-RR 這個是PL/SQL Developer裡面oracle預設的格式不知道為何是MMM,姑且不管,改好後再來看
SQL> select sysdate from dual; 
SYSDATE
-----------
28-Jul-11 4:05:36 PM
然後再次執行,依然是同樣的錯,將NLS Options下的time選項改為空白,繼續執行
SQL> select sysdate from dual; 
SYSDATE
-----------
28-Jul-11
看到格式跟我的一致了,心想這下總該對了吧,繼續執行還是報錯,然後將語句更換成中文月份
INSERT INTO TABLESPACE_MONITOR VALUES ('192.168.1.139','ibss','27-7月 -11','TBS_IDX_B3',0,0,'0.00%','Permanent','OFFLINE');

結果就提示已插入1行,看來問題很明瞭,是PL/SQL Developer採用的nls_lang的問題,可是在那裡改呢?由於還要做檢查,只好先用sqlplus來插入語句了,結果sqlplus也是同樣的錯誤,於是開啟登錄檔將oracle的NLS_LANG給修改了一下
找到HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1下的NLS_LANG鍵值,(首先備份一下,修改登錄檔做備份是一個好習慣,不然出了什麼問題,後悔可就來不及了)原有的鍵值為“SIMPLIFIED CHINESE_CHINA.ZHS16GBK” 然後改為“AMERICAN_AMERICA.ZHS16GBK” 然後在用sqlplus登陸虛擬機器下的資料庫,這裡使用了簡單連線
sqlplus scott/tiger@192.168.56.101:1521/demo
然後執行插入語句就沒有問題了。
        日常的工作完成之後,再回過頭來解決PL/SQL Developer的問題,畢竟還是它用起來方便一些啊。繼續看PL/SQL Developer=>tool=>Preference=>Appearance裡面發現有一個language選項,但下拉框顯示的卻是除了none,並無其他選項。經過一番摸索總算找到了解決辦法,找到HKEY_CURRENT_USER\Software\Allround Automations\PL/SQL Developer\Preferences\ 然後新建一個String Value然後命名為language,然後輸入值“AMERICAN”然後重新開啟一個PL/SQL 執行剛開的語句,發現OK沒有再報錯了,換成 28-7月- 11的話就開始報錯了。 記錄一下,今天收穫不錯。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12216142/viewspace-703347/,如需轉載,請註明出處,否則將追究法律責任。

相關文章