oracle数据库IMP-00010错误解决
轉載自:http://www.linuxidc.com/Linux/2015-09/123014.htm
問題出現的場景
筆者源數據庫是11gR2,需要將一個演示數據schema導入到另一臺服務器上。由于時間比較久了,已經忘記目標數據庫的版本號。筆者想當然以為應該是11gR2的Oracle,于是采用Exp工具導出。
出于簡單習慣,筆者選擇在服務器上執行exp命令,這樣導出數據庫和客戶端均是11gR2。
錯誤具體信息
等到導入數據的時候,出現了問題。
執行語句:
D:\DDD>imp \"/ as sysdba\" file=DDD_TESTING_20150901_exp.dmp fromuser=ddd_testing touser=ddd_testing執行后的錯誤信息:
Import: Release 10.2.0.1.0 - Production on Wed Sep 2 22:36:31 2015Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsIMP-00010: not a valid export file, header failed verificationIMP-00000: Import terminated unsuccessfully錯誤分析
文件頭不能識別,一般來說這種問題有兩種可能:一種是文件出現壞塊,在從FTP下載或者拷貝復制的過程中出現問題。另一種是版本兼容問題。
如果是第一種問題,理論上是沒有其他辦法,只能重新導出或者下載dmp文件。如果是兼容版本問題,需要檢查一下目標數據庫和導入客戶端情況。
執行語句:
SQL> select * from v$version;打印信息:
BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for 32-bit Windows: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 – Production導入目標是10g,而且客戶端也是10gR2。這就出現了兼容性問題,低版本客戶端“被認為”不能解析理解高版本客戶端生成文件,所以才會報錯拒絕導入。顯示信息是文件頭驗證不通過。
解決方法
筆者這時候基本沒有別的選擇。只能是回去重新用低版本客戶端導出數據內容,或者選擇Data Pump進行version調整的處理。但是在網絡上,筆者找到了一種看似合理的處理方法。
Exp/Imp版本不兼容的現象,本質上是Oracle對于Dmp文件內容的限制。因為,Oracle擔心低版本的Imp程序,不能理解高版本Dmp文件里面的內容和生成對象,所以才會有限制。筆者Dmp包里面只有數據表和一些普通索引對象,“高級”對象一個沒有,這種限制其實沒有意義。
那么,只需要將文件頭稍做修改,讓10gR2低版本客戶端能夠“認可”Dmp文件也就好了。根據這個思路,從網絡上下載了notepad++編輯程序,直接打開Dmp文件。注意:這個過程其實有風險的,將近似二進制文件的Dmp以文本格式打開,要有一定心理準備。
打開文件后,可以看到文件頭部信息,明顯標注著Dmp文件版本11gR2內容。 
 
將其修改為10gR2適應編號V10.02.01,之后保存。 
 
保存后調用相同導入程序命令,導入正常開始。
總結
筆者的處理方法,其實是有很大風險和隱患的。放在平時測試環境中,一時選擇失誤的補救策略還是可以接受的。如果是正式環境,一定要根據規范進行操作,通過實現測試預判問題風險,設計解決方案,務必保證所有對象能夠順利導入。
另外,筆者這種方法其實是違背Oracle原則的,如果筆者dmp文件中存在一些新特性對象,或者版本差異很大,也不能保證導入操作的順利。
總結
以上是生活随笔為你收集整理的oracle数据库IMP-00010错误解决的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: oracle 数据导入 数据和备注(co
- 下一篇: mybatis中的查询缓存
