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
查看服務器端字符集
修改:$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導入,就沒有問題了。