ora-12899錯誤解決

xunmingxxx發表於2011-10-24

Imp中出現Ora-12899錯誤的解決方法:

操作方法:

從磁碟中匯入備份的資料檔案到oracle資料庫中,使用如下window匯入命令:

C: IMP CWA6/CWA6 file=D:beifen.dmp fromuser=CWA6 touser=CWA6

Ora-12899value too large for column

問題分析:

備份的資料檔案的源資料庫使用的字符集型別是ZHS16BGK

而目標資料庫(本機資料庫)使用的字符集型別是UTF-8

漢字字元在前者存放時需要佔用2個位元組,在後者存放時需要佔用3個位元組。

IMP的過程中,原先備份資料表的資料欄位複製到目標資料庫中存放,但資料儲存過程中,由於目標資料庫中字符集與源資料庫字元不同,導致存放進目標資料庫中的資料比存放在源資料庫中所需要的空間要大,故源資料表的欄位無法滿足現有的資料大小,所以才會出現(“xx.xx.xx欄位“(實際值:3,最大值:2))的情況。

解決方法:

更改資料庫的字符集型別。

sqlplus中更改的具體操作步驟如下:

SQL> shutdown immediate

資料庫已經關閉。

已經解除安裝資料庫。

ORACLE 例程已經關閉。

SQL> startup mount;

ORACLE 例程已經啟動。

Total System Global Area 612368384 bytes

Fixed Size 1250428 bytes

Variable Size 146803588 bytes

Database Buffers 457179136 bytes

Redo Buffers 7135232 bytes

資料庫裝載完畢。

SQL> alter system enable restricted session;

系統已更改。

SQL> alter system set job_queue_processes=0;

系統已更改。

SQL> alter system set aq_tm_processes=0;

系統已更改。

SQL> alter database open;

資料庫已更改。

SQL> alter database character set internal_use ZHS16GBK;

資料庫已更改。

SQL> shutdown immedate;

SP2-0717: 非法的 SHUTDOWN 選項

SQL> shutdown immediate;

資料庫已經關閉。

已經解除安裝資料庫。

ORACLE 例程已經關閉。

SQL> startup

ORACLE 例程已經啟動。

Total System Global Area 612368384 bytes

Fixed Size 1250428 bytes

Variable Size 146803588 bytes

Database Buffers 457179136 bytes

Redo Buffers 7135232 bytes

資料庫裝載完畢。

資料庫已經開啟。

測試:

CMD命令視窗執行IMP命令:

C: IMP CWA6/CWA6 file=D:beifen.dmp fromuser=CWA6 touser=CWA6

系統將不會再出現ora-12899的錯誤。

[@more@]

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

相關文章