Oracle 命令列imp時報值太大(ORA-12899)
不停的迴圈,提示欄位值太大
查看日誌
經由常規路徑由 EXPORT:V11.02.00 建立的匯出檔案
已經完成 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集中的匯入
匯入伺服器使用 AL32UTF8 字元集 (可能的字元集轉換)
解決辦法是:修改字元集
解決辦法:SQL>select * from V$NLS_PARAMETERSSQL>conn / as sysdbaSQL>shutdown immediateSQL>STARTUP MOUNTSQL>ALTER SYSTEM ENABLE RESTRICTED SESSION --單使用者 如果是確定沒有其他人在用的機器可以不用管SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0 --取消任務 如果是確定沒有其他人在用的機器可以不用管SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0 --取消queue monitor 如果是確定沒有其他人在用的機器可以不用管SQL>ALTER DATABASE OPENSQL>ALTER DATABASE CHARACTER SET ZHS16GBKSQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBKALTER SYSTEM DISABLE RESTRICTED SESSIONSQL>SHUTDOWN IMMEDIATESQL>STARTUP
當時測試確實沒有問題
但是後來取數發現了原來資料庫中的資料出現了亂碼現象。
後來找到一種方法,順利解決。
思路:先恢複成原來的資料庫字元集,然後匯出檔案,然後再改字元集,然後匯入,利用ORACLE 自身將資料集轉化。
恢複原來字元集AL32UTF8
shutdown immediate; startup mount; alter system enable restricted session; alter database open; alter database character set internal_use AL32UTF8; shutdown immediate; startup;
匯出資料
exp jxc/jxc123 file=jxc2.dmp owner=jxc
或者這樣匯出
create directory dpdata1 as 'd:\dump'; grant read,write on directory DPDATA1 to jxc;--按使用者導expdp jxc/jxc123@orcl schemas=jxc dumpfile=jxc2.dmp DIRECTORY=dpdata1
修改字元集ZHS16GBK
shutdown immediate; startup mount; alter system enable restricted session; alter database open; ALTER DATABASE CHARACTER SET internal_use ZHS16GBK; shutdown immediate; startup;
匯入資料
--先刪除使用者,重建使用者,後匯入drop user jxc cascade;CREATE USER "JXC" PROFILE "DEFAULT" IDENTIFIED BY "jxc123" DEFAULT TABLESPACE "JXC001" ACCOUNT UNLOCK;GRANT "CONNECT" TO "JXC";GRANT "DATAPUMP_EXP_FULL_DATABASE" TO "JXC";GRANT "DATAPUMP_IMP_FULL_DATABASE" TO "JXC";GRANT "DBA" TO "JXC";GRANT "RESOURCE" TO "JXC";imp jxc/jxc123 file=jxc2.dmp fromuser=jxc touser=jxc--或者impdp jxc/jxc123 DIRECTORY=dpdata1 DUMPFILE=jxc.dmp SCHEMAS=jxc
重新查詢,問題解決