IMP-00058: 遇到 ORACLE 錯誤 1461 和 ORA-01461錯誤
描述:把windows伺服器A的Oracle10g的使用者資料遷移到Linux伺服器B的Oracle10g中,主要用簡單的exp、imp命令匯入。
環境:windows中的Oracle資料庫版本和linus伺服器Oracle資料庫版本一樣 Oracle10.2.0.1.0
在windows伺服器A中匯出該資料時,沒有錯誤。
1、
>exp user/password file=d:\200909dump.dump log=d:\200909log.log
2、
在匯入伺服器B時出現錯誤。主要三個錯誤
2.1 如:
. . 正在匯入表 "CW_CONTRACT_INFO"
IMP-00019: 由於 ORACLE 錯誤 12899 而拒絕行
IMP-00003: 遇到 ORACLE 錯誤 12899
ORA-12899: 列 "RFPM"."CW_CONTRACT_INFO"."CON_NAME" 的值太大 (實際值: 105, 最大值: 100)
主要由於表中的實際資料超出範圍,直接更改伺服器A資料庫中的表結構即可。
2.2
IMP-00017: 由於 ORACLE 錯誤 959, 以下語句失敗:
"CREATE TABLE "CW_PROJECT_WEEKLY_PROJECT" ("WEEKLY_PRJ_ID" VARCHAR2(32) NOT "
"NULL ENABLE, "PRJ_ID" VARCHAR2(32), "PRJ_NAME" VARCHAR2(100), "WORK_COMPLET"
"E" VARCHAR2(4000), "NEXT_WEEK_WORK" VARCHAR2(4000), "PROBLEM" VARCHAR2(2000"
"), "START_DATE" DATE, "END_DATE" DATE, "USER_NAME" VARCHAR2(1000), "WORK_OF"
"FICE" VARCHAR2(100), "PERCENT" VARCHAR2(32), "CREATE_DATE" DATE, "MODIFY_DA"
"TE" DATE, "BSFLAG" VARCHAR2(10), "REMARK" VARCHAR2(255), "CREATOR_ID" VARCH"
"AR2(32), "STATUS" VARCHAR2(10), "WORK_COMPLETE_NEW" CLOB, "NEXT_WEEK_WORK_N"
"EW" CLOB, "PROBLEM_NEW" CLOB) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 25"
"5 STORAGE(INITIAL 786432 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)"
" TABLESPACE "RFPM" LOGGING NOCOMPRESS LOB ("WORK_COMPLETE_NEW") STORE AS ("
"TABLESPACE "RFPM" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LO"
"GGING STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFA"
"ULT)) LOB ("NEXT_WEEK_WORK_NEW") STORE AS (TABLESPACE "RFPM" ENABLE STORAG"
"E IN ROW CHUNK 8192 PCTVERSION 10 NOCACHE LOGGING STORAGE(INITIAL 65536 FR"
"EELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)) LOB ("PROBLEM_NEW") STORE"
" AS (TABLESPACE "RFPM" ENABLE STORAGE IN ROW CHUNK 8192 PCTVERSION 10 NOCA"
"CHE LOGGING STORAGE(INITIAL 65536 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POO"
"L DEFAULT))"
IMP-00003: 遇到 ORACLE 錯誤 959
ORA-00959: 表空間 'RFPM' 不存在
主要由於表中的LOB欄位需要存放在‘RFPM’表空間中,不能存放在預設空間。
可以把伺服器B中建立一個‘RFPM’表空間,並且使用者有寫的許可權。
2.3
. . 正在匯入表 "CW_PROJECT_WEEKLY_PROJECT"
IMP-00058: 遇到 ORACLE 錯誤 1461
ORA-01461: 僅能繫結要插入 LONG 列的 LONG 值
IMP-00028: 上一個表的部分匯入已回退: 回退 36 行
可能有以下幾種原因:
[1]插入到字串長度大於4000位元組。
[2]插入到表中的記錄的某個欄位資料的實際長度大於2000個位元組(如果是UTF-8,則是1333個位元組);或者是插入的記錄中有兩個或兩個以上長度大於2000位元組的字串。
[3]資料庫與客戶端的JDBC驅動不匹配。
[4]伺服器A和伺服器B字符集不同等等。
我這遇到的問題屬於第二種。檢視了CW_PROJECT_WEEKLY_PROJECT表中的欄位沒有long型別的。只有三個是CLOB型別的。
但這和CLOB型別沒有關係。
>select * from nls_database_parameters
伺服器A中的字符集為:NLS_CHARACTERSET:ZHS16GBK
伺服器B中的字符集為:NLS_CHARACTERSET:AL32UTF8
其中看到有兩個欄位為varchar2(4000),在伺服器A中和伺服器B中存放的漢字是不一樣的。
檢視了最大的中文個數:
select length(max(t.work_complete)),length(max(t.next_week_work)) from cw_project_weekly_project t
看到work_complete欄位有768個漢字,在伺服器A中存放1536個位元組,varchar2(4000)可以存放2000個漢字沒有問題。
但在伺服器B中的字符集為AL32UTF8,只能是1333個位元組,即不能超過666個漢字。
可以找出超過最大範圍的資料,然後進行修改小於666個漢字。匯出,再匯入即可。
或者:
如果這兩個欄位中的資料量不大,可以先匯出這兩個欄位為null的所有資料,然後再匯出不為null的資料。
如:
exp tables=(CW_PROJECT_WEEKLY_PROJECT) query='where work_complete is null and next_week_work is null' file=d:\20091209tab1.dump log=d:\20091209exptab.log
匯入上面的資料正常:
如:
imp tables=(CW_PROJECT_WEEKLY_PROJECT) file=d:\20091209tab1.dump log=d:\20091209imptab.log
可以用plsql 7.0版本以上工具,把不為空的資料匯出成指令碼,然後在匯入伺服器B資料庫中。不符合條件的資料自然就不能匯入資料庫了。
(注意:這個匯入的指令碼不能把LOB型別的資料匯入資料庫中)
如:
>select * from CW_PROJECT_WEEKLY_PROJECT where work_complete is null and next_week_work is null
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12778571/viewspace-622062/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- IMP-00058: 遇到 ORACLE 錯誤 1691Oracle
- 遇到 ORACLE 錯誤 6550Oracle
- Oracle 10.2.0.3的Ora-1461錯誤Oracle
- ORACLE 錯誤Oracle
- ORACLE 異常錯誤 錯誤號大全Oracle
- ORACLE匯入遇到ORACLE錯誤959解決方法Oracle
- Oracle 錯誤收集Oracle
- ORACLE錯誤大全Oracle
- mongodb和python互動遇到的錯誤MongoDBPython
- 開發中遇到的錯誤
- github上傳遇到的錯誤Github
- Promise基礎(消化錯誤和丟擲錯誤)Promise
- EF Oracle:錯誤 175Oracle
- oracle 常見錯誤Oracle
- oracle錯誤小結Oracle
- Oracle安裝錯誤Oracle
- Oracle ASM 配置錯誤OracleASM
- Oracle ORA 錯誤大全Oracle
- 安裝.NET Core遇到的錯誤
- JPA 開發中遇到的錯誤
- EXP-00056: 遇到 ORACLE 錯誤 31600- -Oracle
- 錯誤和異常 (一):錯誤基礎知識
- Oracle 不完全恢復遇到的ORA-600錯誤Oracle
- 解決EXP-00056: 遇到 ORACLE 錯誤 31600Oracle
- EXP-00056: 遇到 ORACLE 錯誤 19206(轉)Oracle
- 使用React Hooks時遇到的錯誤提示ReactHook
- Maven建立專案遇到導包錯誤:Maven
- aix 6.1 安裝gcc,遇到“BUILTIN”錯誤AIGCUI
- 使用flashback database 特性時遇到的錯誤Database
- oracle EBS啟動無錯誤,訪問網頁500錯誤Oracle網頁
- oracle 報大小寫錯誤Oracle
- Oracle nvarchar2錯誤Oracle
- Oracle錯誤號檢索Oracle
- ORACLE tsm 備份錯誤Oracle
- perl連線Oracle錯誤Oracle
- oracle的1788錯誤碼Oracle
- ORACLE 錯誤一覽表Oracle
- oracle錯誤一覽(轉)Oracle