1. 程式人生 > >字串緩衝區太小?--Oracle也謊報軍情

字串緩衝區太小?--Oracle也謊報軍情

為了幾天後的系統測試,需要在虛擬機器安裝整個系統,資料庫使用了Oracle 10.2.0版本,但由於Oracle的軍情謊報,害我重灌了N回。

目前正在執行的資料庫伺服器是10.2.0.3.0版本的Oracle,當我DMP出一個數據副本並IMP到虛擬機器的資料庫中時,Oracle竟然無法讀取該檔案。仔細檢視後發現,虛擬機器的資料庫版本為10.1.0,遂將其解除安裝改換成Oracle 10.2.0。從此惡夢開始了。

IMP資料時,新版本的Oracle已經可以讀取DMP檔案,但在執行匯入作業時,老是執行失敗,並提示:

ORA-06502: PL/SQL: 數字或值錯誤 : 字串緩衝區太小 

PL/SQL 第18行錯誤

....

幾次都是這樣。

無奈之下只能求助Google,搜尋之後,發現了所謂的Oracle Bug之說。這正是我擔心的,因為我手頭只有10.2.0.1.0的安裝檔案。難道...沒有別的辦法,從網上死拖下來一個10.2.0.3.0的安裝補丁,安裝,經過N遍重裝修補之後(安裝補丁也不是那樣順利,錯誤N多,在此不細描述),現實又給我澆了盆冷水--還是同樣的錯誤。

看來,並不是所謂的BUG在搗鬼。

於是只能重裝回10.2.0.1.0(排除升級為10.2.0.3.0後帶來的其它問題)。而對於這一錯誤的解決方法(出自於網路資源)--修改緩衝區大小我也是找不著地方無從下手,看來,俺今天要加班了。

臨下班時,我在翻看匯入log時猛然間發現了一個可疑的地方。

XXX匯入錯誤,未找到表空間XXX

我迅速找到真實系統的表空間設定,果然發現該服務佔用了兩個表空間,而在虛擬機器系統中只有一個表空間定義,而在匯入的時候並沒有做對映。難道...死馬當活馬醫,三下五除二,做好了匯入表空間的對映。匯入...

漫長的2分鐘過去,OK!成功了,那個令人費解的“字串緩衝區太小 ”錯誤竟然沒出來。

當系統跑起來的時候,都下班一個小時了,不過今天算沒白加班,也替大家領教了一下Oracle的謊報技術。