Oracle導入dmp文件:ORACLE 錯誤 12899 而拒絕行

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

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章