【故障處理】IMP-00010錯誤 12C的dmp文件導入11G
各位技術愛好者,看完本文後,你可以掌握如下的技能,也可以學到一些其它你所不知道的知識,~O(∩_∩)O~:
① 12C的dmp文件導入11g數據庫
② IMP-00010: not a valid export file, header failed verification錯誤解決一例
③ 軟件PilotEdit Lite的使用
④ 從dmp文件頭獲取導出的版本、時間、用戶
⑤ 查看dmp文件的字符集
Tips:
① 本文在itpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和微信公眾號(xiaomaimiaolhr)上有同步更新。
② 文章中用到的所有代碼、相關軟件、相關資料及本文的pdf版本都請前往小麥苗的雲盤下載,小麥苗的雲盤地址見:http://blog.itpub.net/26736162/viewspace-1624453/。
③ 若網頁文章代碼格式有錯亂,請下載pdf格式的文檔來閱讀。
④ 在本篇BLOG中,代碼輸出部分一般放在一行一列的表格中。其中,需要特別關注的地方我都用灰色背景和粉紅色字體來表示,比如在下邊的例子中,thread 1的最大歸檔日志號為33,thread 2的最大歸檔日志號為43是需要特別關注的地方;而命令一般使用黃色背景和紅色字體標注;對代碼或代碼輸出部分的注釋一般采用藍色字體表示。
List of Archived Logs in backup set 11
Thrd Seq Low SCN Low Time Next SCN Next Time
---- ------- ---------- ------------------- ---------- ---------
1 32 1621589 2015-05-29 11:09:52 1625242 2015-05-29 11:15:48
1 33 1625242 2015-05-29 11:15:48 1625293 2015-05-29 11:15:58
2 42 1613951 2015-05-29 10:41:18 1625245 2015-05-29 11:15:49
2 43 1625245 2015-05-29 11:15:49 1625253 2015-05-29 11:15:53
[ZHLHRDB1:root]:/>lsvg -o
T_XLHRD_APP1_vg
rootvg
[ZHLHRDB1:root]:/>
00:27:22 SQL> alter tablespace idxtbs read write;
====》2097152*512/1024/1024/1024=1G
本文如有錯誤或不完善的地方請大家多多指正,ITPUB留言或QQ皆可,您的批評指正是我寫作的最大動力。
今天客戶給了一個ash的dmp文件,需要分析一下,結果導入數據庫的時候發生了IMP-00010: not a valid export file, header failed verification的錯誤,我用軟件PilotEdit Lite打開的時候發現原來導出文件使用的是12C的客戶端,而我手頭沒有12c的客戶端,於是將文件頭修改為TEXPORT:V11.02.00,然後即可順利導入了數據庫,下面給出詳細過程。
D:\Users\xiaomaimiao>imp 'sys/[email protected]/oratest as sysdba' full=y file="E:\ash_20161108.dmp\ash_20161108.dmp"
Import: Release 11.2.0.1.0 - Production on Wed Nov 9 11:26:05 2016
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
IMP-00010: not a valid export file, header failed verification
IMP-00000: Import terminated unsuccessfully
使用軟件PilotEdit Lite打開(此軟件可以打開上G的文件):
修改為如下的形式:
重新導入數據庫:
D:\Users\xiaomaimiao>imp 'sys/[email protected]/oratest as sysdba' full=y file="E:\ash_20161108.dmp\ash_20161108_01.dmp"
Import: Release 11.2.0.1.0 - Production on Wed Nov 9 11:28:24 2016
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Export file created by EXPORT:V11.02.00 via conventional path
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
export client uses US7ASCII character set (possible charset conversion)
. importing SYS's objects into SYS
. importing SYS's objects into SYS
. . importing table "ASH_20161108" 29394 rows imported
Import terminated successfully without warnings.
其實之前在文章http://blog.itpub.net/26736162/viewspace-2122942/中已經介紹過這部分的內容,今天把這部分內容重新拷貝過來,因為實在太有用了。
[ZFZHLHRDB1:oracle]:/tmp>strings exp_ddl_lhr_02.dmp | head -10
TEXPORT:V11.02.00 ====》版本號
DSYS ====》使用SYS用戶導出
RTABLES ====》基於表模式導出,RUSERS表示基於用戶模式,RENTIRE表示基於全庫模式
4096
Tue Aug 2 16:8:8 2016/tmp/exp_ddl_lhr_02.dmp====》生成的時間和文件地址
#C#G
#C#G
+00:00
BYTE
UNUSED
[ZFZHLHRDB1:oracle]:/tmp>strings exp_ddl_lhr_02.dmp | grep "CREATE TABLE"|awk '{print $3}'|sed 's/"//g'
EMP ====》說明exp_ddl_lhr_02.dmp中只有一個emp表
[ZFZHLHRDB1:oracle]:/tmp>strings exp_ddl_lhr_03.dmp | grep "CREATE TABLE"|awk '{print $3}'|sed 's/"//g'|awk '{ if (FNR==1) print "tables="$1 ; else print ","$1 }'
tables=DEF$_AQCALL
,DEF$_AQERROR
,DEF$_CALLDEST
,DEF$_DEFAULTDEST
,DEF$_DESTINATION
,DEF$_ERROR
,DEF$_LOB
,DEF$_ORIGIN
,DEF$_PROPAGATOR
,DEF$_PUSHED_TRANSACTIONS
,MVIEW$_ADV_INDEX
[ZFZHLHRDB1:oracle]:/tmp>
其實這個可以使用UE或editplus文本編輯器的列模式實現也很快。
[ZFZHLHRDB1:oracle]:/oracle>ORACLE_SID=lhrdb
[ZFZHLHRDB1:oracle]:/oracle>exp \'/ AS SYSDBA\' tables=scott.emp file=/tmp/exp_ddl_lhr_03.dmp log=/tmp/exp_table.log buffer=41943040 rows=n compress=n
Export: Release 11.2.0.4.0 - Production on Tue Oct 25 17:14:49 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Export done in AL32UTF8 character set and AL16UTF16 NCHAR character set<<<<--當前環境下NLS_LANG的設置
server uses ZHS16GBK character set (possible charset conversion)<<<<--當前數據庫的字符集
Note: table data (rows) will not be exported
About to export specified tables via Conventional Path ...
Current user changed to SCOTT
. . exporting table EMP
EXP-00091: Exporting questionable statistics.
EXP-00091: Exporting questionable statistics.
Export terminated successfully with warnings.
[ZFZHLHRDB1:oracle]:/oracle>ORACLE_SID=mydb
[ZFZHLHRDB1:oracle]:/oracle>export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
[ZFZHLHRDB1:oracle]:/oracle>imp \'/ AS SYSDBA\' tables=xxx.xx file=/tmp/exp_ddl_lhr_03.dmp
Import: Release 11.2.0.4.0 - Production on Tue Oct 25 17:21:02 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Tes
Export file created by EXPORT:V11.02.00 via conventional path
import done in ZHS16GBK character set and AL16UTF16 NCHAR character set<<<<--當前環境的NLS_LANG
import server uses WE8ISO8859P1 character set (possible charset conversion)<<<<--當前數據庫的字符集
export client uses AL32UTF8 character set (possible charset conversion)<<<<--當前dmp文件的字符集
IMP-00029: cannot qualify table name by owner (xxx.xx), use FROMUSER parameter
IMP-00000: Import terminated unsuccessfully
用Oracle的exp工具導出的dmp文件包含了字符集的信息,dmp文件的第2和第3個字節記錄了dmp文件的字符集的信息。若dmp文件比較小,比如只有幾M或幾十M,可以用UltraEdit或Editplus以16進制的方式打開,查看第2和第3個字節的內容。
將剛導出的文件/tmp/exp_ddl_lhr_02.dmp下載到Windows環境下,用UE或editplus打開。
可以看到第2第3個字節的內容是0354,用如下的SQL語句可以查出它對應的字符集:
SYS@lhrdb> SELECT NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX')) FROM DUAL;
NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX'
----------------------------------------
ZHS16GBK
如果dmp文件很大,比如有2G以上(這也是最常見的情況),用文本編輯器打開很慢或者完全打不開,可以用以下命令(在unix主機上):
cat /tmp/exp_ddl_lhr_02.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
然後用上述SQL也可以得到它對應的字符集。
[ZFZHLHRDB1:oracle]:/oracle>cat /tmp/exp_ddl_lhr_02.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
0354
About Me
...............................................................................................................................
● 本文作者:小麥苗,只專注於數據庫的技術,更注重技術的運用
● 本文在itpub(http://blog.itpub.net/26736162)、博客園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/viewspace-2128197/
● 本文博客園地址:http://www.cnblogs.com/lhrbest/p/6048307.html
● 本文pdf版及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● QQ群:230161599 微信群:私聊
● 聯系我請加QQ好友(642808185),注明添加緣由
● 於 2016-11-09 19:00 ~ 2016-11-09 22:00 在中行完成
● 文章內容來源於小麥苗的學習筆記,部分整理自網絡,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
...............................................................................................................................
手機長按下圖識別二維碼或微信客戶端掃描下邊的二維碼來關注小麥苗的微信公眾號:xiaomaimiaolhr,免費學習最實用的數據庫技術。