更改Oracle數據庫的編碼格式,解決導入時ORA-12899錯誤


imp導入數據到ORACLE遭遇ORA-12899錯誤

數據庫版本是Oracle 10G XE,從公司數據庫的企業版導入時遭遇ORA-12899錯誤。

錯誤信息:

IMP-00019: row rejected due to ORACLE error 12899  
IMP-00003: ORACLE error 12899 encountered  
ORA-12899: value too large for column "OLP"."ART"."CONTENT" (actual: 242, maximum: 200) 

初步斷定是字符集問題,中文在UTF-8里占3個字節,ZHS16GBK里占2個字節,而源dmp文件字符集是ZHS16GBK的庫到出來的,現在要導入到目標字符集為UFT-8的庫里。

修改oracle 10g的字符集

Oracle

修改數據庫字符集為:ZHS16GBK

查看服務器端字符集

SQL > select * from V$NLS_PARAMETERS  

修改:$sqlplus /nolog

 以下代碼需要在SQL plus中運行,無法在PLSQL中運行

SQL>conn / as sysdba  
SQL>SHUTDOWN IMMEDIATE  
SQL>STARTUP MOUNT  
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 ZHS16GBK ;  
ALTER DATABASE CHARACTER SET ZHS16GBK  
*ERROR at line 1:  
ORA-12712: new character set must be a superset of old character set  

報字符集不兼容,此時下INTERNAL_USE指令不對字符集超集進行檢查:

SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;  
SQL>SHUTDOWN IMMEDIATE  
SQL>STARTUP 

再次用imp導入,就沒有問題了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM