1.場景
導入dmp備份文件時出現以下錯誤:
IMP-00019: 由於 ORACLE 錯誤 12899 而拒絕行
IMP-00003: 遇到 ORACLE 錯誤 12899
ORA-12899: 列 "WMS"."CODE_DJ"."MC" 的值太大 (實際值: 10, 最大值: 8)
2.原因
Oracle服務端字符集與dmp備份文件字符集不一致,以dmp格式導出是爲ZHS16GBK編碼,Oracle服務端安裝時爲utf-8.
3.解決方案
修改Oracle數據庫字符集
3.1從SQL PLUS以sys用戶登錄Oracle
3.2查看字符集,兩種方式都可以
SQL > select * from V$NLS_PARAMETERS;
SQL > select userenv('language') from dual;
3.3一步步執行以下命令
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;
若出現如下錯誤:
ERROR at line 1RA-12721: operation cannot execute when other sessions are active
提示新字符集必須是老字符集的超集
則執行以下命令,使用INTERNAL_USE可以跳過超集的檢查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK
最後執行:
SQL>SHUTDOWN IMMEDIATE
SQL>STARTUP