本人在做項目的時候,在導入oracle數據時遇到oracle版本不一致的問題,現已解決,覺得方法實用,分享給大家。
工具/原料
oracle
cmd命令
問題描述
我本地安裝的Oracle11g,服務器上安裝的數據庫是Oracle10g,最開始直接用imp命令導入時會報錯,如下圖
經過分析,出現上述問題的原因是數據庫版本的問題,Oracle不支持高版本導入到低版本,解決方法如下兩種
方法一:修改dmp文件的版本號
用notepad++等文本編輯工具打開dmp文件,可以看到頭部信息
--TEXPORT:V11.02.00,即為源數據庫的版本號,將其修改為目的數據庫的版本號,如服務器上的為10.20.10。或者用DMP版本修改工具(網上搜一下),修改dmp文件的版本號。修改完了之後再用imp命令可導入。(此方法適用於表少且表結構簡單的情形,較複雜情況如含有二進制表的數據和表結構導入的時候會報錯,這些表和數據就丟失了)
方法二:expdp和impdp命令(推薦)
首先創建一個用於存放對象的文件,即導入\導出時的文件存放目錄,以便能夠直接找到導出的文件。默認也有directory(directory=DATA_PUMP_DIR,不用創建),一般在 安裝目錄\admin\orcl\dpdump下。
舉例:我創建一個在E盤根目錄下的oracle_backup文件夾下的目錄。
創建完目錄後,打開cmd,輸入“sqlplus system/[email protected]”(根據自己的數據庫情況輸入) 。接著,創建DIRECTORY,創建語句如下:
授權(授予要導入數據的用戶對該目錄(路徑)進行讀和寫的權限),還是在連接數據庫的狀態下輸入:
重進cmd,執行導出
在服務器數據庫中用同樣的方法建立directory,把上一步中導出的dmp文件放在該目錄,執行導入
注意:此種方法可保證導出數據庫的完整性,也可以將oracle11g中的空表導出!
注意事項
導出數據前一定要建立好目錄和授權