oracle導入數據庫報錯:IMP-00019: 由於 ORACLE 錯誤 12899 而拒絕行 IMP-00003: 遇到 ORACLE 錯誤 12899


主要是字符集 成 導入的Oracle服務器的字符集 對應不上.

以下方案為是修改服務器的字符集.    這樣會影響之前的Oracle其他數據庫的數據顯示(正式服務器慎用)

個人認為應該修改導出文件的字符集比較合理一些.  沒測試過.

情景重現:

從oracle 10g環境下exp出來的數據,imp到10g數據庫的時候就出現下面這個錯誤。

IMP-00019: 由於 ORACLE 錯誤 12899 而拒絕行

IMP-00003: 遇到 ORACLE 錯誤 12899
ORA-12899: 列 "JACKEYJ"."JK_REGISTER"."OPNAME" 的值太大 (實際值: 21, 最大值: 20)

列 1 523

可能的原因:操作系統類型不同導致的。


解決方法:

修改oracle 10g的字符集
Oracle

修改數據庫字符集為:ZHS16GBK

在oracle目錄下 打開應用程序開發--> SQL Plus,然后:

查看服務器端字符集SQL > select * from V$NLS_PARAMETERS
修改:$sqlplus /nolog
SQL>conn / as sysdba  (ps: 在cmd中可以直接粘貼)
若此時數據庫服務器已啟動,則先執行 SHUTDOWN IMMEDIATE 命令關閉數據庫服務器,
然后執行以下命令:
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 1  RA-12721: operation cannot execute when other sessions are active
1、若出現上面的錯誤,使用下面的辦法進行修改,使用INTERNAL_USE可以跳過超集的檢查:
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK;
ORA-12712: new character set must be a superset of old character set
RROR at line 1:
2、結果報錯,提示新字符集必須是老字符集的超集。
於是強制轉換
>ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

最后步驟:
>shutdown immediate;
>STARTUP;

 

引用: http://www.xuebuyuan.com/2070423.html


免責聲明!

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



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